Python3代码混淆工具
有没有现成的Python代码混淆工具,适用于Python3?
请不要告诉我,如果我想隐藏或混淆我的代码,Python不是合适的选择。也不要说应该用正确的许可证来保护代码,而不是混淆...
更新:这个问题并不是重复了如何保护Python代码?这个问题:我只是想问有没有工具可以混淆Python代码。就这么简单。(如果没有,我真想知道为什么我会收到这么多反馈...)
6 个回答
我建议你使用 pyarmor。它可以把代码转换成二进制格式。唯一的缺点是,你需要为每个操作系统单独进行代码混淆。
如果我是你,我不会选择混淆代码的方式,而是会研究一些其他的方法来打包可执行的二进制文件,而不是(字节)代码。
我知道的一些工具(可能还有其他的工具):
- http://www.ohloh.net/p/py2c(这个工具可以把Python代码转换成C代码,然后你可以编译它)
- http://www.pyinstaller.org/
- http://cx-freeze.sourceforge.net/
- http://www.py2exe.org/(仅适用于Windows)
- http://svn.pythonmac.org/py2app/py2app/trunk/doc/index.html(仅适用于Mac)
我不知道这些工具的安全性如何,但我觉得值得一试。
补充:真糟糕,忘了提Python 3的部分。因为你没有写关于产品本身的任何信息(操作系统、图形界面等),所以有点难以帮助。如果你的代码是用Python 3写的,但也可以用Python 2代码,我建议你看看3to2。
无论你做什么,最终Python解释器都会读取一些不经过混淆处理的Python字节码。从这些字节码中,轻松就能还原出你的源代码(只是会缺少注释和一些不明显的格式)。这就是为什么大家都说混淆Python几乎是不可能的。因为混淆Python几乎不可能,所以也就没有什么好的工具可以做到这一点。说“我知道这事做得不太有效,但有没有工具可以试试?”这其实只是空想。
你能做的最好的办法就是用标准的加密工具来加密你的代码,然后写一个用其他语言写的小程序,这个程序负责解密你的Python代码并运行它,最后在完成后删除未加密的代码。如果你愿意花很多精力,可能还可以用C语言的API,把Python解释器嵌入到C程序中,这样就能在内存中直接给解释器提供未加密的Python代码,而不是从磁盘文件中读取。
不过要注意,这些方法依然相对容易被破解,而且如果你想提供可导入的Python模块(而不是整个程序),这些方法就完全不管用了。这也是为什么我不指望会有人已经写好工具来帮你实现这个。