PyArmor

保护 Python 脚本的工具,能够加密 Python 脚本,保护运行时刻的 Python 代码不被泄露,设置加密脚本的有效期限,绑定加密脚本到硬盘、网卡等硬件设备

加密原理 快速开始

无缝替换

经过 PyArmor 加密后的 Python 脚本也是一个正常的 Python 脚本,只需要一个额外的扩展模块 pytransform,就可以把原来的 Python 脚本全部替换成为加密脚本,按照以前的方式使用和运行这些加密脚本

这个特性也使得经过 PyArmor 加密后的脚本,还可以在继续使用第三方工具(例如 py2exe, py2app, PyInstallercx_Freeze 等打包发布

动态加密

PyArmor 不仅仅能够加密 Python 脚本,即便在脚本被解释执行的运行过程中,一旦函数(代码块)执行完成,就会被重新加密,从更深层次保证了 Python 脚本的安全性

打包加密脚本

PyArmor 能够通过第三方工具PyInstaller把脚本加密之后直接打包发布

设置不同的许可方式

设置使用期限

PyArmor 可以为加密的脚本设置使用期限,过期之后加密的 Python 脚本就无法在继续运行

设置允许运行的设备

PyArmor 可以绑定加密 Python 脚本到硬盘序列号、网卡的 Mac 地址、IP 地址等

扩展其他认证方式

加密后的脚本对用户来说就是黑盒子,所以可以在 Python 脚本里面添加任意的认证方式

支持的平台

详细信息

Windows

Linux

MacOS

嵌入式设备

PyArmor 使用动态代码生成和交叉保护机制来保证加密脚本的安全性 了解详情

快速开始

安装

最简单的方式是 pip

pip install pyarmor
加密脚本

使用 obfuscate 命令,加密主脚本 foo.py 以及当前目录的所有其他 .py 文件,保存所有加密后的文件到目录 dist

pyarmor obfuscate foo.py
运行加密脚本

像运行正常角本一样运行加密后的脚本 dist/foo.py

cd dist
python foo.py
生成不同许可文件

首先使用命令 hdinfo 查看目标机器的硬件设备信息

然后使用命令 licenses, 创建新的许可文件

接着使用新生成的许可文件加密脚本

最后再次运行加密脚本 foo.py,测试一下新的许可证

pyarmor hdinfo

pyarmor licenses \
        --expired "2018-12-31" \
        --bind-disk "100304PBN2081SF3NJ5T" \
        --bind-mac "70:f1:a1:23:f0:94" \
        --bind-ipv4 "202.10.2.52" \
        r001

pyarmor obfuscate --with-license licenses/r001/license.lic foo.py

cd dist
python foo.py
            
打包加密脚本

加密并打包脚本 foo.py ,并生成可以单独运行的可执行文件 dist/foo/foo.exe

pyarmor pack foo.py
WebUI

运行 pyarmor-webui 打开网页版的图形界面(截图

运行 pyarmor-webui 会启动了一个本地 Web 服务,然后在浏览器中打开 PyArmor 的网页版

pip install pyarmor-webui
pyarmor-webui