![](/img/trans.png)
[英]Python: Concise way to toggle boolean “once” (i.e., in one direction)
[英]How to encrypt (one way i.e. irreversible is also fine) a python script which is still executable?
我有一個用Python編寫的AI程序。 我想在Ubuntu / Windows機器上部署腳本而不公開源腳本。 如何加密Python腳本,以便對其進行不可逆的編碼,但可以照常使用(例如,從終端調用python <script_name>.py
)?
首先,將python源文件編譯為代碼對象
迭代代碼對象,將每個代碼對象的字節碼包裝為以下格式
0 JUMP_ABSOLUTE n = 3 + len(bytecode) 3 ... ... Here it's obfuscated bytecode ... n LOAD_GLOBAL ? (__pyarmor__) n+3 CALL_FUNCTION 0 n+6 POP_TOP n+7 JUMP_ABSOLUTE 0
那些混淆的文件(.pyc或.pyo)可以通過普通的python解釋器以常規方式運行和導入。 但是,當第一次調用這些代碼對象時,根據上一節中描述的包裝字節碼,我們知道
第一個操作是JUMP_ABSOLUTE,它將跳轉到偏移量n
在偏移量n處,指令將調用PyCFunction。 此函數將在偏移量3和n之間恢復那些混淆的字節碼,並將原始字節碼放在偏移量0處
函數調用后,最后一條指令將跳轉到偏移量0。現在將執行實際的字節碼。
有一個Pyarmor工具可以通過這種方式混淆python腳本。
真正的加密實際上是不可能的,但是通過混淆和壓縮,任何人都很難理解或重用源代碼。 您可以看一下: https : //liftoff.github.io/pyminifier/
您也可以嘗試將python腳本編譯為字節碼,但是如果有人真的想對您的代碼進行反向工程,那么所有這些過程仍然是半可逆的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.