Codeenigma
A lightweight, open-source tool for Python code obfuscation. CodeEnigma helps protect your logic from reverse engineering and unauthorized access, making it a practical alternative to PyArmor for securely distributing your Python applications.
A lightweight, open-source tool for Python code obfuscation. CodeEnigma helps protect your logic from reverse engineering and unauthorized access, making it secure to distribute your Python applications. The project is written primarily in Python, distributed under the MIT License license, first published in 2025. Key topics include: alternative, code-obfuscation, foss, pyarmor, python.
A lightweight, open-source tool for Python code obfuscation. CodeEnigma helps protect your logic from reverse engineering and unauthorized access, making it secure to distribute your Python applications.
๐ Why CodeEnigma?
After searching extensively for a free and open-source Python obfuscation tool, I realized that most available options were either paid, closed-source, or opaque in how they worked. I wasn't comfortable letting a black-box tool obfuscate my production code without knowing exactly what it was doing โ especially when it had access to sensitive logic.
So I built CodeEnigma โ a transparent, self-contained solution that gives you full control over the obfuscation process, with no hidden logic and no external servers involved.
This project is inspired by PyArmor but with a different approach.
High Level Architecture
The working principle of CodeEnigma is simple:
- The user provides the path to the Python module to obfuscate.
- CodeEnigma reads the module's source code.
- An AES-256 key is generated using a secure random number generator and set in
private.py - Obfuscation runs file by file running the following steps:
- 4.1. Compile using
compile(code, str(file_path), "exec") - 4.2. Compress the byte code using
zlib.compress(compiled_code) - 4.3. Encode the compressed byte code using
base64.b64encode(compressed_code) - 4.4. Encrypt the encoded byte code using
AESGCM(SECRET_KEY).encrypt(NONCE, obfuscated, associated_data=None)
refer for more details:
- 4.1. Compile using
- CodeEnigma creates a new module with the obfuscated code.
- A codeenigma_runtime.pyx file is created with the deobfuscation logic to decrypt and execute the obfuscated code.
- The runtime is compiled to a Python extension module using Cython. Also generates a codeenigma_runtime.whl file for distribution.
- End of process, the obfuscated module is ready to be distributed as wheel files.
Features
- ๐ Strong encryption using AES-256
- ๐ Simple API for obfuscating any python module
- ๐ Secure and dynamic key generation
- ๐ ๏ธ Command-line interface for easy integration into build processes
- ๐ฆ Lightweight and dependency-minimal
Installation
Using Poetry:
bashpoetry add codeenigma
Using pip:
bashpip install codeenigma
Usage
CodeEnigma comes with a user-friendly command-line interface powered by Typer. The CLI provides helpful prompts and rich output.
Basic Usage
To obfuscate a Python module:
bashcodeenigma obfuscate /path/to/your/module
Command Line Options
--expiration,-e: Set an expiration date for the obfuscated code (YYYY-MM-DD)--output,-o,--dist: Specify output directory (default: 'dist')--verbose,-v: Show detailed output
Examples
Obfuscate with an expiration date:
The following example will obfuscate the module and set the expiration date to December 31, 2025, at 23:59:59+0530 (IST).
bashcodeenigma obfuscate /path/to/your/module -e "2025-12-31 23:59:59+0530"
Specify custom output directory:
bashcodeenigma obfuscate /path/to/your/module -o custom_output
Version Information
To check the installed version:
bashcodeenigma version
Contributing
Contributions are welcome! This is a complete free and open-source project. If you have any suggestions or find any bugs, please open an issue.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
- Built with โค๏ธ using Python
- Uses cryptography for secure encryption
- Uses Cython for compiling the runtime
- Logo Credits, Claude ๐ซก
Contributors
Showing top 1 contributor by commit count.
