Python代码的保护措施
2023-12-22 11:26:29
前言
我正在用Python开发一个软件,该软件将分发给我雇主的客户。我的雇主想用有时间限制的许可文件来限制软件的使用。
如果我们分发.py文件,甚至.pyc文件,将很容易(反编译并)删除检查许可证文件的代码。
另一个方面是,我的雇主不希望我们的客户阅读代码,担心代码可能被窃取,或者至少是产生“新颖的想法”。
有什么好方法可以解决这个问题吗?
广告:ZehangZhuStudio招募合作者
我们是一个开源组织,在GitHub上拥有自己的组织和众多项目。但是我们只有不到10个合作者,我们需要更多人来一起编写代码。我们团结合作、平等对待、友善待人,我们时刻欢迎你的加入。
详情请咨询:zehangzhustudio@163.com
保护措施
基础且较为常见的保护措施
- 使用许可证、合同或条款和条件。即使人们可以阅读代码,这仍然有效。请注意,一些基于Python的组件可能要求您在销售使用这些组件的软件之前支付费用。此外,一些开源许可证禁止您隐藏该组件的来源。
- 提供显著价值。如果你的东西很好——价格很难拒绝——就没有动力浪费时间和金钱进行逆向工程。逆向工程成本高昂。让你的产品稍微便宜一点。
- 提供升级和增强功能,使任何逆向工程都成为一个坏主意。当下一个版本破坏了他们的逆向工程时,就没有意义了。这可能会达到荒谬的极端,但你应该提供新的功能,使下一个版本比逆向工程更有价值。
- 以极具吸引力的价格提供定制服务,他们宁愿付钱给你来构建和支持增强功能。
- 使用过期的许可证密钥。这很残忍,会给你带来坏名声,但它肯定会让你的软件停止工作。
- 将其作为web服务提供。因为SaaS不涉及向客户下载。
高级的保护措施
Python作为一种字节码编译的解释语言,很难锁定。即使您使用像py2exe这样的exe打包程序,可执行文件的布局也是众所周知的,并且Python字节码也很容易理解。
通常在这种情况下,你必须做出权衡。保护代码到底有多重要?里面有真正的秘密吗(比如银行转账对称加密的密钥),还是你只是偏执?选择能让你最快开发出最好产品的语言,并现实地看待你的新想法有多有价值。
- 为需要保护的地方编写C语言拓展,这样可以在一定程度上增加逆向工程的成本(但并非不可能)。
- 使用Cython、Nuitka、Shed-Skin或类似的工具将python编译为C代码,然后将您的应用程序分发为python二进制库(pyd)。
这样,就不会有Python(字节)代码了,您已经从常规代码中进行了合理数量的模糊处理。 - 使用
pyminifier
.它可以最小化、模糊和压缩Python代码。对于随意的逆向工程来说,示例代码看起来相当糟糕。可以较好得保护代码。
-使用Pyminifier了的代码示例:
#!/usr/bin/env python3
ﺭ异𞸐𐤔??ﺁ?𝕌𨿩𞸇?𐬑𥰫嬭?𢽁𐡆𧪮???𢤴?????ﺶ𐐤??𐰷𢡶𧐎𐭈𞸏𢢘𦘼?𩏃𦽨𞺎𠛘𐠲?????=ImportError
ﺭ异𞸐𐤔??ﺁ?𝕌𨿩𞸇?𐬑𥰫嬭?𢽁𐡆𧪮???𢤴?????ﺶ𐐤??𐰷𢡶𧐎𐭈𞸏𢢘𦘼?𩏃𦽨𞺎𠛘𐠲????燱=print
ﺭ异𞸐𐤔??ﺁ?𝕌𨿩𞸇?𐬑𥰫嬭?𢽁𐡆𧪮???𢤴?????ﺶ𐐤??𐰷𢡶𧐎𐭈𞸏𢢘𦘼?𩏃𦽨𞺎𠛘𐠲????巡=False
ﺭ异𞸐𐤔??ﺁ?𝕌𨿩𞸇?𐬑𥰫嬭?𢽁𐡆𧪮???𢤴?????ﺶ𐐤??𐰷𢡶𧐎𐭈𞸏𢢘𦘼?𩏃𦽨𞺎𠛘𐠲????澨=object
try:
import demiurgic
except ﺭ异𞸐𐤔??ﺁ?𝕌𨿩𞸇?𐬑𥰫嬭?𢽁𐡆𧪮???𢤴?????ﺶ𐐤??𐰷𢡶𧐎𐭈𞸏𢢘𦘼?𩏃𦽨𞺎𠛘𐠲?????:
ﺭ异𞸐𐤔??ﺁ?𝕌𨿩𞸇?𐬑𥰫嬭?𢽁𐡆𧪮???𢤴?????ﺶ𐐤??𐰷𢡶𧐎𐭈𞸏𢢘𦘼?𩏃𦽨𞺎𠛘𐠲????燱("Warning: You're not demiurgic. Actually, I think that's normal.")
try:
import mystificate
except ﺭ异𞸐𐤔??ﺁ?𝕌𨿩𞸇?𐬑𥰫嬭?𢽁𐡆𧪮???𢤴?????ﺶ𐐤??𐰷𢡶𧐎𐭈𞸏𢢘𦘼?𩏃𦽨𞺎𠛘𐠲?????:
ﺭ异𞸐𐤔??ﺁ?𝕌𨿩𞸇?𐬑𥰫嬭?𢽁𐡆𧪮???𢤴?????ﺶ𐐤??𐰷𢡶𧐎𐭈𞸏𢢘𦘼?𩏃𦽨𞺎𠛘𐠲????燱("Warning: Dark voodoo may be unreliable.")
ﺭ异𞸐𐤔??ﺁ?𝕌𨿩𞸇?𐬑𥰫嬭?𢽁𐡆𧪮???𢤴?????ﺶ𐐤??𐰷𢡶𧐎𐭈𞸏𢢘𦘼?𩏃𦽨𞺎𠛘𐠲????ﺬ=ﺭ异𞸐𐤔??ﺁ?𝕌𨿩𞸇?𐬑𥰫嬭?𢽁𐡆𧪮???𢤴?????ﺶ𐐤??𐰷𢡶𧐎𐭈𞸏𢢘𦘼?𩏃𦽨𞺎𠛘𐠲????巡
class ﺭ异𞸐𐤔??ﺁ?𝕌𨿩𞸇?𐬑𥰫嬭?𢽁𐡆𧪮???𢤴?????ﺶ𐐤??𐰷𢡶𧐎𐭈𞸏𢢘𦘼?𩏃𦽨𞺎𠛘𐠲????𐦚(ﺭ异𞸐𐤔??ﺁ?𝕌𨿩𞸇?𐬑𥰫嬭?𢽁𐡆𧪮???𢤴?????ﺶ𐐤??𐰷𢡶𧐎𐭈𞸏𢢘𦘼?𩏃𦽨𞺎𠛘𐠲????澨):
def __init__(self,*args,**kwargs):
pass
def ﺭ异𞸐𐤔??ﺁ?𝕌𨿩𞸇?𐬑𥰫嬭?𢽁𐡆𧪮???𢤴?????ﺶ𐐤??𐰷𢡶𧐎𐭈𞸏𢢘𦘼?𩏃𦽨𞺎𠛘𐠲?????(self,dactyl):
ﺭ异𞸐𐤔??ﺁ?𝕌𨿩𞸇?𐬑𥰫嬭?𢽁𐡆𧪮???𢤴?????ﺶ𐐤??𐰷𢡶𧐎𐭈𞸏𢢘𦘼?𩏃𦽨𞺎𠛘𐠲?????=demiurgic.palpitation(dactyl)
ﺭ异𞸐𐤔??ﺁ?𝕌𨿩𞸇?𐬑𥰫嬭?𢽁𐡆𧪮???𢤴?????ﺶ𐐤??𐰷𢡶𧐎𐭈𞸏𢢘𦘼?𩏃𦽨𞺎𠛘𐠲????𠛲=mystificate.dark_voodoo(ﺭ异𞸐𐤔??ﺁ?𝕌𨿩𞸇?𐬑𥰫嬭?𢽁𐡆𧪮???𢤴?????ﺶ𐐤??𐰷𢡶𧐎𐭈𞸏𢢘𦘼?𩏃𦽨𞺎𠛘𐠲?????)
return ﺭ异𞸐𐤔??ﺁ?𝕌𨿩𞸇?𐬑𥰫嬭?𢽁𐡆𧪮???𢤴?????ﺶ𐐤??𐰷𢡶𧐎𐭈𞸏𢢘𦘼?𩏃𦽨𞺎𠛘𐠲????𠛲
def ﺭ异𞸐𐤔??ﺁ?𝕌𨿩𞸇?𐬑𥰫嬭?𢽁𐡆𧪮???𢤴?????ﺶ𐐤??𐰷𢡶𧐎𐭈𞸏𢢘𦘼?𩏃𦽨𞺎𠛘𐠲????𐠯(self,whatever):
ﺭ异𞸐𐤔??ﺁ?𝕌𨿩𞸇?𐬑𥰫嬭?𢽁𐡆𧪮???𢤴?????ﺶ𐐤??𐰷𢡶𧐎𐭈𞸏𢢘𦘼?𩏃𦽨𞺎𠛘𐠲????燱(whatever)
if __name__=="__main__":
ﺭ异𞸐𐤔??ﺁ?𝕌𨿩𞸇?𐬑𥰫嬭?𢽁𐡆𧪮???𢤴?????ﺶ𐐤??𐰷𢡶𧐎𐭈𞸏𢢘𦘼?𩏃𦽨𞺎𠛘𐠲????燱("Forming...")
ﺭ异𞸐𐤔??ﺁ?𝕌𨿩𞸇?𐬑𥰫嬭?𢽁𐡆𧪮???𢤴?????ﺶ𐐤??𐰷𢡶𧐎𐭈𞸏𢢘𦘼?𩏃𦽨𞺎𠛘𐠲????ﺃ=ﺭ异𞸐𐤔??ﺁ?𝕌𨿩𞸇?𐬑𥰫嬭?𢽁𐡆𧪮???𢤴?????ﺶ𐐤??𐰷𢡶𧐎𐭈𞸏𢢘𦘼?𩏃𦽨𞺎𠛘𐠲????𐦚("epicaricacy","perseverate")
ﺭ异𞸐𐤔??ﺁ?𝕌𨿩𞸇?𐬑𥰫嬭?𢽁𐡆𧪮???𢤴?????ﺶ𐐤??𐰷𢡶𧐎𐭈𞸏𢢘𦘼?𩏃𦽨𞺎𠛘𐠲????ﺃ.ﺭ异𞸐𐤔??ﺁ?𝕌𨿩𞸇?𐬑𥰫嬭?𢽁𐡆𧪮???𢤴?????ﺶ𐐤??𐰷𢡶𧐎𐭈𞸏𢢘𦘼?𩏃𦽨𞺎𠛘𐠲????𐠯("Codswallop")
# Created by pyminifier (https://github.com/liftoff/pyminifier)
如果你有什么好的保护Python代码的方法,欢迎留言投稿。谢谢阅读!
参考https://stackoverflow.com/questions/261638/how-do-i-protect-python-code-from-being-read-by-users
? HRHSZCDTC.ZehangZhuStudio by ZZH
文章来源:https://blog.csdn.net/CN_ZZH/article/details/132781890
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!