使用PyArmor保护Python代码


本文内容取自官方网站和文档汇总而来,特此说明!

保护 Python 脚本的工具,能够加密 Python 脚本,使用动态代码生成和交叉保护机制来保证加密脚本的安全性,保护运行时刻的 Python 代码不被泄露,设置加密脚本的有效期限,绑定加密脚本到硬盘、网卡等硬件设备。

使用PyArmor保护Python代码


1. 工具特点

使用之前,需要知道该工具有对应收费版本!

  • [1] 无缝替换

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

>>> from pytransform import pyarmor_runtime

>>> pyarmor_runtime()
__pyarmor__(__name__, __file__, b'\x06\x0f...')
  • [2] 动态加密

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

  • [3] 打包加密脚本

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

  • [4] 设置不同的许可方式

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

设置允许运行的设备:PyArmor 可以绑定加密 Python 脚本到硬盘序列号、网卡的 Mac 地址、IP 地址等。

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


2. 快速使用

安装和使用相对来说,还是比较简单的!

  • [1] 安装
# 最简单的方式
$ pip install pyarmor

# 升级最新版
$ pip install --upgrade pyarmor

# 图形界面工具
$ pip install pyarmor-webui
$ pyarmor-webui
# 完全卸载
$ pip uninstall pyarmor
$ rm -rf ~/.pyarmor
$ rm -rf ~/.pyarmor_capsule.zip
$ rm /path/to/project/.pyarmor_config
  • [2] 加密脚本
# 使用obfuscate命令
# 加密主脚本foo.py以及当前目录的所有其他.py文件,保存所有加密后的文件到dist目录
$ pyarmor obfuscate foo.py

# 加密单个模块
$ pyarmor obfuscate --exact foo.py

# 加密整个Python包
$ pyarmor obfuscate --recursive --output dist/mypkg mykpg/__init__.py
  • [3] 运行加密脚本
# 正常运行
$ cd dist
$ python foo.py
  • [4] 生成不同许可文件
# 使用hdinfo命令查看目标机器的硬件设备信息
$ pyarmor hdinfo

# 使用命令licenses创建新的许可文件
$ 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

# 再次运行加密脚本foo.py来测试新的许可证
$ cd dist
$ python foo.py
  • [5] 打包加密脚本
# 加密并打包foo.py脚本
# 并生成可以单独运行的可执行文件
$ pip install pyinstaller
$ pyarmor pack foo.py
  • [6] WebUI
# 运行pyarmor-webui打开网页版的图形界面
$ pip install pyarmor-webui
$ pyarmor-webui

使用PyArmor保护Python代码


3. 使用工程

使用工程主要适用于需要加密脚本很多的项目!

工程是一个包含配置文件的目录,可以用来方便的管理加密脚本。使用工程管理脚本的有下列优点:

  1. 可以递增式加密脚本,适用于需要加密脚本很多的项目
  2. 定制选择工程包含的脚本文件,而不是一个目录下全部脚本
  3. 设置加密模式和定制保护代码
  4. 更加方便的管理加密脚本
# 首先使用命令init创建一个工程
$ cd examples/pybench
$ pyarmor init --entry=pybench.py

# 创建一个工程配置文件 - .pyarmor_config
# 新创建的工程配置文件存放在 - projects/pybench
$ pyarmor init --src=examples/pybench --entry=pybench.py projects/pybench


# 切换当前路径到工程运行工程相关命令
$ cd projects/pybench
$ pyarmor info

# 使用build命令加密工程中包含的所有脚本
$ pyarmor build

# 当某些脚本修改之后,再次运行build名加密这些修改过的脚本
$ pyarmor build

# 使用命令config来修改工程的配置
$ pyarmor config --manifest "include *.py, prune dist, prune test"
$ pyarmor config --manifest "include *.py, include config.json"
$ pyarmor build

# 运行加密后的脚本
$ cd dist
$ python pybench.py

4. 命令手册

简单列举一下,相关的命令和对应用处!

PyArmor 是一个命令行工具,用来加密脚本,绑定加密脚本到固定机器或者设置加密脚本的有效期。

  • PyArmor 的语法格式
$ pyarmor <command> [options]
  • 常用的命令包括
obfuscate    加密脚本
licenses     为加密脚本生成新的许可文件
pack         加密脚本然后直接打包成为单独执行的文件
hdinfo       获取硬件信息
  • 工程相关的命令
init         创建一个工程,用于管理需要加密的脚本
config       修改工程配置信息
build        加密工程里面的脚本

info         显示工程信息
check        检查工程配置信息是否正确
  • 不常使用的命令
benchmark    测试加密脚本的性能
register     生效注册文件
download     查看和下载预编译的动态库
runtime      创建运行辅助包

文章作者: Escape
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Escape !
  目录