Intensio-Obfuscator
项目不再维护
感谢所有贡献者

这是什么?
- Intensio-Obfuscator 工具接受 Python 源代码并将其转换为混淆后的 Python 代码
- 替换所有
变量/类/函数/文件名 的名称,改为指定长度的随机字符串,然后将所有 字符 转换为十六进制
- 删除所有
注释、所有 空行
- 填充随机
代码片段/函数/类,每次使用不同的值
目的?
- 提供高级混淆层,以防止或延迟对 Python 程序的阅读和理解
混淆级别
要求
- Python >= 3.5
- requirements.txt
支持的文件
- 使用 Python 2.x 和 3.x 编写的文件
安装
$ git clone https://github.com/Hnfull/Intensio-Obfuscator.git
$ python3 -m pip install -r Intensio-Obfuscator/requirements.txt
$ cd Intensio-Obfuscator/src/intensio_obfuscator
$ python3 intensio_obfuscator.py --help
$ python3 -m pip install intensio-obfuscator
$ intensio_obfuscator --help
功能
| 功能 | 描述 | 混淆目的 | 兼容所有类型的 Python 代码/语法 |
|---|
| 删除注释 | 删除所有注释(此功能默认执行) | 删除潜在的行为信息 | 高 python 文件 2 & 3 |
| 删除空行 | 删除所有空行(此功能默认执行) | 降低代码可见性 | 高 python 文件 2 & 3 |
| 修正填充空类/函数 | 对空类和函数添加填充,如果类或函数只包含注释,默认功能 删除注释 可能使其变为空,从而避免产生错误(此功能默认执行) | 无,仅为避免产生错误 | 高 python 文件 2 & 3 |
| 字符串替换为混合字符串 | 将所有变量/类/函数的名称替换为指定长度的随机字符串 | 降低代码可见性 - 延迟推断变量/类/函数的行为 | 低 - 高(取决于需要排除的名称数量)python 文件 2 & 3 |
| 排除词汇 | 用于排除词汇的文件(格式请查看文档),仅用于 替换文件名 混淆功能 | 无需信息 | 无需信息 |
| 填充脚本 | 在每行后添加随机脚本填充 | 降低代码可见性 - 添加无用代码/类/函数以模糊和延迟程序行为分析 | 高 python 文件 2 & 3 |
| 替换文件名 | 将所有文件名替换为指定长度的随机字符串 | 降低代码可见性 - 降低推断文件功能的可能性 | 低 python 文件 2 & 3 |
| 排除文件名 | 用于排除文件名的文件(格式请查看文档),仅用于 替换文件名 混淆功能 | 无需信息 | 无需信息 |
| 字符串替换为十六进制 | 将所有字符转换为十六进制值 | 降低代码可见性 / 避免被例如 grep 命令检测到 | 中 仅 python 文件 2 |
| 修正删除 pyc 文件 | 删除输出目录中的所有 pyc 文件(此功能默认执行) | 删除未进行混淆预编译的文件 | 高 python 文件 2 & 3 |
| 混淆长度-低 | 当指定 -rts, --replacetostr 或 -ps, --paddingscripts 或 -rfn, --replacefilesname 或 -rth, --replacetohex 参数时,定义随机字符串长度为 32 个字符 | 长度越长,代码可见性越难 | 无需信息 |
| 混淆长度-中 | 当指定 -rts, --replacetostr 或 -ps, --paddingscripts 或 -rfn, --replacefilesname 或 -rth, --replacetohex 参数时,定义随机字符串长度为 64 个字符 | 长度越长,代码可见性越难 | 无需信息 |
| 混淆长度-高 | 当指定 -rts, --replacetostr 或 -ps, --paddingscripts 或 -rfn, --replacefilesname 或 -rth, --replacetohex 参数时,定义随机字符串长度为 128 个字符 | 长度越长,代码可见性越难 | 无需信息 |
- 功能可以单独执行:
replace string to string mixed -> -rts, --replacetostr
padding script -> -ps, --paddingscript
replace file name -> -rfn, --replacefilename
replace string to hex -> -rth, --replacetohex
用法
- 使用 Intensio-Obfuscator 工具前请先阅读以下文档!
- 某些类型的模式不受支持
| 参数 | 描述 |
|---|
| -h, --help | 显示此帮助信息并退出 |
| -i, --input | 源目录 - 指定包含文件的目录 |
| -o, --output | 输出目录(将包含混淆后的文件)- 指定一个空目录用于存放文件 |
| -mlen, --mixerlength | 当指定 --replacetostr 或 --paddingscripts 或 -rfn, --replacefilesname 或 --replacetohex 功能时,定义生成的随机字符串长度 [lower:32|medium:64|high:128] 字符,可能的值: [lower|medium|high] |
| -ind, --indent | 指示 Python 源代码的缩进,可能的值: [2|4|8] |
| -rts, --replacetostr | 启用 replace string to string mixed 混淆功能 |
| --excludewords | 用于排除特定词汇的文件(格式请查看文档),仅用于 -rts, --replacetostr 混淆功能 |
| -ps, --paddingscript | 启用 padding script 混淆功能 |
| -rfn, --replacefilename | 启用 replace file name 混淆功能 |
| --excludefiles | 用于排除文件名的文件(格式请查看文档),仅用于 -rfn, --replacefilename 混淆功能 |
| -rth, --replacetohex | 启用 replace string to hex 混淆功能 (仅适用于 Python 2 文件) |
| --version | 检查当前版本 |
| -v, --verbose | 提高输出详细程度 |
混淆示例
待办事项
许可证
联系方式
免责声明
- Intensio-Obfuscator 仅用于教育/研究目的。作者不对您选择如何使用所提供的任何工具承担任何责任。