没有装mfc库的,可以使用这个链接下载,能运行。
链接:https://pan.baidu.com/s/1cfi5bCX3DAPxRfUu2zJ6uQ 提取码:fpq4
import os
import math
szName = input("请输入用户名:")
dwNameNum = 0
for i in range(len(szName)):
dwNameNum = dwNameNum + ord(szName[i])
dwNameNum = dwNameNum * 10
dwNameNum = dwNameNum ^ 0x12345678
# 爆破密码
nNum = 0;
while True:
szCode = str(nNum)
dwCodeNum = 0
for i in range(1,len(szCode),2):
dwCodeNum = dwCodeNum + ord(szCode[i])
dwCodeNum = dwCodeNum * nNum
if (dwCodeNum > dwNameNum-100) and (dwCodeNum < dwNameNum+100):
print(nNum)
break
nNum += 1
凑合着看,笔记做得比较乱… 代码基本上是 js 在浏览器跑账号:jixun 注册码:1036258Z07 账号:jixun 注册码:450547@jixun66-FwE 账号:jixun 注册码:325526@52pojie@jixun66$$
code = '0123456789abcdef'.split('')
code.filter((x, i) => i % 2 == 1).reduce((sum, v) => sum + v.charCodeAt(), 0)
=565 (0x235)
565 * 123456789 = 69753085785 (0x103d9b9f59)
(转 32 位整型) 69753085785|0 = 1033609049 (0x3D9B9F59)
serial_sum = 偶数位字符代码综合 * 整体作为整数解析时的值
serial_sum - 100 <= dword_12977FC <= serial_sum + 100
用户名 = jixun
算出哈希:
012977FC E8 9C 87 12
dword_12977FC = 0x12879cE8 (310877416)
v = code => code.split('').filter((x, i) => i % 2 == 1).reduce((sum, v) => sum + v.charCodeAt(), 0) * parseInt(code, 10) - 310877416;
满足表达式 -100 <= v(序列号) <= 100 即可。
sub_1291FF0: (base = 0x1290000)
if (dword_12977FC < (unsigned int)(serial_sum - 100)) {
fail;
}
if (dword_12977FC > (unsigned int)(serial_sum + 100)) {
fail;
}
g_flag = 100;