如何保护Python代码?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (465)

我正在用Python开发一个软件,它将分发给我雇主的客户。我的雇主想用一个时间限制的许可文件来限制软件的使用。

如果我们分发.py文件,甚至.pyc文件,那么很容易(反编译并)删除检查许可文件的代码。

另一个方面是,我的雇主不希望我们的客户阅读代码,担心代码可能被偷,或者至少是“新颖的想法”。

有什么好办法处理这个问题吗?

提问于
用户回答回答于

(A)将代码的关键部分编写为C或C+库,然后使用SIP或swig将C/C+API公开给Python命名空间。

(B)使用cpython而不是Python

(C)在(A)和(B)中,应该可以将库作为带有Python接口的许可二进制文件分发。

用户回答回答于

“有什么好办法来解决这个问题吗?”不,没有任何东西可以防止逆向工程。就连dvd机上的固件都是逆向工程的。AACS加密密钥暴露了。尽管DMCA把它定为刑事犯罪。

由于没有任何技术方法可以阻止客户阅读您的代码,所以必须应用普通的商业方法。

  1. 许可、合同、条款和条件。即使当人们可以阅读代码时,这仍然有效。请注意,你的一些基于Python的组件可能要求你在使用这些组件销售软件之前支付费用。此外,一些开源许可证禁止你隐藏该组件的来源或来源。
  2. 提供很大的价值。如果你的产品如此好-以难以拒绝的价格-就不会浪费时间和金钱进行逆向工程。逆向工程是昂贵的。让你的产品稍微便宜一些。
  3. 提供升级和增强功能,使任何反向工程成为一个坏主意。当下一个版本破坏了反向工程时,就没有意义了。这可以被带到荒谬的极端,但你应该提供新的特性,使下一个版本比反向工程更有价值。
  4. 提供定制的价格如此有吸引力,以至于他们更愿意付钱给你,构建并支持增强功能。
  5. 使用一个过期的许可证密钥。这是残酷的,会给你一个坏名声,但它肯定会使你的软件停止工作。
  6. 提供它作为一个Web服务。SaaS不涉及下载给客户。

扫码关注云+社区

领取腾讯云代金券