Python 代码加密、混淆、授权与运行时保护工具。
pip install -r requirements.txt
python setup.py install- 代码加密(AES-256)
- 代码混淆(变量、函数名、字符串、数字)
- 授权管理(到期、机器绑定、功能控制)
- 运行时保护(反调试、内存/CPU/虚拟机检测)
- 命令行工具
from babyarmor import encrypt_file
key = 'your-key-string' # 可用 base64 生成
encrypt_file('your_script.py', key=key)from babyarmor import obfuscate_file
obfuscate_file('your_script.py', level='high')from babyarmor import License
lic = License(expire_date='2024-12-31', machine_code='xxxx')
lic.save('license.lic')from babyarmor import RuntimeProtection
with RuntimeProtection():
# 受保护代码
passpython -m babyarmor.cli encrypt your_script.py -k your-key
python -m babyarmor.cli obfuscate your_script.py -l high如果遇到密钥不匹配或解密失败,可用如下脚本手动验证:
from cryptography.fernet import Fernet
with open('key.txt', 'r') as f:
key = f.read().strip()
with open('test_encrypt.py', 'rb') as f:
data = f.read()
fernet = Fernet(key.encode())
encrypted_data = fernet.encrypt(data)
with open('test_encrypt.py.encrypted', 'wb') as f:
f.write(encrypted_data)
print("文件已手动加密。")
with open('test_encrypt.py.encrypted', 'rb') as f:
encrypted_data = f.read()
decrypted_data = fernet.decrypt(encrypted_data)
print("解密后的内容:")
print(decrypted_data.decode('utf-8'))- 确认加密和解密用的密钥完全一致。
- 若手动加解密无误,说明 BabyArmor 的加密流程和密钥传递无误。
- 若 CLI 或自动化流程有问题,请检查参数传递和密钥读取。
- UnicodeDecodeError:请确保
setup.py读取README.md时加上encoding='utf-8'。 - 密钥不一致/解密失败:请严格比对加密和解密用的密钥内容。
- 运行时保护误报:部分虚拟机、调试环境可能被检测为不安全。
- 定期更换密钥,避免密钥泄露。
- 重要代码请做好备份。
- 生产环境建议开启所有保护和混淆选项。
如有问题请提交 issue 或联系作者。