我想为我的客户创建一个程序的试用版。我想给他/她一些时间来测试这个程序(在这种情况下是7天)。
我在应用程序中有这个命令(在*.py文件中):
if os.path.isfile('some_chars.txt') or datetime.now()<datetime.strptime('30-8-2015','%d-%m-%Y'):
# DO WHAT application HAS TO DO
else:
print 'TRIAL EXPIRED'
quit()
我很好奇这种方法是否足以满足普通客户,或者我是否必须改变它。问题是,应用程序需要找到一个文件名为'some_char。txt'的文件。如果文件被找到,应用程序就会正常工作,如果没有,它会返回一个文本"试用版过期"。
所以主要的问题是——对于普通客户来说足够了吗?它可以在某个地方找到,或者它被编译成机器代码,所以他必须反汇编它?
编辑:我忘了提到非常重要的事情,我使用py2exe制作一个可执行文件(主)与不必要的文件和文件夹。
当然,这与你所瞄准的目标(人群)有关:在某些情况下,安全是一种冒犯(涉及大量金钱,所以不是我们的情况);
举个例子:
-
有一个程序从文件(注册表,…)中读取普通数据;例如:日期(程序转换日期做比较,并根据试用期关闭或让用户继续)
-
拥有上一步的所有内容,但数据不是纯文本,它是加密的(例如:1被添加到数据中的每个字符中,因此它不是立即可读)
-
使用一些知名的加密算法(将使用户无法读取数据)
但是,无论你选择什么方法,它都只是时间问题直到它被打破。
一种"难以击败"的方式是有一个现有的服务器,客户端可以连接并"秘密交谈"(我说的是一个ssl连接),即使是在试用期间。
"隐藏明显的信息"(交付"编译"的.py
脚本)不再是方式(最常见的Google搜索将指向Python"反编译器")
Python是解释的,所以他们所要做的就是查看源代码以查看时间限制部分。
有一些将python脚本转换为可执行文件的选项。我会尝试这样做,不使用任何外部文件来设置日期,将其保留在脚本中。