您好,登錄后才能下訂單哦!
這篇文章主要講解了“python代碼的常見加密方式是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“python代碼的常見加密方式是什么”吧!
Python的文件類型介紹:
.py python的源代碼文件
.pyc Python源代碼import后,編譯生成的字節碼
.pyo Python源代碼編譯優化生成的字節碼。pyo比pyc并沒有優化多少,只是去掉了斷言
.pyd Python的動態鏈接庫(Windows平臺)
.so
常見的源碼保護手段有如下幾種:
pyc文件是py文件經過編譯后生成的二進制文件,python提供py_compile內置模塊把py文件編譯為pyc文件,得到的.pyc文件可以直接運行python xxx.pyc
.pyc只能在特定版本的解釋器上運行
mian.py
def spread(arg): ret = [] for i in arg: if isinstance(i, list): ret.extend(i) else: ret.append(i) return ret def deep_flatten(lst): result = [] result.extend( spread(list(map(lambda x: deep_flatten(x) if type(x) == list else x, lst)))) return result print(deep_flatten([1, [2], [[3], 4], 5]))
編譯指令:
python -m py_compile main.py
python -m compileall main.py
批量
pyc加密現成的反編譯工具,可以反編譯得到源代碼.
使用uncompyle庫進行反編譯
可逆
測試:
pip install uncompyle uncompyle6 main.cpython-38.pyc > main.py
不影響使用
# coding=utf-8 # 調用模塊main from main import deep_flatten print(deep_flatten([1, [2], [[3], 4], 5]))
在線工具
1.1 降低代碼可讀性
1.2 不影響模塊之間調用
使用py2exe
py2exe是將Python代碼轉換為 Windows 平臺上的可執行文件的工具,只能在windos上使用,原理是譯為 .pyc 文件,加上一些動態連接依賴文件,一起打包成一個可執行文件。
pip install py2exe
需要編寫setup.py文件:
#!/usr/bin/env python from distutils.core import setup import py2exe setup(console=[f'E:\_Py_Project\leanPy\work\代碼加密\main1.py'])
然后執行 python setup.py py2exe
1.1 是否可逆
不可逆
1.2 是否影響模塊調用
不影響
生成使用 Cython
它的原理:將 .py/.pyx 編譯為 .c文件,再將 .c文件編譯為 .so(Unix) 或 .pyd(Windows)
pip install Cython
setup.py
from distutils.core import setup from Cython.Build import cythonize setup(name='main1', ext_modules=cythonize(f'E:\_Py_Project\leanPy\work\代碼加密\main1.py'))
python setup.py build_ext
在windos下生成.pyd文件
測試 .pyd文件,把mian1.py刪除,把.pyd文件移動到.py原來目錄下
在linux下生成.so文件
測試:
1.1 是否可逆:
不可逆
1.2 是否影響模塊調用
不影響
PyArmor
pip install pyarmor==6.8.1
pyarmor obfuscate main.py
同目錄下所有的 *.py文件都會被加密
超級模式只需要一個運行輔助文件,沒有了所謂的引導代碼
pyarmor obfuscate --advanced 2 .\main1.py
高級 + 虛擬
pyarmor obfuscate --advanced 3 .\main1.py
超級 + 虛擬
pyarmor obfuscate --advanced 4 .\main1.py
輔助文件和編譯文件
幾種加密方式對比:
感謝各位的閱讀,以上就是“python代碼的常見加密方式是什么”的內容了,經過本文的學習后,相信大家對python代碼的常見加密方式是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。