如何保护服务端 Python 源代码

如何保护运行在服务器端的 Python 代码是一个问题,和发布到客户端的代码可以打包成可执行文件不一样,服务器端的代码一般是以包(Package)的方式在运行,至多被编译成 .pyc 或者 .pyo,或者在放到一个压缩文件里面,但是不管怎么样,最终执行的时候都要解压到磁盘的某一个地方执行。

这里介绍一种使用包 PyArmor 保护服务端 Python 源代码的方式,[PyArmor] 可以加密 Python 源代码,然后无缝替换原来的文件。一个被 [PyArmor] 加密后的源代码内容如下

	__pyarmor__(__name__, __file__, b'\x0a\x01\x03\x0b\xf1......\x01\x03')

这完全是一个正常的 Python 脚本,所以可以一对一替换原来的脚本。不仅仅如此,[PyArmor] 还会对每一个函数体进行单独加密,在函数被执行之前,解密函数正常执行。一旦函数执行完成,会重新加密函数体,确保运行时刻 Python 代码也不会被泄露[^1]。

下面举例来说明,如何使用 [PyArmor] 加密一个服务器端的包 weblogin

首先安装 [PyArmor]

pip install pyarmor

然后加密包,假设其位于 /path/to/project/weblogin

cd /path/to/project
pyarmor obfuscate -r weblogin/__init__.py

加密脚本存放在 dist 下面,把下面所有的文件拷贝到原来目录,使用加密脚本覆盖原来的文件

cp -a dist/* weblogin/

最后按照原来的方式发布 weblogin 到服务器就可以了。

了解 [PyArmor] 的更多功能,请访问 PyArmor 主页PyArmor 代码库


[^1]PyArmor 加密原理

猜你喜欢

转载自blog.csdn.net/weixin_43572000/article/details/84069725