爱数产品注册机
爱数产品注册机
爱数的产品的激活码检查逻辑在liblicense.so中实现,使用了自定义字符串加密算法。

以下为激活产品过程中加密、解密关键算法的参数及返回值。
1 | |
验证serial是否合法
查询序列号的前5字节是否存在。
使用产品名称(上方样例中的值为
@anyrobot3.0/enterprise/module/ml)解密序列号。根据表中的偏移信息拼凑解密秘钥。
1
2
3解密后的字符串:38Q437BF7J74EMIKRQXKQMML5
偏移:[0, 0, 0, 0, 11]
从后往前取,可以获得字符串4Q834用上步的秘钥解密后的字符串进行crc32计算出一个字符串,并按表中偏移拼凑字符串。
1
2
3
4
5
6
7
8
9解密后的字符串: 3XTP9DRQQE87WVA8UMDN
CRC32: 15481947021548194702
偏移: [7, 0, 2, 3, 2]
s[1] = '3XTP9DRQQE87WVA8UMDN'[7]
s[3] = '3XTP9DRQQE87WVA8UMDN'[0]
s[0] = '15481947021548194702'[2]
s[2] = '15481947021548194702'[3]
s[4] = '15481947021548194702'[2]
最后得到字符串4Q834将第3步与第4步的得到字符串比较,相等则为合法的序列号。
激活码检查
使用machine_code生成crc32key。
1
2machine code:3EAEE402F224
crc32key: 39865903923986590392使用crc32key解密active_code。
1
3KMW40SW5KEA -> 3GEKME48J422使用serial解密上一步结果。
1
3GEKME48J422 -> 30G6Q2E0RS8O使用crc32key解密上一步结果。
1
30G6Q2E0RS8O -> 3U8SAGOA7CUG使用serial加密active_code。
1
3EAEE402F224 -> 3U8SAGOA7CUG比较第4步与第5步的结果,相等则表明激活码正确.
激活码生成过程
- 用serial加密machine_code。
- 用原始machine_code生产crc32key, 用生成的crc32key加密上一步生成的结果。
- 用serial再次加密上一步的结果。
- 用crc32key再次加密上步生成的结果,得到激活码。
