1:如下是加密方法利用python的编译包将Py文件 与pyc 文件之间相互转换,
这种方式不太安全, 反编译成本太低
1 import os 2 3 4 class EncryptionProject: 5 6 def __init__(self, file_path, file_type): 7 self.filepath = file_path 8 # 文件类型 9 self.filetype = file_type 10 11 def read_project(self): 12 # 文件所在路径 13 filepath = os.getcwd() + self.filepath 14 encry_list = [] 15 for dirpath, dirnames, files in os.walk(filepath): 16 if len(files) > 0: 17 for i in files: 18 if len(i) > 0: 19 if i.split(".")[1] == self.filetype: 20 encry_list.append(dirpath + "\\" + i) 21 else: 22 if len(files) > 0: 23 if files.split(".")[1] == self.filetype: 24 encry_list.append(dirpath + "\\" + files) 25 return encry_list 26 27 # 批量将 文件夹py 文件编译为pyc 文件 28 def py_pyc(self): 29 import py_compile 30 encry_list = self.read_project() 31 for i in encry_list: 32 py_compile.compile(i) 33 return "加密成功" 34 35 # 批量将 文件夹pyc 文件编译为py 文件 36 def pyc_py(self): 37 import uncompyle6 38 encry_list = self.read_project() 39 for i in encry_list: 40 uncompyle6.decompile_file(i) 41 return "反编译成功" 42 43 # 批量将 文件夹py 文件编译为.c 文件 44 def py_c(self): 45 from distutils.core import setup 46 from Cython.Build import cythonize 47 encry_list = self.read_project() 48 for i in encry_list: 49 setup(ext_modules=cythonize([i])) 50 return "加密成功" 51 52 53 if __name__ == "__main__": 54 file_path = "\\test\CIA_Test01" 55 file_type = 'py' 56 result = EncryptionProject(file_path, file_type).py_c() 57 print(result)
2: python 有一个第三方库 jmpy3对上述流程进行了优化,支持单个文件和整个项目进行编译,
使用起来更加友好,加密生成pyd 文件,反编译成本极高