本文參考如何保護你的 Python 程式碼對其想法進行實現。
原始碼地址:spython@github
rayencry
使用AES演算法對指定目錄中的Python原始碼加密。
由於Python爲解釋形語言,原始碼直接暴漏在生產環境中,爲了防止Python原始碼泄露造成不必要安全問題,可以改造Python直譯器用於執行加密後的python程式碼。
目錄 | 描述 |
---|---|
doc | 文件 |
src | 原始碼 |
configure.json | 組態檔例子 |
install.sh | 安裝指令碼 |
uninstall.sh | 解除安裝指令碼 |
Makefile | Makefile |
rayencry依賴libssl
庫,使用如下兩種方法安裝libssl
均可:
apt install libssl-dev
decrypt_file.c
中的AES密匙和AES的cbc向量。注意:均爲128位元。sudo make
編譯sudo make install
或者執行指令碼install.sh
安裝sudo make uninstall
或者執行指令碼uninstall.sh
解除安裝sudo make clean
清除編譯結果configure.json
檔案:{
"select":"/home/src",
"except":[
"except_file.py",
"except_directory"
],
"archive":"/home/src_en"
}
屬性 | 必要性 | 型別 | 描述 |
---|---|---|---|
select |
必選 | string |
需要加密的原始碼目錄 (只能是目錄)。請使用絕對地址。 |
except |
可選 | array |
需要在加密檔案中排除的目錄 或者路徑 。請使用相對地址。 |
archive |
必選 | string |
解密目錄 名字。請使用絕對地址。 |
rayencry <config file>
僅針對Python-2.7.15
)下載Python-2.7.15直譯器的原始碼並對其進行如下的修改以執行加密的Python原始碼:
推薦使用aliyun映象下載python原始碼
複製檔案./src/Python/decrypt_file_acs.c
到Python-2.7.15/Python
中
複製檔案./src/Include/decrypt——fileacs.h
到Python-2.7.15/Python
中
Module/main.c
------------
...
- 609 if ((fp = fopen(filename, "r")) == NULL) {
+ 609 if ((fp = d_open(filename, "r")) == NULL) {
...
Python/import.c
------------
...
-1579 fp = fopen(buf, filemode);
+1579 fp = d_open(buf, filemode);
...
.pyc
檔案由於開發者可以通過.pyc
反編譯出python原始碼,所以需要禁用生成.pyc
檔案
Module/main.c
------------
...
+ 445 Py_DontWriteBytecodeFlag++;
...
Python/pythonrun.c
------------
...
- 194 if ((p = Py_GETENV("PYTHONDONTWRITEBYTECODE")) && *p != '\0')
- 195 Py_DontWriteBytecodeFlag = add_flag(Py_DontWriteBytecodeFlag, p);
...
./Objects/codeobject.c
------------
...
- 205 {"co_code", T_OBJECT, OFF(co_code), READONLY},
...
Makefile需要鏈接libssl
庫,生成decrypt_source_file.o
./Makefile.pre.in
------------
...
- 188 SYSLIBS= $(LIBM) $(LIBC)
+ 188 SYSLIBS= $(LIBM) $(LIBC) -lcrypto -lssl
...
295 ##########################################################################
296 PYTHON_OBJS= \
+ 297 Python/decrypt_source_file.o \
298 Python/_warnings.o \
299 Python/Python-ast.o \
...
752 ############################################################################
753 # Header files
754
755 PYTHON_HEADERS= \
+ 756 Include/decrypt_source_file.h \
757 Include/Python-ast.h \
758 Include/Python.h \
759 Include/abstract.h \
...
sudo ./configure --prefix=$PREFIX
sudo make
sudo make install
萬炳江@echoechoin
Email: [email protected]
QQ: 614699596