Python3爆png长和高(CTF图片隐写)
程序员文章站
2022-05-15 11:50:43
...
做的第一道png隐写题,png文件的hex格式
可以先在Linux中打开图片,发现提示错误,说明文件被修改过(Windows中不会提示错误,能打开就直接打开了)
把图片拖到winhex中可以看出文件头数据块IHDR被修改,宽和高都变成了0
用python脚本爆出真正长高
#Python3爆 png长和高
import os
import binascii
import struct
for i in range(20000):#一般 20000就够
wide = struct.pack('>i',i)
for j in range(20000):
high = struct.pack('>i',j)
data = b'\x49\x48\x44\x52' + wide+ high+b'\x08\x02\x00\x00\x00'
#因为是 Py3,byte和str型不能直接进行运算,要写把 str写 b'...'。不然把 wide和 high写成 str(...)
crc32 = binascii.crc32(data) & 0xffffffff
if crc32 == 0x81888253: # 0x81888253是这个 png文件头的 CRC校验码,在 21~25byte处
print('\n\n',i,j,crc32)
print(type(data))
exit(0)
print(i,end=' ')
运行后爆出wide = 662,high = 439
转化为16进制分别为 296,1B7。在winhex中修改后保存
重新打开图片,已被复原
(如果有可以改进的地方欢迎大佬指正~)