我们在用python程序开发完程序后,进行程序发布。发布后要保证算法的安全性,常常需要对代码进行保护,通过这段时间的搜集整理,目前常见的保护方式有:代码混淆加密、编译成二进制动态库、
本篇讲述Pyarmor加密
Pyarmor加密优点:
1、很方便对批量代码进行加密;
2、支持许可加密,可以设置使用期限、绑定网卡等信息(详见:参考链接3);
3、加密安全性较高;
参考链接:
1、PyArmor简单使用
2、官方文档
3、Python代码加密-PyArmor
1、直接混淆加密
测试命令:
加密后的输出会在运行目录下的dist文件夹
加密后展示:
执行按照常规运行python程序正常方式运行即可:
2、增加时间限制保护加密
1、切换license管理目录(目的是为了管理所有licnese,避免管理混乱)
cd /d D:\Project\Python_Lock\Pyarmor_License_Manage
2、生成带截至日期的Lincense (生成截至日期)
C:\Users\Administrator\AppData\Roaming\Python\Python36\Scripts\pyarmor-7.exe licenses --expired 2024-12-30 20241230End
3、带license的代码混淆加密
pyarmor obfuscate --with-license licenses/r001/license.lic app.py
3、增加硬件绑定保护加密
3.1、查看硬盘信息
如果想绑定加密脚本到固定机器上,首先在该机器上面运行下面的命令获取硬件信息:pyarmor hdinfo
执行:
C:\Users\Administrator\AppData\Roaming\Python\Python36\Scripts\pyarmor-7.exe hdinfo
3.2、生成绑定硬件的License
如果一台机器上有多个硬盘,那么pyarmor只检查默认的硬盘,也就是命令hdinfo打印出来的默认硬盘
#绑定了硬盘和网卡信息,应该可以只绑定一种硬件,待测试
pyarmor licenses --bind-disk "100304PBN2081SF3NJ5T" --bind-mac "20:c1:d2:2f:a0:96" r002
3.3 带license的代码混淆加密
pyarmor obfuscate --with-license licenses/code-002/license.lic app.py
注意事项
1、执行后编译目录在cmd的运行目录下的dist文件夹,所以在执行命令前先cd切换目录到程序目录;
2、加密后代码变了样子,在执行的时候,除了将py文件拷贝到对应位置外,还要将依赖文件夹pytransform同时拷贝,否则执行第一句话就会出错,提示“ModuleNotFoundError: No module named ‘pytransform’”
pytransform文件夹是在混淆加密时自动生成的,里面有程序正常运行的依赖