python代码打包与加密 |
您所在的位置:网站首页 › 自己写的python代码打包加密怎么解除 › python代码打包与加密 |
文章目录
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 |