KrishnanSG/codeenigma
GitHub: KrishnanSG/codeenigma
CodeEnigma 是一个轻量级的开源 Python 代码混淆工具,用于保护代码逻辑免受逆向工程和未授权访问。
Stars: 50 | Forks: 14

[](https://opensource.org/licenses/MIT)
[](https://pypi.org/project/codeenigma/)
[](https://github.com/astral-sh/ruff)
[](https://www.codefactor.io/repository/github/krishnansg/codeenigma)
[](https://pepy.tech/project/codeenigma)
[](https://github.com/KrishnanSG/codeenigma/actions)
[](https://github.com/KrishnanSG/codeenigma/actions/workflows/python-coverage-comment-action-data.yml)
一款用于 Python 代码混淆的轻量级开源工具。CodeEnigma 有助于保护您的逻辑免受逆向工程和未经授权的访问,从而确保安全分发您的 Python 应用程序。
## 🔒 为什么选择 CodeEnigma?
在广泛搜索免费开源的 Python 混淆工具后,我意识到大多数现有工具要么是付费的、闭源的,要么其工作方式不透明。让一个黑盒工具处理我的生产代码而不知道它具体在做什么,尤其当它能接触到敏感逻辑时,我感到不放心。
因此,我构建了 **CodeEnigma** —— 一个透明、自包含的解决方案,让您完全掌控混淆过程,没有隐藏逻辑,不涉及外部服务器。
本项目受 [PyArmor](https://pyarmor.dashingsoft.com/) 启发,但采用了不同的方法。
## 高层架构

CodeEnigma 的工作原理很简单:
1. 用户提供需要混淆的 Python 模块路径。
2. CodeEnigma 读取该模块的源代码。
3. 使用安全的随机数生成器生成一个 AES-256 密钥,并将其设置在 `private.py` 中。
4. 混淆过程按文件逐一执行以下步骤:
* 4.1. 使用 `compile(code, str(file_path), "exec")` 进行编译。
* 4.2. 使用 `zlib.compress(compiled_code)` 压缩字节码。
* 4.3. 使用 `base64.b64encode(compressed_code)` 编码压缩后的字节码。
* 4.4. 使用 `AESGCM(SECRET_KEY).encrypt(NONCE, obfuscated, associated_data=None)` 加密编码后的字节码。
_[更多详情请参阅](codeenigma/core.py)_:
5. CodeEnigma 创建一个包含混淆代码的新模块。
6. 生成一个 `codeenigma_runtime.pyx` 文件,包含反混淆逻辑,用于解密和执行混淆后的代码。
7. 使用 Cython 将该运行时编译成一个 Python 扩展模块。同时生成一个用于分发的 `codeenigma_runtime.whl` 文件。
8. 过程结束,混淆后的模块即可作为 wheel 文件分发。
## 功能特性
- 🔒 使用 AES-256 的强加密
- 🔄 简单的 API,用于混淆任意 Python 模块
- 🔑 安全动态的密钥生成
- 🛠️ 命令行界面,便于集成到构建流程中
- 📦 轻量且依赖最少
## 安装说明
使用 Poetry:
```
poetry add codeenigma
```
使用 pip:
```
pip install codeenigma
```
## 使用方法
CodeEnigma 配备了一个由 Typer 驱动、用户友好的命令行界面。该 CLI 提供有用的提示和丰富的输出。
### 基本用法
要混淆一个 Python 模块:
```
codeenigma obfuscate /path/to/your/module
```
### 命令行选项
- `--expiration`, `-e`: 为混淆后的代码设置过期日期 (YYYY-MM-DD)
- `--output`, `-o`, `--dist`: 指定输出目录 (默认为: 'dist')
- `--verbose`, `-v`: 显示详细输出
#### 示例
设置过期日期进行混淆:
```
codeenigma obfuscate /path/to/your/module -e "2025-12-31 23:59:59+0530"
```
指定自定义输出目录:
```
codeenigma obfuscate /path/to/your/module -o custom_output
```
### 版本信息
要检查已安装的版本:
```
codeenigma version
```
## 许可证
本项目基于 MIT 许可证授权 - 详情请参阅 [LICENSE](LICENSE) 文件。
## 致谢
- 使用 ❤️ 和 Python 构建
- 使用 [cryptography](https://cryptography.io/) 进行安全加密
- 使用 [Cython](https://cython.org/) 编译运行时
- 徽标致谢, Claude 🫡
标签:Golang, PyArmor替代, Python代码混淆, SOC Prime, 二进制发布, 代码加密, 代码安全, 安全分发, 安全编程, 开发工具, 开源工具, 漏洞枚举, 软件保护, 轻量级工具, 逆向工具, 逆向工程防护, 透明混淆