如何在发布之前保护我的Python代码?

时间:2017-11-03 12:44:12

标签: python dll source-code-protection

我编写了一个python代码,它接受一个输入数据文件,对数据执行一些处理并将另一个数据文件写为输出。

我现在应该分发我的代码,但是用户不应该看到源代码,而是能够只提供输入并获得输出! 我以前从未这样做过。

如果能以最简单的方式实现这一目标,我将不胜感激。

提前多多感谢

4 个答案:

答案 0 :(得分:3)

因为Python是一种设计的解释语言;并且因为它将代码编译为字节码( - 这无助于你试图隐藏它的事实,因为字节码更容易反转 - )没有真正安全的方法来隐藏你的源代码,因为它是不可恢复的,如对于任何编程语言都是如此,真的。

最初,如果你想使用一种不容易逆转的语言 - 你应该选择一种更直接编译到底层架构的机器代码的本机语言,这种机器代码很难再现。由于整齐的编译器优化,CISC等人给出的开销,原始语言更不用说了。

但是,可以使用一些将源代码转换为可执行格式的库(通过打包Python解释器和字节码),例如:

  • cx_Freeze - 用于冻结任何代码> = Python 2.7,适用于任何平台。
  • PyInstaller - 为了冻结通用代码,它确实声明它可以与第三方库一起使用。
  • py2exe - 用于将代码冻结为仅限Windows的可执行格式。

或者你可能会考虑替代它,这是代码混淆,它仍然允许用户阅读源代码但是几乎无法读取。

然而,提出这个问题的一个问题是,添加代码会更难,因为错误的代码混淆技术会使代码变得静态。此外,在后一种情况下,代码可能会有冗余代码带来的开销,意味着欺骗或诱骗用户认为代码正在做一些事情,而不是。

一般来说,它否定了开源的标准做法,这是Python喜欢做和支持的。

所以要真正得出结论,如果你不想阅读上面的所有内容;你做错的第一件事是为此选择Python,这是一种支持开源的语言,也是开源的。因此,为了缓解这个问题,您应该重新考虑该语言,或者按照上面的引用链接到可能有助于隐藏基本源代码隐藏的模块。

答案 1 :(得分:1)

首先,由于Python是一种解释型语言,我认为你不能完全保护你的Python代码,可以不编译.pyc文件来获取.py文件(例如使用uncompyle6)。

所以你唯一能做的就是让它很难阅读。

我建议您查看代码混淆,其中包括通过更改变量/函数名称,删除注释和文档字符串,删除无用空格等来使代码无法读取。Pyminifier做那种事。 您也可以编写自己的混淆脚本。

然后,您还可以将程序转换为单个可执行文件(例如,使用pyinstaller)。我很确定有一种方法可以从可执行文件中获取.py文件,但这只会让它变得更难。在制作可执行文件时,请注意跨平台兼容性。

答案 2 :(得分:0)

当然,另一个选择是通过Web公开功能,以便用户可以通过浏览器进行交互,而无需访问实际代码。

答案 3 :(得分:0)

通过以上回答,我的理解是,如果您的客户端希望与其他不受保护的脚本一起执行受保护的脚本,则上述某些策略可能无法正常工作。

另一个选择是加密脚本,然后使用可以解密并执行该脚本的解释器。它也有一些限制。

ipepycrypter 是可帮助保护python脚本的套件。这可以通过隐藏脚本实现来实现。加密的脚本由修改后的python解释器执行。 ipepycrypter 由加密工具 ipepycrypt 和python解释器 ipepython 组成。

更多信息,请访问https://ipencrypter.com/user-guides/ipepycrypter/