normal 16

32位的c/c++文件

ida 分析

进入sub_40100A

关于crypcreathash API 内的 0x8004(ALG_ID),在这里丢个链接

ALG_ID (Wincrypt.h) - Win32 应用|微软文档 (microsoft.com)

第二个密码的加密方式

8003是md5加密。纯6位数破解起来有点慢了

看看后面的加密

里面有个提取AAA文件资源(加密的rtf文件)

还有个小异或

最后结果存入rtf文件

查下rtf文件头,因为密码2一定与前6位文件头异或

写出脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import hashlib
flag2=b'@DBApp'
flag1=[0]*6
for i in range(48,57):
for j in range(48,57):
for k in range(48,57):
for m in range(48,57):
for l in range(48,57):
for n in range(48,57):
flag1=[i,j,k,m,l,n]
flag1=bytes(flag1)
h2 = hashlib.sha1(flag1+flag2).hexdigest()
if h2 == "6e32d0943418c2c33385bc35a1470250dd8923a9":
print(flag1)
break
key2 = [0x05,0x7D,0x41,0x15,0x26,0x01]
head= "{\\rtf1"
psw2 = ""
for i in range(6):
psw2 += chr(key2[i] ^ ord(str[i]))
print (psw2)

Flag{N0_M0re_Free_Bugs}