使用 PyArmor 对代码进行保护
PyArmor 文档:https://pyarmor.readthedocs.io/zh/latest/index.html
安装
pip install pyarmor
查看版本
pyarmor --version
成功在终端看到版本号即安装成功。
PyArmor Trial Version 7.7.4 PyArmor is a command line tool used to obfuscate python scripts, bind obfuscated scripts to fixed machine or expire obfuscated scripts. For more information, refer to https://pyarmor.readthedocs.io
【备注】第一次使用 PyArmor 命令时会在当前用户 ~ 目录下自动创建一个 .pyarmor 文件夹,
INFO Create pyarmor home path: /home/xxx/.pyarmor INFO Create trial license file: /home/xxx/.pyarmor/license.lic
加密
# 加密主脚本 main.py 以及同目录的其他 *.py pyarmor obfuscate main.py # 默认情况下,只有和主脚本相同目录的其他 *.py 会被同时加密 # 递归加密子目录下的所有 *.py 文件 pyarmor obfuscate --recursive main.py
命令 obfuscate 用来加密脚本,最常用的一种情况是切换到脚本 main.py 所在的路径,然后执行。
PyArmor 会加密 app.py 和相同目录下面的所有 *.py 文件到 dist 文件夹中。
发布加密脚本给客户只需要把输出路径 dist 的所有文件拷贝过去即可
【备注】运行加密脚本无需安装 PyArmor
生成新的许可文件
运行加密脚本必须有一个认证文件 license.lic 。一般在加密脚本的同时,会自动生成一个缺省的认证文件。但是这个缺省的认证文件允许加密脚本运行在任何机器并且永不过期。
如果需要设置加密脚本的使用期限或者限制脚本在特定的机器使用,需要生成新的许可文件, 并使用新的许可文件加密脚本。
设置加密脚本的使用期限
生成一个带有效期的认证文件
pyarmor licenses --expired 2023-03-10 "auth-license"
生成的认证文件会保存在 licenses/auth-license/ 目录下
使用新生成的许可文件加密脚本
pyarmor obfuscate --with-license licenses/auth-license/license.lic main.py
这样,在2023年03月10日之后运行脚本就会报错
绑定加密脚本到固定机器上
如果想绑定加密脚本到固定机器上,首先在该机器上面运行下面的命令获取硬件信息
pyarmor hdinfo
会得到如下输出(以下输出是在Ubuntu 22.04 系统下得到的,硬件信息已打码)
INFO Generating public capsule ... INFO PyArmor Trial Version 7.7.4 INFO Python 3.8.15 Hardware informations got by PyArmor: Failed to get harddisk information. Default Mac address: "0c:7a:xx:xx:xx:xx" Multiple Mac addresses: "<0c:7a:xx:xx:xx:xx>" Ip address: "192.168.2.4" Domain name: "(none)" Change logs v6.2.0(r21): Remove trailing dot from harddisk serial number v6.4.2(r34): Support binding multiple mac addresses v6.5.3(r37): Support binding named harddisk v6.7.5(r45): Support mmc/sd card in Linux
然后在生成绑定到固定机器的许可文件:硬盘信息(如果一台机器上有多个硬盘,那么 pyarmor 只检查默认的硬盘,也就是命令 hdinfo 打印出来的默认硬盘)
pyarmor licenses --bind-disk "100304PBN2081SF3NJ5T" --bind-mac "0c:7a:xx:xx:xx:xx" r002
同样,使用这个许可文件加密脚本,加密脚本就只能在指定机器上运行
pyarmor obfuscate --with-license licenses/code-002/license.lic app.py
运行加密代码
进入 dist 目录,按照原来的方式启动项目即可。
本文参考了以下文章:
https://blog.csdn.net/Disany/article/details/124505304
本站文章除注明转载/出处外,均为原创,若要转载请务必注明出处。转载后请将转载链接通过邮件告知我站,谢谢合作。本站邮箱:admin@only4.work
尊重他人劳动成果,共创和谐网络环境。点击版权声明查看本站相关条款。