python打包加密工具:Pyinstaller和Nuitka
python打包加密工具概述
參考鏈接
談談 Pyinstaller 的編譯和反編譯,如何保護你的代碼
Linux之Python代碼打包工具Nuitka使用說明
Nuitka-Python 打包 Linux(CentOS)
如何防止商用的深度學習模型源碼泄露?
Python打包exe的王炸-Nuitka
01 pyinstaller
pyinstaller的不加密打包exe
pyinstaller的安裝過程很簡單,在命令行中就可以安裝:
pip install pyinstaller使用方式如下:
pyinstaller.exe -F yourcode.py就可以輸出一系列結果,其中dist文件夾下就是生成的exe文件。
這樣的過程雖然簡單,但是也可能被輕易反編譯。下面簡單介紹一下pyinstaller的反編譯過程。
使用pyinstxtractor.py,可以將pyinstaller產生的exe文件解包成pyc文件。
該項目地址
接下來把該文件復制到exe同級目錄下,使用下面的命令:
運行后產生了xx.exe_extracted文件夾,要找到xxx.exe.mainfest文件,然后,看看xxx沒有后綴名的文件,它就是pyc文件。此外目錄下還有一個PYZ-00.pyz_extracted文件夾,里面都是引入的依賴庫。
找到pyc文件后,就可以反編譯,網上的工具和在線工具都有很多。不再贅述了。
pyinstaller的加密打包exe
在打包時加個參數key就可以加密,但是需要手動安裝pycrypto包。
pip install pycrypto pyinstaller.exe -F --key 123456 xxx.py不過這個加密只針對依賴庫。
02 Nuitka
Nuitka的打包類似于pyinstaller,但是程序運行性能更高,錯誤率更高,打包效率更低。可以酌情選擇。
Nuitka安裝命令
pip install nuitka有說版本很重要,我安裝的沒有異常,版本是0.9.6
只封裝一個python文件
python -m nuitka --lto=no yourpythonfile.py會生成一個bin文件和其他文件,使用./yourpythonfile.bin就和python yourpythonfile.py的效果是一樣的。
完整使用命令
nuitka --mingw64 --windows-disable-console --standalone --show-progress --show-memory --plugin-enable=qt-plugins --plugin-enable=pylint-warnings --recurse-all --recurse-not-to=numpy,jinja2,matplotlib,scipy,sqlalchemy,pandas,pygal,pyzbar,win32com --output-dir=out main.py封裝所有模塊
python -m nuitka --follow-imports program.py如果包含一些動態庫,無法直接通過PYTHONPATH環境變量設置后直接導入的話,可以在封裝過程中指定路徑
python -m nuitka --follow-imports --include-plugin-directory=plugin_dir program.py封裝動態庫
如果想將某些模塊封裝成動態庫,需要使用--module指令
python -m nuitka --module some_module.py運行后會生成some_module.so動態庫,可以被其他程序導入使用。注意這個生成的動態庫只能被相同版本的CPython導入。
封裝包
封裝整個包,同時一些模塊使用動態庫的方式,可以使用下面的命令
python -m nuitka --module some_package --include-package=some_package如果要將代碼分發到其他系統中,可以通過指定--standalone來生成一個文件夾,默認會導入所有模塊,如果要排除一些模塊,可以使用--nofollow-inport-to指令,但是在程序運行時可能會出現ImportError
python -m nuitka --standalone program.py封裝過程
封裝的時候,.py文件首先是被轉成了.c文件,然后被編譯成了.o文件,最后合并成.bin可執行文件。
從bin到C是不可逆的,從C到Python也是不可逆的,代碼相對來說很安全。
還有編譯成動態鏈接庫的方法,在這里不贅述了,主要是編譯成.so文件,安全性也是高的。反匯編.so的時候,C代碼也不是原來的代碼了,無法推回Python。
總結
以上是生活随笔為你收集整理的python打包加密工具:Pyinstaller和Nuitka的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cadence——基本操作6
- 下一篇: python用cartopy包画地图_p