Pyinstaller加密打包應(yīng)用的示例代碼
pyinstaller是一個(gè)非常簡單的打包python的py文件的庫。用起來就幾條命令就夠了,
官方文檔:pyinstaller
代碼混淆
使用https://pyob.oxyry.com/ 進(jìn)行代碼的混淆(找不到什么可用的離線混淆庫)

抓取真實(shí)api后
def obfuscation(py_file, save_path):
print("讀取文件:", py_file)
with open(py_file, "r", encoding="utf-8") as f:
py_content = f.read()
print("進(jìn)行混淆中...")
url = "https://pyob.oxyry.com/obfuscate"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36",
"Referer": "http://pyob.oxyry.com/",
"content-type": "application/json",
"cookie": "_ga=GA1.2.1306886713.1588752647; _gid=GA1.2.46944674.1588899118"
}
data = json.dumps({
"append_source": "false",
"preserve": "",
"remove_docstrings": "true",
"rename_default_parameters": "false",
"rename_nondefault_parameters": "true",
"source": py_content
})
result = json.loads(requests.post(url, data=data, headers=headers).text)["dest"]
result = "# cython: language_level=3\n" + result
print("混淆成功...")
with open(save_path, "w", encoding="utf-8") as f:
f.write(result)
print("混淆文件已寫入{}\n".format(save_path))
if __name__ == '__main__':
obfuscation("my.py", "../混淆/my.py")
obfuscation("approach.py", "../混淆/approach.py")
編譯pyd
build_pyd.py
from distutils.core import setup from Cython.Build import cythonize setup( name='any words.....', ext_modules=cythonize(["my.py","approach.py" ]) )
執(zhí)行打包
import json
import os
# 清理舊pyd文件
import uuid
import requests
def clearPyd():
for file in os.listdir():
if ".pyd" in file:
print("刪除.pyd:", file)
os.remove(file)
print("***********************************************************************")
# 構(gòu)建pyd文件
def buildPyd():
os.system("python build_pyd.py build_ext --inplace")
# 重命名pyd文件
def renamePyd():
print("***********************************************************************")
for file in os.listdir():
if ".pyd" in file:
print("重新命名pyd:", file)
os.rename(file, file[:file.find(".")] + ".pyd")
for file in os.listdir():
if ".c" in file:
print("刪除.c文件:", file)
os.remove(file)
print("***********************************************************************")
# 執(zhí)行打包
def pyinstaller(key, ico):
os.system("pyinstaller -F --key {} -i {} main.py".format(key, ico))
# 刪除bulid和spec文件
def clearBuildAndSpec():
import shutil
shutil.rmtree('build')
print("刪除bulid文件夾")
os.remove("main.spec")
print("刪除spec文件")
if __name__ == '__main__':
clearPyd() # 清理舊pyd文件
buildPyd() # 構(gòu)建pyd文件
renamePyd() # 重命名pyd文件
pyinstaller(uuid.uuid4()[0:16], "1.ico") # 執(zhí)行打包
clearPyd() # 清理pyd文件
clearBuildAndSpec() # 刪除bulid和spec文件
總結(jié)
到此這篇關(guān)于Pyinstaller加密打包應(yīng)用的文章就介紹到這了,更多相關(guān)Pyinstaller加密打包內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實(shí)現(xiàn)常見坐標(biāo)系的相互轉(zhuǎn)換
WGS84坐標(biāo)系、GCJ02坐標(biāo)系、BD09坐標(biāo)系和Web?墨卡托投影坐標(biāo)系是我們常見的四個(gè)坐標(biāo)系。這篇文章為大家整理了這四個(gè)坐標(biāo)系之間相互轉(zhuǎn)換的方法,需要的可以參考一下2023-02-02
Python學(xué)習(xí)之a(chǎn)syncore模塊用法實(shí)例教程
這篇文章主要介紹了Python學(xué)習(xí)之a(chǎn)syncore模塊用法,主要講述了asyncore模塊的組成、原理及相關(guān)函數(shù)的用法,對于使用Python進(jìn)行網(wǎng)絡(luò)編程來說非常實(shí)用,需要的朋友可以參考下2014-09-09
Pygame游戲開發(fā)之太空射擊實(shí)戰(zhàn)碰撞改進(jìn)篇
相信大多數(shù)8090后都玩過太空射擊游戲,在過去游戲不多的年代太空射擊自然屬于經(jīng)典好玩的一款了,今天我們來自己動(dòng)手實(shí)現(xiàn)它,在編寫學(xué)習(xí)中回顧過往展望未來,在本課中,我們將討論如何更改?Pygame?處理精靈之間沖突的方式2022-08-08
Python彩色化Linux的命令行終端界面的代碼實(shí)例分享
美化Linux的terminal終端顯示的方法多種多樣,這里我們給出一個(gè)利用Python彩色化Linux的命令行終端界面的代碼實(shí)例分享,包括一個(gè)Linux下簡便執(zhí)行Python程序的方法,需要的朋友可以參考下2016-07-07
bpython 功能強(qiáng)大的Python shell
bpython是一個(gè)不錯(cuò)的Python解釋器的界面,本文帶著大家了解認(rèn)識(shí)一下bpython,感興趣的小伙伴們可以參考一下2016-02-02
Python實(shí)現(xiàn)數(shù)據(jù)濾波的示例詳解
這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)數(shù)據(jù)濾波的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-03-03
基于pygame實(shí)現(xiàn)童年掌機(jī)打磚塊游戲
這篇文章主要為大家詳細(xì)介紹了基于pygame實(shí)現(xiàn)童年掌機(jī)打磚塊游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-02-02

