- 模块名称: **_Lock
- 版本: 2.0
- 产品: Comfyui_**_Lock_2025
- 作者: **
- Python 版本: 3.10/3.11
- PyArmor 版本: 9.1.7 (pro)
- 序列号: *****
函数: pyarmor__4()
功能说明:
- 生成唯一的机器标识符(机器指纹)
- 使用硬件 UUID 作为基础数据
- 通过 SHA256 哈希生成最终 ID
实现细节:
# Windows 系统
- 使用 WMI 接口获取 Win32_ComputerSystemProduct.UUID
- 需要安装 pythoncom 和 wmi 模块
# Linux 系统
- 读取 /sys/class/dmi/id/product_uuid 文件
- 直接获取系统 DMI UUID
# 最终生成
machine_id = sha256(uuid + 'comfyui_salt').hexdigest()函数: pyarmor__5(license_key, admin_uuid, authorized_workflow)
API 端点: *****/api/validate
请求参数:
{
"license_key": "许可证密钥",
"machine_id": "机器唯一标识",
"embedded_admin_uuid": "管理员UUID(可选)",
"embedded_authorized_workflow": "授权工作流(可选)"
}功能特性:
- ✅ 验证许可证合法性
- ✅ 绑定机器ID(防止跨机器使用)
- ✅ 支持嵌入式授权信息
- ✅ 结果缓存机制(避免重复验证)
- ✅ 重试机制(最多3次)
返回值:
(bool, str) # (验证是否成功, 错误消息)函数: pyarmor__3(license_key)
API 端点: *****/api/log_password_error
功能说明:
- 记录密码解密失败事件
- 服务器端错误次数统计
- 错误次数限制机制(防止暴力破解)
请求参数:
{
"machine_id": "机器唯一标识",
"error_type": "password_decrypt_failed",
"license_key": "许可证密钥(可选)"
}响应数据:
{
"restricted": false, // 是否被限制
"error_count": 0 // 错误次数
}函数:
pyarmor__1()- 清理缓存pyarmor__2()- 定时清理线程
工作机制:
# 每 12 小时自动执行一次清理
while True:
time.sleep(43200) # 12小时 = 43200秒
清空授权缓存
清空其他缓存
通知 ComfyUI 释放内存清理内容:
pyarmor__81- 授权验证缓存pyarmor__82- 其他缓存数据- ComfyUI 的 prompt_queue 内存
os- 文件和路径操作json- JSON 数据处理hashlib- SHA256 哈希platform- 平台检测threading- 多线程time- 时间操作
requests- HTTP 请求numpy- 数值计算cryptography- 加密功能Cipher- 加密器a**orithms- 加密算法modes- 加密模式Fernet- Fernet 加密
server.PromptServer- ComfyUI 服务器aiohttp.web- Web 框架folder_paths- 路径管理comfy.sd- Stable Diffusioncomfy.utils- 工具函数
pythoncom- COM 接口wmi- Windows 管理接口
- 每个许可证绑定到特定机器
- 通过硬件 UUID 生成唯一标识
- 防止许可证在多台机器上使用
- 实时向服务器验证许可证
- 服务器端控制授权状态
- 可远程撤销授权
- 记录密码解密失败次数
- 达到阈值后限制访问
- 防止暴力破解
- 验证结果本地缓存
- 减少网络请求
- 提高响应速度
| 变量名 | 类型 | 说明 |
|---|---|---|
pyarmor__70 |
str | 作者标识: '**' |
pyarmor__71 |
str | 模块名称: '**_Lock' |
pyarmor__72 |
str | 节点描述: '运行节点' |
pyarmor__73 |
str | 版本号: '2.0' |
pyarmor__74 |
str | 版本号备份: '2.0' |
pyarmor__75 |
str | 产品名称: 'Comfyui_**_Lock_2025' |
pyarmor__76 |
str | 模块根目录路径 |
pyarmor__77 |
str | 验证 API: 'https://****/api/validate' |
pyarmor__78 |
str | 错误日志 API: 'https://****/api/log_password_error' |
pyarmor__79 |
str | 许可证文件: 'license.json' |
pyarmor__80 |
str/None | 缓存的机器ID |
pyarmor__81 |
dict | 授权验证缓存 |
pyarmor__82 |
dict | 其他缓存 |
pyarmor__83 |
bool | 内存清理标志 |
pyarmor__84 |
bool | 错误限制标志 |
1. 用户输入许可证密钥
↓
2. 获取机器唯一标识 (pyarmor__4)
↓
3. 检查本地缓存 (pyarmor__81)
├─ 命中 → 返回缓存结果
└─ 未命中 ↓
4. 构建验证请求
↓
5. 发送到验证 API (pyarmor__77)
├─ 成功 → 缓存结果 → 返回成功
├─ 失败 → 重试 (最多3次)
└─ 错误 → 记录错误 (pyarmor__3) → 返回失败
1. 密码解密失败
↓
2. 调用 pyarmor__3(license_key)
↓
3. 检查是否已被限制 (pyarmor__84)
├─ 已限制 → 直接返回
└─ 未限制 ↓
4. 获取机器ID
↓
5. 发送到错误日志 API (pyarmor__78)
↓
6. 接收响应
├─ restricted=True → 设置限制标志
└─ restricted=False → 返回错误次数
⚠️ 反编译代码可能不完整⚠️ 部分逻辑存在缺失或错误⚠️ 变量名已被混淆 (pyarmor__XX)- ✅ 建议参考反汇编文件 (.das) 获取完整信息
- 🔒 许可证密钥通过 HTTPS 传输
- 🔒 机器ID 使用 SHA256 哈希
- 🔒 支持错误次数限制
⚠️ 本地缓存可能存在安全风险
⚠️ 需要网络连接进行在线验证⚠️ Windows 系统需要 WMI 模块⚠️ 依赖外部 API 服务器可用性
├── **_lock.py # 原始混淆文件 (397KB)
├── **_lock.py.1shot.cdc.py # 反编译源代码 (8.4KB)
├── **_lock_annotated.py # 中文注释版本
├── README_CN.md # 本文档
└── pyarmor_runtime_007687/ # PyArmor 运行时
├── __init__.py
└── windows_x86_64/
└── pyarmor_runtime.pyd
- 工具: PyArmor 9.1.7 (pro)
- 方法: 字节码加密 + 名称混淆
- 强度: 高级混淆,包含运行时保护
- AES 密钥:
******** - AES Nonce:
******** - 盐值:
comfyui_salt
- 域名:
**** - 协议: HTTPS
- 端点:
/api/validate- 授权验证/api/log_password_error- 错误记录
生成时间: 2025-10-12 反编译工具: Pyarmor-Static-Unpack-1shot v0.2.1 分析者: AI Assistant