Python应用程序的简单许可保护

15
虽然有很多类似的问题,但请容许我提出我的不同看法...
我有一个使用py2exe、py2app和Linux源码分发的5美元Python应用程序。该应用程序具有一年的许可证,因此人们需要在一年后升级到新版本。我想添加一些简单的许可证保护措施来强制执行一年限制。由于这个应用只售5美元,即使它很容易被规避,我也不在意。只要有些东西就能鼓励很多用户在一年后支付5美元升级而不是忽略许可证。
注意:
  • 我希望源代码易于阅读,因此不需要混淆
  • 我不想要编译代码或SaaS
  • 如果真的很简单,我会考虑某种许可证密钥系统,但不想要过于复杂的东西
我的第一个想法是通过记录安装日期(例如,使用wxConfig)并在一年后禁用软件,并显示一条礼貌的消息来实现。
有没有更好的解决方案呢?
1个回答

5
为什么使用比较日期的if语句不能很容易地解决这个问题呢?
最好的方法可能是将数据包含到您的软件中,这些数据确实需要保持最新才能对最终用户有用,例如TurboTax中的税表。当然,该业务策略的可用性取决于您的应用程序和市场。
您说代码是源可读的。你还能做什么?你可以有很多这样的if语句...但是grep或perl或另一个python脚本也可以快速找到它们并迅速修复它们。如果您的5美元产品有市场,那么一个恼怒的客户可能会将日期禁用脚本分发给他的朋友或在网络上发布。
这就像行李锁一样。只对诚实的人有效...但也许这已经足够了。
您可以在源代码中关键的if语句旁边放置DMCA通知。if语句是防止在许可日期之后使用的措施。请咨询一位好的律师。您的里程可能会有所不同。
维基百科在“反规避”下有关于DMCA的内容:
访问控制的规避 DMCA的第103条(17 U.S.C第1201(a)(1)节)规定:任何人不得规避有效控制访问受本法保护的作品的技术措施。该法案在第1201(a)(3)节中定义了其含义:(3)本次使用中所述-
(A)“规避技术措施”是指解密加密的作品,或以其他方式绕过、删除、停用或损坏技术措施,而未经版权所有者的授权;和
(B)如果有某种“有效控制对作品的访问的技术措施”,则违规规避该措施是非法的。但是,第1201节对此规则创建了几个例外,并授权国会图书馆创建其他例外。
如果您将日期放在由您的公钥签名的GPG签名字符串中...那么我认为您可以声称这个过期信息字符串...具有版权所有者的权限。您还可以检查是否针对公钥进行了篡改,但这并不明显,因为规避是非法的...
注意:自由软件先驱理查德·斯托曼认为,竞争往往会消除软件中的反功能,例如付费墙,烦人的提醒等。

2
谷歌搜索“dmca effective measure”并阅读前两个链接……一些律师显然认为几乎任何东西都可以被视为防止访问受版权保护作品的有效措施。这似乎使得撤销日期检查IF语句或出售修复脚本都是非法的。 - Paul
一个“if”语句是一种解决方案。我很想听听其他可能性或者关于如何使用“if”来做到这一点的详细信息。例如,安装日期应该在哪里和如何存储,是否需要安装程序或只需在应用程序内部完成等等。 - new name
你可以在一个单独的模块中定义一个名为check_license_expired()的函数,并将其导入到其他模块中。该模块可以读取一个包含字符串的文件。该文件可以是一个官方外观的纯ASCII格式的LICENSE.TXT文件,并包含ASCII格式的GPG签名。我建议采用模块化方法,以便您可以在其他项目中重复使用它... - Paul
3
如果您担心不诚实的人会将字符串“Jun 10 2012”更改为“Jun 10 2013”,请使用自1970年1月1日以来的秒数的UNIX标准格式。有一个Python函数可以返回此数字以进行轻松检查...大多数人不知道这个数字,只会尝试更改明文日期。请在LICENSE.TXT中的其他数字混合或类似困惑的gpg签名附近包含它。 - Paul

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接