使 Python 脚本防篡改

Make Python Scripts Tamper-proof

我正在使用 python 嵌入(python.net 在 C# 中)执行 python 脚本,我需要确保这些 python 脚本不会被篡改和。这些 python 脚本可以是 .pyc(已编译)格式。

有没有办法让这些脚本防篡改? .pyc 文件可以很容易地反编译、篡改和重新编译。我查看了 signet,但我相信它需要将 python 文件冻结到可执行文件中。

欢迎任何帮助。

您需要的是签署这些脚本。签署文件意味着从私钥和该文件生成签名,其想法是没有私钥就不可能生成相同的签名。然后,您还有一个 public 密钥(可以设为 public),其唯一目的是验证签名是否与文件匹配。 IIRC,这与 Windows 用于信任软件的机制相同(即,有 Windows 信任的软件开发人员,当软件具有由受信任的源发布的签名时,Windows可以验证,那么我认为是可信软件)。

这是一个很常见的密码模式,所以我认为有很多工具可以实现它,但特别好的是 GPG。它是免费的 open-source,它有多种语言的绑定,它有很好的文档记录,可以处理从创建密钥对到签名等等的所有事情。这也意味着使用 GPG 有点复杂,但我发现 this post 有人想使用 GPG 验证他们在 C# 中下载的文件,所以它可能会有所帮助。

另外,请注意,在另一个 post 中,他们还使用散列检查来确保脚本在下载过程中没有损坏(即出现下载错误)。您可以使用签名来验证这一点,但是您将无法判断错误是否来自有人故意篡改您的代码,或者您是否只需要 re-download 脚本。