0
我一直在絞盡腦汁,爲什麼這不起作用。我正在嘗試編寫一些代碼來驗證IDAT校驗和,並隨着樣本的良好映像進行測試。我的代碼是:在Python中計算IDAT校驗和
import binascii
import zlib
filename="sample.png";
with open(filename, 'rb') as f:
data=f.read()
index=data.find("IDAT");
print index;
idat=data[index:index+0x200+4]
print "IDAT: "+binascii.hexlify(idat)
crc=data[index+0x200+4:index+0x200+8]
print "CRC: "+binascii.hexlify(crc)
ccrc=zlib.crc32(idat)
print"Calculated CRC: "+hex(ccrc)
它給人的輸出是:
python crc.py
190
IDAT: 494441546881edd6cd6...........<snip>
CRC: ce1f4dd7
Calculated CRC: -0x31e0b229
校驗正在從正確的位置讀取。 IDAT頭和數據正在進行校驗和。我已經使用其他工具驗證了從文件讀取的校驗和是否正確。從我的研究中,zlib的默認設置應該爲CRC32提供正確的輸出。
缺什麼?
在此先感謝。