Pyarmor

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

加密原理 快速开始

无缝替换

经过 Pyarmor 加密后的 Python 源代码也是一个正常的 Python 脚本,只需要将一个模块 pytransform.py 和几个辅助文件加入到原来的代码里面,就可以把原来的 Python 源代码全部替换成为加密源代码,按照以前的方式使用和运行这些加密源代码

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

动态加密

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

对于使用 Python 包(Package)进行发布的代码,这种方式能够提供有效的安全保障

打包加密脚本

Pyarmor 能够通过第三方工具,例如 PyInstaller, py2exe, py2app, cx_Freeze 等,把脚本加密之后直接打包发布

设置不同的许可方式

设置使用期限

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

设置允许运行的设备

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

支持的平台

查看不同平台下可用的 动态链接库列表

Windows

Linux

MacOS

嵌入式设备

Pyarmor 是如何保护 Python 源代码呢? 工作原理

Pyarmor 的商业客户

快速开始

安装

最简单的方式是 pip

pip install pyarmor
加密脚本

使用 obfuscate 命令,加密 project/src 目录下面的所有 .py 文件

pyarmor obfuscate project/src/hello.py
运行加密脚本

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

cd ./dist/
python hello.py
打包加密脚本

使用 pack 命令,把脚本加密之后直接生成可以单独运行的可执行文件

pyarmor pack -t PyInstaller project/src/hello.py
生成不同许可文件

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

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

接着使用新生成的许可文件替换默认许可文件 dist/license.lic

(默认许可文件是在加密脚本的时候自动生成的,允许加密后的脚本运行在任何电脑上,并且永不过期)

最后再次运行加密脚本 queens.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" \
        customer-jondy

cp licenses/customer-jondy/license.lic ./dist/

cd ./dist/
python queens.py
            
WebUI

运行 pyarmor-webui 打开网页版的图形界面,简单易用。但是只包含了最基本的功能,高级功能还是要用命令行

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

pyarmor-webui