python代码打包与加密

您所在的位置:网站首页 自己写的python代码打包加密怎么解除 python代码打包与加密

python代码打包与加密

2023-05-19 14:28| 来源: 网络整理| 查看: 265

文章目录 pyinstallerPyPIcython(Linux环境)混淆PyArmor

pyinstaller

安装pyinstaller

pip install pyinstaller

打包

打包成单个文件pyinstaller -F --clean *.py 打包成多个文件pyinstaller -D --clean *.py

注意: 为了避免打包文件过大, 强烈建议将代码中的import *之类的语法改成按需引入, 不然可能会把整个package打包进来.

PyPI 待更新 cython(Linux环境)

安装cython

pip install cython

用cython将python代码转换成c语言代码: 在对应的目录进入终端

cython *.py

如果*处提供了具体的文件名, 那么只会产生一个c语言文件, 否则会将目录下的所有python代码转换成c语言并输出.

利用GCC进行编译

gcc -c -fPIC -I/PATH/ *.c gcc -shared *.o -o *.so 其中PATH为系统中Python.h所在的目录, 一般在系统python目录中的include中. 如使用Anaconda的话目录为home/USERNAME/anaconda3/include/python3.7m/(仅供参考, 可能与具体情况不同)其中*为具体的c语言文件名字

随后便可得到多个编译好的动态库so文件, 使用时像正常python包import进入代码随后调用各方法即可(可以无损替换).

以下为顺带一提的加密方法

混淆

如oxyry等网站可以在线混淆代码, 大大降低代码的可读性, 而不影响代码的实际业务功能, 但其实没有特别大的加密作用.

# 混淆前 a = 'a' _b = 'b' def foo(): print(a) def _bar(): print(_b) foo() _bar() # 混淆后 a ='a'#line:1 _OO0OO000O00OO0OOO ='b'#line:2 def foo ():#line:4 print (a )#line:5 def _OOOOOO0O00000OOO0 ():#line:7 print (_OO0OO000O00OO0OOO )#line:8 foo ()#line:10 _OOOOOO0O00000OOO0 ()#line:11

其实还可以根据混淆后的结果再一次手动对部分函数名, 变量名进行混淆, 但一定要随时保存副本不然很难还原回去.

PyArmor

首先安装PyArmor

pip install pyarmor

命令 obfuscate 用来加密脚本。最常用的一种情况是切换到脚本 myscript.py 所在 的路径,然后执行:

pyarmor obfuscate myscript.py

*PyArmor 会加密 myscript.py 和相同目录下面的所有 .py 文件:

* 在用户根目录下面创建 .pyarmor_capsule.zip (仅当不存在的时候创建) * 创建输出子目录 dist * 生成加密的主脚本 myscript.py 保存在输出目录 dist * 加密相同目录下其他所有 *.py 文件,保存到输出目录 dist * 生成运行加密脚本所需要的全部辅助文件,保存到输出目录 dist

具体使用方式可以参见PyArmor文档



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3