涉及到的知识点:
首先是lsb隐写,用stegsolve可以发现图片在r0、g0、b0是显示异常:
分析一下:
导出后可以将多余的空字节去掉,并且png文件头为8950开头,去掉前两位干扰,得到一半二维码,从题目“扫扫扫”自然想到二维码被隐去一半,爆破:
爆破png宽高脚本:
import zlib
import struct
filename = '115.png'
with open(filename, 'rb') as f:
all_b = f.read()
crc32key = int(all_b[29:33].hex(), 16)
data = bytearray(all_b[12:29])
n = 4095 # 理论上0xffffffff,但考虑到屏幕实际/cpu,0x0fff就差不多了
for w in range(n): # 高和宽一起爆破
width = bytearray(struct.pack('>i', w)) # q为8字节,i为4字节,h为2字节
for h in range(