Python 应用程序的简单许可保护
虽然有很多这样的问题,但请耐心等待,因为我认为我的问题有所不同......
我有一个 5 美元的 Python 应用程序,我使用 py2exe、py2app 和 Linux 源代码分发它。该应用程序有一年的许可证,因此人们需要在一年后升级到新版本。我想添加某种简单的许可证保护来强制执行一年的限制。由于该应用程序只需 5 美元,我不在乎它是否容易被绕过。仅仅拥有一些东西就会鼓励许多用户在一年后支付 5 美元进行升级,而不是忽略许可证。
请注意:
- 我希望源代码易于阅读,因此不会混淆
- 我不想编译代码或 SaaS
- 我会考虑某种许可证密钥系统,如果它真的很简单,但不希望任何复杂的东西
我的第一个想法是简单地记录安装日期(例如,使用 wxConfig)并在一年后禁用该软件,并礼貌地提示请升级。
对此有更好的解决方案吗?
Although there are quite a few questions like this, please bear with me as I think mine is different...
I have a $5 Python app that I distribute using py2exe, py2app, and source for Linux. The app has a one-year license so that people need to upgrade to a newer version after one year. I would like to add some kind of simple license protection to enforce the one-year limit. Since the app is only $5, I don't care if it is easily circumventable. Just having something will encourage many users to pay $5 to upgrade after a year as opposed to ignoring the license.
Note that:
- I want the source to be easily readable so no obfuscation
- I don't want to have compiled code or SaaS
- I would consider some kind of license key system if it was really simple but don't want anything complicated
My first thought is to simply record the install date (e.g., using wxConfig) and disabling the software after one year with a polite message to please upgrade.
Are there any better solutions to this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
为什么比较日期的 if 语句不能简单地为您解决这个问题?
做到这一点的最佳方法可能是将数据包含到您的软件中,这些数据确实需要保持最新才能对最终用户有用,例如 TurboTax 中的税表。当然,该业务策略的可用性取决于您的应用程序和市场。
您已经说过代码是源代码可读的。你还能做什么?您可以有很多这样的 if 语句...但是 grep 或 perl 或其他 python 脚本也可以快速找到所有这些语句并很快修复它们以使其重新工作。如果您的 5 美元产品有市场,恼怒的客户可能会将日期禁用脚本分发给他的好友或通过网络分发。
这就像行李挂锁。只适用于诚实的人……但也许这已经足够好了。
您可以在源代码中的关键 if 语句旁边放置 DMCA 通知。 if 语句是一种防止在许可日期之后使用的措施。请教好律师。您的里程可能会有所不同。
维基百科在“反规避”下有关于 DMCA 的内容:
如果您的 GPG 签名字符串中包含使用您的公钥签名的日期...那么恕我直言,您可以声称该过期信息字符串...具有版权所有者的授权。您还可以检查公钥是否被篡改,但显然您必须这样做,因为规避是非法的...
注意:自由软件先驱理查德·斯托曼(Richard Stallman)有一个理论,即竞争往往会消除软件的反功能,如付费墙、烦人的提醒等。
Why doesn't an if statement comparing the date not trivially solve this for you?
The best way to do this might be to include data into your software that really does need to be kept up to date to be useful to the end user, like the tax forms in TurboTax. Of course the availability of that business strategy depends on your application and market.
You have said the code is source readable. What else could you really do? You can have lots of these if statments... but grep or perl or another python script can also quickly find them all and fix it back to work again quite quickly. If you have a market for your $5 product an annoyed customer might distribute the date disabling script to his buddies, or over the web.
This is like a luggage padlock. Only works on honest people... but perhaps that is good enough.
You could put a DMCA notice next to the critical if statement in the source code. An if statement is a measure to prevent use after the license date. Ask a good lawyer. Your mileage may vary.
Wikipedia has this on the DMCA under "Anti-circumvention":
If you had the date within a GPG signed string signed with your public key... then IMHO you could claim that this expiration information string... had the authority of the copyright owner. You could also check for tampering against the public key, but it is not obvious that you have to do so, since it is illegal to circumvent...
Note: Richard Stallman, the free software pioneer, had a theory that competition tends to eliminate anti-features from software like paywalls, annoying reminders, etc.