DLT高频红球统计工具 - 注册激活指南
📋 目录
注册系统概述
功能特点
DLT高频红球统计工具采用先进的License SDK注册系统,具有以下特点:
✅ 硬件绑定 - 基于计算机硬件信息生成唯一设备ID
✅ 加密保护 - 使用RSA 2048位非对称加密
✅ 防篡改 - 数字签名验证授权文件完整性
✅ 多重防护 - 试用期记录+系统指纹+文件监控
✅ 灵活授权 - 支持本地文件和FTP服务器双重验证
授权文件结构
registration/
├── keys/
│ └── public_key.pem # RSA公钥(验证签名)
└── licenses/
└── LICENSE_*.json # 授权文件(数字签名)
试用模式
试用期
- 时长:7天免费试用
- 功能:试用期间可使用全部功能
- 限制:试用期结束后需要激活
试用期计算
系统通过多种方式记录试用期开始时间,防止通过删除文件绕过:
- 文件记录 -
registration/state.json - 系统指纹 - 注册表或隐藏文件(可选)
- 时间戳 - 首次启动时间(加密存储)
试用状态显示
试用期状态:剩余 X 天
- 剩余7天:绿色显示
- 剩余3天:黄色警告
- 剩余1天:红色警告
- 已过期:红色提示"试用期已使用"
激活流程
第一步:获取设备ID
- 启动软件
- 点击右上角 "注册激活" 按钮
- 在弹出的对话框中查看设备ID
- 点击 "📋 复制设备ID" 按钮
设备ID示例
126aaac4617a96a6... (16位十六进制)
第二步:申请授权文件
方式一:联系软件提供商
将设备ID发送给提供商,提供商会:
- 使用私钥生成数字签名
- 创建授权文件(JSON格式)
- 返回授权文件给用户
方式二:自助生成(管理员)
如果有License SDK私钥,可以自行生成:
from registration.client_registration import ClientRegistrationManager
# 创建注册管理器
reg_manager = ClientRegistrationManager(
app_name="DLT高频红球统计工具",
keys_dir="registration/keys"
)
# 生成授权文件
result = reg_manager.generate_license(
device_id="126aaac4617a96a6...",
license_type="perpetual", # perpetual=永久, timed=限时
email="user@example.com",
max_machines=1
)
print(result['message'])
第三步:导入授权文件
- 在注册激活对话框中点击 "📁 从文件激活"
- 选择授权文件(
.json) - 系统自动执行以下验证:
- ✅ 检查文件格式
- ✅ 验证数字签名
- ✅ 检查设备ID匹配
- ✅ 检查是否重复使用
- 验证通过后自动激活
第四步:激活成功
激活成功后:
- 状态显示:"✅ 已授权"(绿色)
- 按钮变为:"✅ 已激活"
- 显示授权信息(类型、有效期等)
- 授权文件保存到
registration/licenses/
授权文件管理
授权文件结构
授权文件是JSON格式,包含以下字段:
{
"format": 1,
"app_id": "dlt_analyzer_v1",
"device_id": "126aaac4617a96a6c9e351294f68b5c6",
"license_type": "perpetual",
"issued_at": "2026-04-15T10:30:00",
"expires_at": null,
"max_machines": 1,
"email": "user@example.com",
"activation_count": 1,
"hardware_signature": "...",
"signature": "RSA数字签名..."
}
查找授权文件
系统按以下顺序查找授权文件:
- 精确匹配 - 文件名包含当前设备ID
- 最新文件 - 按修改时间排序,取最新的一个
授权文件命名规则
LICENSE_[EMAIL]_[DATE]_[DEVICE_ID_SUFFIX].json
示例:
LICENSE_user_example_com_20260415_126aaac4617a.json
备份与恢复
备份授权文件
# 复制整个licenses目录
cp -r registration/licenses /path/to/backup/
恢复授权文件
# 将备份的授权文件放回licenses目录
cp /path/to/backup/licenses/*.json registration/licenses/
授权文件迁移
如果更换电脑,需要:
- 在新电脑上安装软件
- 获取新电脑的设备ID
- 联系提供商重新生成授权文件
注意:授权文件与设备ID绑定,不能直接复制到其他电脑使用。
常见问题解答
Q1:提示"试用期已使用,请注册软件以继续使用"
原因:7天试用期已结束
解决方案:
- 点击"注册激活"按钮
- 获取设备ID
- 联系软件提供商获取授权文件
- 导入授权文件激活
Q2:提示"授权文件与当前设备不匹配"
原因:授权文件中的device_id与当前电脑不匹配
解决方案:
- 确认授权文件是当前电脑申请的
- 如果是从其他电脑复制的,需要重新申请
- 每台电脑需要独立的授权文件
Q3:激活成功后,下次启动还需要激活吗?
不需要。激活后:
- 授权文件保存在
registration/licenses/ - 每次启动自动加载授权文件
- 状态显示为"✅ 已授权"
如果未识别:
- 检查
registration/licenses/目录是否存在授权文件 - 检查公钥文件
registration/keys/public_key.pem是否存在 - 尝试重新导入授权文件
Q4:可以删除试用期记录重新试用吗?
不可以。系统有多重防护:
- 文件记录监控
- 系统指纹(可选)
- 时间戳验证
即使删除文件,系统仍能检测到曾经使用过。
Q5:授权文件能否重复使用?
不能。每个授权文件只能激活一次:
- 激活次数记录在授权文件中
- 重复使用会被检测到
- 需要联系提供商重置激活次数
Q6:FTP验证是什么?
软件支持FTP服务器双重验证:
本地验证
- 检查授权文件格式
- 验证数字签名
- 检查设备ID匹配
FTP验证(可选)
- 连接FTP服务器
- 查询服务器端授权记录
- 验证激活状态
FTP配置示例
FTP_CONFIG = {
'enable_ftp': True,
'ftp_host': '121.41.121.252',
'ftp_user': 'qiankun',
'ftp_pass': 'wudong888',
'ftp_port': 21,
'ftp_passive': True,
'ftp_timeout': 10,
'remote_dir': '/licenses'
}
Q7:如何在多台电脑上使用?
方案一:分别激活
- 每台电脑独立申请授权文件
- 使用不同的设备ID
- 适合少量电脑
方案二:批量授权
- 联系软件提供商
- 提供所有电脑的设备ID
- 批量生成授权文件
Q8:授权文件被删除了怎么办?
恢复方法:
- 从备份恢复
- 如果有备份,直接复制回来
- 从回收站恢复
- 检查回收站是否有授权文件
- 重新申请
- 如果无法恢复,联系提供商
- 提供商可重置激活次数
- 重新生成授权文件
Q9:如何查看授权信息?
激活后,在软件界面显示:
- 授权状态:✅ 已授权
- 授权类型:永久授权 / 限时授权
- 有效期:剩余天数(如适用)
- 设备ID:当前电脑的设备ID
Q10:忘记密码/丢失私钥怎么办?
如果是软件提供商:
- 私钥丢失无法恢复
- 需要重新生成密钥对
- 所有已发行的授权文件需要重新签发
- 联系用户重新激活
建议:
- 妥善备份私钥文件
- 使用密码管理器保存
- 不要将私钥分享给他人
技术实现
加密算法
RSA 2048位非对称加密
- 私钥:生成授权文件(仅提供商持有)
- 公钥:验证授权文件(分发给用户)
SHA-256哈希
- 对授权内容生成摘要
- 确保数据完整性
数字签名
- 使用私钥对授权内容签名
- 使用公钥验证签名真伪
验证流程
1. 加载授权文件 (JSON)
↓
2. 提取签名和授权内容
↓
3. 使用公钥验证签名
↓
4. 检查设备ID是否匹配
↓
5. 检查授权有效期
↓
6. 检查激活次数
↓
7. 验证通过 → 授权成功
安全机制
- 防篡改
- 数字签名验证
- 任何修改都会导致签名失效
- 防复制
- 设备ID绑定
- 授权文件只能在特定电脑使用
- 防重用
- 激活次数记录
- 服务器端验证(FTP)
- 防破解
- 多重防护机制
- 代码混淆
- 异常检测
附录
授权文件生成示例
from registration.client_registration import ClientRegistrationManager
# 创建注册管理器
reg_manager = ClientRegistrationManager(
app_name="DLT高频红球统计工具",
keys_dir="registration/keys"
)
# 加载私钥
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.backends import default_backend
with open('registration/keys/private_key.pem', 'rb') as f:
private_key = serialization.load_pem_private_key(
f.read(),
password=b"your_password",
backend=default_backend()
)
# 生成授权文件
result = reg_manager.generate_license(
device_id="126aaac4617a96a6c9e351294f68b5c6",
license_type="perpetual",
email="user@example.com",
max_machines=1,
private_key=private_key
)
if result['success']:
print(f"授权文件已生成: {result['license_file']}")
else:
print(f"生成失败: {result.get('message')}")
设备ID生成原理
设备ID基于以下硬件信息生成:
- CPU序列号
- 主板UUID
- MAC地址
- 硬盘序列号
使用SHA-256哈希算法,生成唯一的设备标识符。
相关文件和目录
registration/
├── client_registration.py # 客户端注册模块
├── production_registration_core.py # 核心功能模块
├── ftp_sync.py # FTP同步模块
├── keys/
│ ├── public_key.pem # 公钥(必须)
│ └── private_key.pem # 私钥(仅提供商)
├── licenses/
│ └── LICENSE_*.json # 授权文件
└── state.json # 注册状态记录
最后更新:2026-04-15
文档版本:v1.1