[CTF] 根據crc碼矯正png圖片寬高


png的crc校驗值就是用下圖的高亮部分計算得出:

png的crc校驗值如下圖高亮部分所示:

根據crc校驗碼,使用以下python腳本計算正確的png圖片寬高

import zlib
import struct


with open(r'C:\Users\Administrator\Desktop\1.png','rb') as image_data:
    bin_data = image_data.read()
data = bytearray(bin_data[12:29])
crc32key = eval(str(bin_data[29:33]).replace(r'\x', '').replace("b'", '0x').replace("'", ''))
#理論上0xffffffff,但考慮到屏幕實際,0x0fff就差不多了
n = 4096
#高和寬一起爆破
for w in range(n):
    # q為8字節,i為4字節,h為2字節
    width = bytearray(struct.pack('>i', w))
    for h in range(n):
        height = bytearray(struct.pack('>i', h))
        for x in range(4):
            data[x+4] = width[x]
            data[x+8] = height[x]
        crc32result = zlib.crc32(data)
        if crc32result == crc32key:
            print("width:%s  height:%s" % (bytearray(width).hex(),
                                           bytearray(height).hex()))
            exit()

參考資料:
[CTF隱寫]png中CRC檢驗錯誤的分析
Python中struct.pack()和struct.unpack()用法詳細說明


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM