编辑:有人能解释一下为什么这是“离题”吗?我认为这是很清楚地遵循了常见问题的指引。我遗漏了什么吗?
我已经在PyQt中创建了一个windows桌面应用程序(python2.7,PyQt 4.9.5),我即将发布该软件以供销售。是时候为基于许可证/序列号的软件激活添加某种系统了。该软件是一种商业产品,零售价约为250美元。
我一直在考虑使用Fastspring,他们提供与以下内容的集成:
提供这种功能的好选择是什么?我遇到的一些事情是,它们似乎都没有提供python,所以我必须弄清楚如何将它们与我的python代码集成起来。我从来没有这样做过,因此与Python的轻松集成将是一个强大的因素,成本也是如此。我不觉得有强烈的需要阻止任何人盗版我的软件,我只是想让企业诚实,以便他们购买正确的数目的座位。最后一件要考虑的事情是,在未来,我可能想让它跨平台,理想情况下,我不会把自己锁在窗户上。
谢谢你的帮助。
发布于 2013-01-19 23:50:09
有一点要注意的是,反编译和反向工程Python字节码并移除您对其的任何保护相对容易,因此通常不值得花费太多的精力和时间来实现防破解保护。你只想把足够的钱放在让人诚实的地方。
如果您关心的是企业购买正确数量的座位,一个基本的保护机制是使用公钥机制在您的许可证服务器上使用私钥对消息进行数字签名。该消息只是一个随机字符串和一些唯一的标识信息,这些信息限制了许可密钥对其有效的机器(例如MAC地址等),如果您想要将密钥过期,则可能是一个时间戳。然后,将此消息和签名编码到您的程序中的一个字符串中,该字符串通过验证签名是否匹配消息和消息与机器匹配来验证许可密钥。
如果您只关心用户有一个密钥(而不是他们对不同的机器有不同的密钥),那么有一些更简单的方案;您只需对消息使用一个完全随机的字符串即可。
只要用户不逆向工程您的代码,此方案是安全的。它可以绕过反向工程,在您的程序中使用自己的公钥公钥。还可以通过篡改用于识别计算机的信息(例如MAC地址)来绕过这些信息;篡改这些信息可能允许多个安装使用相同的密钥。
https://stackoverflow.com/questions/14388482
复制相似问题