PyEncryptFixer 是一个用于解决自动加密 .py 文件导致的执行错误的自动化脚本,可用于处理DGS加密的”.py“文件。由于某些加密工具可能会导致 .py 文件无法正常执行,PyEncryptFixer 通过模拟用户操作,将加密后的 .py 文件转换为可执行的 _py 文件格式,并提供恢复功能,将文件改回原始的 .py 格式。
在没有加密的电脑打开了是乱码
- 自动查找并点击 UI 元素: 使用图像识别技术自动定位并点击 Notepad++ 中的特定 UI 元素。
- 文件格式转换: 将加密后的
.py文件另存为_py文件,确保文件能够正常执行。 - 删除原始文件: 转换成功后,自动删除原始的加密
.py文件。 - 恢复功能: 提供恢复功能,将
_py文件改回原始的.py文件格式。
在开始使用 PyEncryptFixer 之前,请确保您的系统满足以下要求:
- 操作系统: Windows(由于使用了 Notepad++ 和 PyAutoGUI)
- 安装的软件:
- Python 依赖库:
opencv-pythonpyautoguinumpy(可选,用于图像处理)
首先,克隆本仓库到您的本地计算机:
git clone https://github.com/xty00/PyEncryptFixer.git
cd PyEncryptFixer建议使用 虚拟环境 来管理项目的依赖:
# 创建虚拟环境(可选)
python -m venv venv
# 激活虚拟环境
# Windows:
venv\Scripts\activate
# 安装依赖
pip install -r requirements.txt如果您没有使用虚拟环境,可以直接安装依赖:
pip install opencv-python pyautogui确保在 fixpyfile 文件中,notepadpp_path 变量指向您的 Notepad++ 安装路径。例如:
notepadpp_path = r"C:\Program Files\Notepad++\notepad++.exe"如果您的 Notepad++ 安装在其他路径,请相应地修改。
有的电脑在加密后特定快捷键存在冲突现象,我的就是这种情况,所以修改了 Notepad++ “另存为”的默认快捷键。请确保在 fixpyfile 文件中,“另存为”的快捷键定义与 Notepad++ 中一致,如不一致请修改 fixpyfile 文件相关定义,如将下列位置
# 模拟按下 Ctrl + Shift + S 打开“另存为”对话框
pyautogui.hotkey('ctrl', 'shift', 's')
time.sleep(1) # 等待对话框出现替换为
# 模拟按下 Ctrl + Alt + S 打开“另存为”对话框
pyautogui.hotkey('ctrl', 'alt', 's')
time.sleep(1) # 等待对话框出现或者调整 Notepad++ 中快捷键的配置,修改位置如下:
在 Notepad++ 上方快捷菜单点击【运行(R)】,选择【管理快捷键...】,在【快捷键管理】弹出窗切换至【主菜单】标签页,双击【另存为(A)...】,在弹出窗勾选需要调整的快捷键如 CTRL + SHIFT + S,修改完毕后点击【确定】进行保存,当出现快捷键冲突时将冲突的快捷键调整成其他内容,如“全部保存(E)”存在冲突,则将其快捷键调整为 CTRL + ALT + S。
PyEncryptFixer 使用图像识别来定位 UI 元素。您需要提供以下模板图片,并将其放在 templates 文件夹中:
file_type_dropdown.png: 文件类型下拉菜单的截图。all_types_template.png: “所有文件类型”选项的截图。
确保这些图片与实际 UI 元素匹配,以提高识别精度。
主文件名为 fixpyfile ,没有加 .py 后缀,不影响运行 在项目根目录下,运行以下命令启动转换过程:
python fixpyfile脚本将执行以下操作:
- 遍历当前文件夹中的所有
.py文件。 - 使用 Notepad++ 打开每个文件。
- 按
Ctrl + Shift + S打开“另存为”对话框。 - 选择“所有文件类型”并保存为
_py文件。 - 删除原始的
.py文件。 - 关闭 Notepad++ 窗口。
如果您需要将 _py 文件恢复为 .py 文件,可以取消注释 revert_files() 函数并运行脚本:
if __name__ == "__main__":
convert_files()
revert_files() # 取消注释以启用恢复功能或者,您可以单独运行恢复功能:
python fixpyfile然后在代码中调用 revert_files() 函数。
PyEncryptFixer/
│
├── fixpyfile #主文件1,用于改名解密
├── revert_files.bat #主文件2,用于恢复文件名.py
├── cklock.ps1 #主文件3,用于检查并反馈被查文件加密情况
├── requirements.txt #虚拟环境依赖配置文件
├── test.py #已被加密的测试文件
├── test.ps1 #加密情况预览脚本,用于评估当前文件夹中可识别的文件加密情况
├── templates/ #模板文件夹
│ ├── file_type_dropdown.png #用于确认文件类型下拉菜单的位置,可以根据电脑的实际情况进行重新截屏及替换操作,文件名一致即可
│ └── all_types_template.png #用于确认已选中文件类型“All Type(*.*)”,可以根据电脑的实际情况进行重新截屏及替换操作,文件名一致即可
|── img/ #其他补充说明截屏文件夹
├── README.md #此说明文件
└── LICENSE #协议
- 备份文件: 在运行脚本之前,建议备份您的
.py文件,以防止意外的数据丢失。 - UI 元素匹配: 图像识别依赖于模板图片的准确性。请确保提供的模板图片与实际 UI 元素完全匹配。
- 权限: 运行脚本时,请确保具有对目标文件夹和文件的读写权限。
- 依赖库版本: 使用与项目兼容的 Python 版本和依赖库版本,以避免潜在的兼容性问题。
以下是一个简单的使用示例:
# 激活虚拟环境
venv\Scripts\activate
# 运行转换脚本
python fixpyfile测试解密后的python脚本:
python test.py欢迎提出问题(Issues)和拉取请求(Pull Requests)。如果您在使用过程中遇到任何问题或有任何改进建议,请随时在 Issues 页面中提出。
该项目采用 MIT 许可证。详细信息请参见 LICENSE 文件。
- 图像识别: 由于脚本依赖于图像识别,确保在不同的操作系统和屏幕分辨率下,模板图片的匹配度足够高。如果匹配失败,可以尝试调整
threshold参数或提供更高质量的模板图片。 - 日志记录: 脚本中包含基本的打印语句,用于跟踪脚本的执行过程。您可以根据需要添加更详细的日志记录功能。
- 扩展功能: 如果需要处理子文件夹中的文件,可以调整
folder_path变量或修改os.walk的使用方式。


