日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python打包加密工具:Pyinstaller和Nuitka

發布時間:2024/1/8 python 64 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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同級目錄下,使用下面的命令:

python pyinstxtractor.py xx.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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。