实验吧 损坏的U盘镜像

        从网站上可以下载一个CTF.hdd的文件,使用winHex打开,可以知道这是一个exFAT格式的文件。

        用binwalk检查一下,发现文件中包含两个zip文件,使用foremost进行提取。一个压缩包需要密码解压缩,另一个解压后发现Password.txt文件。说明另一个压缩包的密码与checksum有关。

        通过查看exFAT文件系统格式可以得知如何计算checksum。有关exFAT文件系统格式可以参考exFAT 文件系统格式


        文中给的是C#代码,改写成python代码进行计算checksum值。计算结果为0x81c6fa94。

# -*- coding:utf8 -*-

file = open('/root/Downloads/CTF.hdd', 'rb')
content = file.read()
checksum = 0
for i in range(0, 11*512):
    if i == 106 or i == 107 or i == 112:
        continue
    checksum = (((checksum << 31) & int('0xFFFFFFFF', 16)) | (checksum >> 1))+content[i]
print(hex(checksum))

        使用81c6fa94计算MD5值得到的password是错误的。查看了一下其他人的WriteUp。是因为与文件的大小端存储有关。正确的顺序为94FAC681。

        计算出正确的password为C9737665D39274F6C5A256B943748068。

        解压获得Key.txt.flag为CTF{ExFat-Checksum}

猜你喜欢

转载自blog.csdn.net/xingyyn78/article/details/79993878