58 lines
1.8 KiB
Python
58 lines
1.8 KiB
Python
from module_bank import PythonToSQLite
|
|||
|
|
|
||
|
|
with open("./dual_protection_/encryption_key.txt") as f:
|
||
|
|
key = f.read()
|
||
|
|
|
||
|
|
packer = PythonToSQLite(
|
||
|
|
"./dual_protection_/protected_modules.db",
|
||
|
|
key=key,
|
||
|
|
pyarmor_obfuscate=True,
|
||
|
|
pyarmor_obf_code=1,
|
||
|
|
pyarmor_obf_mod=1,
|
||
|
|
)
|
||
|
|
|
||
|
|
packer.install_importer()
|
||
|
|
|
||
|
|
import payment_system # type: ignore
|
||
|
|
|
||
|
|
mod = payment_system
|
||
|
|
print(f" ✓ 模块导入成功: {mod}")
|
||
|
|
print(f" 模块文件: {mod.__file__}")
|
||
|
|
|
||
|
|
# ========== 步骤 6: 验证模块功能正常 ==========
|
||
|
|
print("\n[步骤 5/5] 验证模块功能...")
|
||
|
|
|
||
|
|
# 调用验证许可证函数
|
||
|
|
result = mod.verify_license("TEST-1234-5678")
|
||
|
|
print(f" verify_license('TEST-1234-5678') → {result}")
|
||
|
|
|
||
|
|
# 调用佣金计算
|
||
|
|
commission = mod.calculate_commission(10000.0, 3)
|
||
|
|
print(f" calculate_commission(10000, 3) → ¥{commission}")
|
||
|
|
|
||
|
|
# 使用支付处理器
|
||
|
|
processor = mod.PaymentProcessor("MERCHANT_001")
|
||
|
|
payment_result = processor.process("ORDER_20260504", 299.00)
|
||
|
|
print(f" PaymentProcessor.process() → {payment_result['status']}")
|
||
|
|
print(f" 交易ID: {payment_result['transaction_id']}")
|
||
|
|
|
||
|
|
# 访问模块常量
|
||
|
|
print(f"\n 模块版本: {mod.VERSION}")
|
||
|
|
print(f" 构建日期: {mod.BUILD}")
|
||
|
|
|
||
|
|
# ========== 安全验证 ==========
|
||
|
|
print("\n" + "=" * 70)
|
||
|
|
print("安全验证")
|
||
|
|
print("=" * 70)
|
||
|
|
print("""
|
||
|
|
1. PyArmor 混淆: 源代码已转换为不可读的混淆代码
|
||
|
|
2. AES 加密: 字节码已使用 AES-128-CBC 加密
|
||
|
|
3. 运行时保护: PyArmor 运行时二进制文件无法直接加载
|
||
|
|
4. 双重解密: 需要先 AES 解密 → 再通过 PyArmor 运行时执行
|
||
|
|
|
||
|
|
即使有人获取了数据库文件:
|
||
|
|
- 没有 AES 密钥 → 无法解密字节码
|
||
|
|
- 没有 PyArmor 运行时 → 无法执行混淆代码
|
||
|
|
- 两者同时具备 → 才能解密和执行
|
||
|
|
""")
|