考无忧模拟考试题库软件的分析破解

本文基于52pojie大佬肥牛的考无忧2017离线注册算法分析 一文中的算法分析,使用python写了一个离线注册的脚本,理论上支持考无忧旗下所有的模拟考试题库软件。

注册算法分析

大佬使用OD分析了模拟考试软件的算法,而且其中涉及到注册码算法的关键部分,还写了详细的注释,方便我们的理解。

离线注册代码

分析OD内容,加密算法其实很简单,字符串拼接,两次MD5处理,每次均取前20位,最后每5位一组分开,中间用-连接即为真正的离线注册码。

写脚本如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import hashlib

def md5(arg):
return hashlib.md5(arg.encode("utf-8")).hexdigest()

def cal(machine, login, subject):
machine = machine.replace('-','')
input = machine + '&' + login + '&' + subject
secret1 = md5(input)[0:20].upper()
secret2 = md5(secret1).upper()
output = secret2[:5]+'-'+ secret2[5:10]+'-'+ secret2[10:15]+'-'+ secret2[15:20]
print(output)

if __name__ == '__main__':

login = '1234512345123451234512345' //注册码
subject = 'Word2003' //注册科目
machine = '4B324-54B7D-8DB83-70CFD' //机器码

cal(machine, login, subject)

离线激活测试

首先将软件禁止联网,转离线激活页,将注册码注册科目机器码分别复制到脚本中的loginsubjectmachine项,运行得到离线激活码,激活成功,重启即可。