用于Python3代码的混淆工具

时间:2011-11-10 07:52:47

标签: python python-3.x obfuscation

Python3是否存在任何现有的python代码混淆工具?

如果我想隐藏/混淆我的代码,请不要试着告诉我Python不是正确的选择。或者正确的许可证应该保护代码而不是混淆......

更新:此问题不会重复问题How do I protect Python code?:我只是问是否有一个工具来混淆Python。没有更多,也没有更少。 (如果没有,我想知道为什么我得到这么多反馈......

6 个答案:

答案 0 :(得分:5)

无论你做什么,在某些时候,Python解释器将以未经模糊处理的Python字节码进行读取。从那以后很容易回到你的源代码(减去评论和非显而易见的布局)。这就是为什么每个人都说混淆Python几乎是不可能的。事实上,混淆Python几乎是不可能的,这意味着没有好的工具可以做到这一点。我担心只是一厢情愿地说“我知道这不能很有效地完成,但有没有任何工具可以做到这一点?”

您可以做的最好的事情是使用标准加密工具加密您的代码,并用其他语言编写一个小包装程序,只需解密您的Python并运行您的程序,然后在完成后删除未加密的代码。如果你想付出太多的努力,你可以用C API做一些事情,并在Python程序中嵌入Python解释器,将你未加密的Python只提供给内存中的解释器,而不是磁盘上的文件。

请注意,如果你想要的是提供可导入的Python模块(而不是整个程序),这些方案仍然相对容易解决,并且根本不起作用。这就是为什么我不希望找到任何人已经为你编写的工具。

答案 1 :(得分:3)

没有办法以任何有用的方式混淆Python代码,也没有理由让你想要。您似乎想要对代码进行模糊处理以保护它。这完全没有意义,因为您只能运送.pyc文件,这意味着您根本不发送源代码。不是只发送.pyc文件会对你有所帮助,因为有.pyc文件的非编译器。

如果您的程序相当简单且编码良好,使用cx-freeze创建可执行文件,py2exe等,意味着.pyc文件最终会在可执行文件中,因此更难找到,而且它也更少很明显你使用Python,所以这可能会有所帮助。但更重要的是,它可能会使您的用户安装更简单。他们喜欢这样。

如果你真的想以一种有用的方式模糊你的代码,将它们全部转换为使用Cython,它将创建你可以编译的C文件。这也将加速该计划。但是,Cython并不完全兼容Python,因此您可能需要进行更改。

我知道你不想听到这个,但我会说这是为了别人的利益:

所有这些当然是愚蠢和误导的。开源对你有好处。真。你不应该保护你的代码,你应该尽可能多的眼睛和手。

相信我:你主要担心的是获得更多用户,而不是更少的盗版。通过使您的软件更好,而不是更糟,您可以获得更多用户。而开源将有助于此。

答案 2 :(得分:2)

如果我是你,我不会采用混淆方法,而是研究运送可执行二进制文件而不是(字节)代码的替代方法。

我知道的工具(可能还有其他一些):

我不知道这些工具是如何防黑的,但我认为值得一看。

编辑:Damnit,错过了Python 3部分。这有点难以帮助,因为您没有写任何关于产品本身(操作系统,GUI等)的内容。如果它也可以是Python 2代码,但您已经在Python 3中编写了所有代码,我建议3to2

答案 3 :(得分:1)

Pyminifier是Python代码缩小器,混淆器和压缩器。

此工具适用于Python 3

答案 4 :(得分:0)

隐藏代码的最佳方法是不释放它。

宣传服务 - 您收到他们的数据然后返回处理过的数据。传输可以通过网络,电子邮件,DHL,鸽子,电话,引力脉冲......

答案 5 :(得分:0)

我建议使用pyarmor。 它将代码转换为二进制形式。唯一的缺点是,您需要分别混淆每个操作系统的代码。