Skip to content

obaby/BabyArmor

Repository files navigation

BabyArmor

Python 代码加密、混淆、授权与运行时保护工具。

安装

pip install -r requirements.txt
python setup.py install

主要功能

  • 代码加密(AES-256)
  • 代码混淆(变量、函数名、字符串、数字)
  • 授权管理(到期、机器绑定、功能控制)
  • 运行时保护(反调试、内存/CPU/虚拟机检测)
  • 命令行工具

快速开始

1. 代码加密

from babyarmor import encrypt_file
key = 'your-key-string'  # 可用 base64 生成
encrypt_file('your_script.py', key=key)

2. 代码混淆

from babyarmor import obfuscate_file
obfuscate_file('your_script.py', level='high')

3. 授权管理

from babyarmor import License
lic = License(expire_date='2024-12-31', machine_code='xxxx')
lic.save('license.lic')

4. 运行时保护

from babyarmor import RuntimeProtection
with RuntimeProtection():
    # 受保护代码
    pass

5. 命令行工具

python -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 或联系作者。

About

参考pyarmor 的逻辑,实现的简单的 python 加密工具

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages