CrackRTF

查看字符串,看到俩行字符串比较特殊,找一个跟进去
在这里插入图片描述
跟进了主函数,看代码吧

在这里插入图片描述
这边有俩次输入密码,先看第一次
atoi函数是数字转换为字符串
stract 将 @DBApp 追加道 字符串后面
下面还有一个
sub_40100A 函数


看到这边他是一个加密标志,hash加密,后面的0x8004是标识符,相当去用什么方法去加密,这边是sha1加密

看别人都是爆破写的

脚本

import hashlib
s = ‘6E32D0943418C2C33385BC35A1470250DD8923A9’.lower()
for i in range(100000,1000000):
a = str(i)+’@DBApp’
m = hashlib.sha1()
m.update(a.encode(‘utf-8’))
sha1 = m.hexdigest()
if sha1 == s:
print(i)
break

注意s中字符一定要小写,因为hashlib解密后是小写

得出来第一块密码是123321@DBApp

第二块也是一样,md5加密
在这里插入图片描述

下面还有一个sub_40100F函数,
大概就是, 把AAA文件复制到lpBuffer中

然后调用sub_401005 函数,
在这里插入图片描述
对lpString 和 lpBuffer 进行异或操作,输入的是6个字符,所以是6个字节,
也就是和文件中前6个进行异或

ResourceHacker 这个软件可以看AAA文件

完整脚本

import hashlib

passwd1 = "6e32d0943418c2c33385bc35a1470250dd8923a9"
passwd2 = "27019e688a4e62a649fd99cadaafdb4e"
suffix = "@DBApp"
aaa = [0x5, 0x7d, 0x41, 0x15, 0x26, 0x1]	#AAA资源的前6个字节
rtf_header = [0x7b, 0x5c, 0x72, 0x74, 0x66, 0x31] # RTF文件头前6给字节

pass1 = ""
pass2 = ""
for i in range(100000,1000000):
    instr = str(i) + suffix
    res = hashlib.sha1(instr.encode('utf-8')).hexdigest()
    if res == passwd1:
        pass1 = str(i)
        print("passwd1 = ", pass1)
        break

for i in range(6):
    res = aaa[i] ^ rtf_header[i]
    pass2 += chr(res)
print("passwd2 = ", pass2)

flag{N0_M0re_Free_Bugs}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值