本文基于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)
|
离线激活测试
首先将软件禁止联网,转离线激活页,将注册码
、注册科目
、机器码
分别复制到脚本中的login
、subject
、machine
项,运行得到离线激活码,激活成功,重启即可。