我如何保护Python代码?

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

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

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

有没有解决这个问题的好方法? 最好采用现成的解决方案。

该软件将在Linux系统上运行(所以我不认为py2exe会做到这一点)。


Python是一种字节码编译的解释型语言,非常难以锁定。 即使您使用像py2exe这样的exe-packager,可执行文件的布局也是众所周知的,并且Python字节码也很好理解。

通常在这种情况下,您必须进行权衡。 保护代码真的有多重要? 那里是否有真正的秘密(比如银行转账的对称加密的关键),还是你只是偏执狂? 选择能让你最快速地开发出最佳产品的语言,并且对你的新颖想法的价值抱有现实感。

如果您确定您确实需要安全地强制执行许可证检查,请将其作为小型C扩展插件进行编写,以便许可证检查代码可以非常难(但并非不可能)以进行反向工程,并将大部分代码保留在Python中。


“有没有解决这个问题的好方法?” 没有。没有任何东西可以防止逆向工程。 甚至DVD机器上的固件也被反向设计并暴露了AACS加密密钥。 尽管数字千年版权法案将这视为刑事犯罪,

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

  • 许可证。 合同。 条款和条件。 即使人们可以阅读代码,这仍然有效。 请注意,在使用这些组件销售软件之前,您的一些基于Python的组件可能需要您付费。 此外,一些开源许可证禁止您隐藏该组件的来源或来源。

  • 提供重要价值。 如果你的东西非常好 - 以难以拒绝的价格 - 没有任何浪费时间和金钱来逆向工程的动机。 逆向工程很昂贵。 让你的产品稍微便宜一些。

  • 提供升级和增强功能,使任何逆向工程成为一个糟糕的主意。 当下一个版本打破逆向工程时,没有意义。 这可以进行到荒谬的极端,但您应该提供新功能,使下一版本比逆向工程更有价值。

  • 以非常吸引人的价格提供定制服务,以致他们宁愿为您付费制作并支持增强功能。

  • 使用过期的许可证密钥。 这是残酷的,会给你一个不好的名声,但它肯定会让你的软件停止工作。

  • 将其作为网络服务提供。 SaaS不涉及向客户下载。


  • Python不是你需要的工具

    你必须使用正确的工具来做正确的事情,而Python的设计不是被混淆。 恰恰相反; 一切都是开放的或易于在Python中显示或修改,因为这是语言的哲学。

    如果你想要看不到的东西,寻找另一种工具。 这不是一件坏事,重要的是几种不同的工具存在于不同的用途。

    混淆真的很难

    即使编译的程序也可以进行反向设计,所以不要认为您可以完全保护任何代码。 您可以分析混淆PHP,破解闪存加密密钥等。每次都会破解较新版本的Windows。

    有法律要求是一个好方法

    你无法防止某人滥用你的代码,但你可以很容易地发现是否有人这样做。 因此,这只是一个偶然的法律问题。

    代码保护被高估

    现在,商业模式倾向于销售服务而不是产品。 你不能复制服务,盗版或盗取它。 也许是时候考虑顺应潮流了......

    链接地址: http://www.djcxy.com/p/81875.html

    上一篇: How do I protect Python code?

    下一篇: Secure a DLL file with a license file