1. 前言
Python是一种解释型语言,相较于编译型语言,代码更容易泄露。
为了保护知识产权、防止代码被未授权访问或修改、以及保护商业机密,有时候我们需要进行Python代码加密(混淆)。
目前比较好的Python代码加密产品是Pyarmor,它具有免费版本和付费版本。
Pyarmor 加密后的脚本输出的是同名的 .py 文件和一个运行辅助包。它们和普通 Python 模块一样,可以被
Python 解释器调用执行,这也是 Pyarmor 的一个加密特点,可以使用加密后的脚本无缝替换原来的脚本。
本文中,我们来学习一下Pyarmor的使用。
参考文档:
- Pyarmor Documentation
- Pyarmor 8.5 用户文档
- Pyarmor Documentation PDF
- Pyarmor官网
- github - dashingsoft/pyarmor
- 使用PyArmor保护Python代码
2. 免费版与付费版区别
参考文档:License Types
下载和安装本软件表示自动接受试用许可协议,试用版本(免费版本)有如下的限制:
- 加密功能对脚本大小有限制,不能加密超过限制的大脚本。
- 混淆字符串功能在试用版中无法使用。
- RFT 加密模式,BCC 加密模式在试用版无法使用。
- 不可以用于加密商用产品。特别的,如果商用产品的累计销售额小于基础版许可证费用乘以30,可以暂时使用;但是一旦累计销售额超过阀值,就不可以在继续使用。
- 运行辅助包的名称 “pyarmor_runtime_000000” 不可以被设置和修改
- 不可以使用本软件提供任何形式的加密服务,不管是通过应用程序还是网络服务。总之在任何情况下都不允许使用本软件加密其他人的脚本。
- 不支持 obf-code 大于 1 的任何加密模式
试用版本中功能限制,需要通过许可授权来解锁相关功能。但是第 (6) 条限制没有任何许可证可以解锁。
3. 使用免费版Pyarmor
3.1. 加密单个文件
1、准备一个测试文件 demo.py
1 | print("hello") |
2、安装pyarmor
1 | pip install pyarmor |
3、加密文件
1 | pyarmor gen demo.py |
4、运行加密后文件
1 | cat dist/demo.py |
3.2. 加密代码包
1、准备一个代码包 mypkg
1 | mypkg |
2、加密代码包
1 | pyarmor gen -O dist2 mypkg |
3、测试运行代码包
1 | cd dist2 |
3.3. 设置过期时间
设置30天之后过期
1 | pyarmor gen -O dist4 -e 30 foo.py |
设置指定日期过期
1 | pyarmor gen -O dist4 -e 2020-12-31 foo.py |
3.4. 绑定设备
1、获取设备信息
1 | python -m pyarmor.cli.hdinfo |
得到输出:
1 | Default Harddisk Serial Number: 'HXS2000CN2A' |
2、绑定设备
1 | pyarmor gen -O dist5 -b 00:16:3e:35:19:3d foo.py |
4. 使用付费版Pyarmor
1、根据购买Licence时获取到的链接,下载 pyarmor-regfile-xxx.zip
2、注册Licence
1 | pyarmor register /path/to/pyarmor-regfile-xxx.zip |
3、验证注册信息
1 | pyarmor register |
4、使用Pyarmor
付费版用法和免费版基本相同。