png隐写

警告
本文最后更新于 2023-01-29,文中内容可能已过时。

在当前CTF比赛中,png图片隐写仍然是经常遇到的题目类型,在此总结下PNG图片中常见的解题方式,在后续的比赛中如果遇到可以先尝试本文的方法。 png图片

一、PNG图片格式

1、识别:

开始标志:89 50 4E 47 0D 0A 1A 0A 可见文本:‰PNG

结束标志:60 82

二、常用解题方法

1、010edit分析 1.1 尝试修改文件高度 1.2 分析文件是否逆序、高低字节转换等。 1.3 分析文件结尾是否有多余数据。 1.4 分析各个IDAT块异常,多余的正常IDAT。

2、StegSolve

2.1、对图像进行分通道扫描 2.2、分析data Extract的red blue green,查看是否为LSB隐写

3、strings 、 exiftool、 pngcheck -v 、binwalk、foremost 命令分析处理

使用以上命令分析文件。

4、zsteg

zsteg支持png和bmp隐写分析

zsteg xxx.png zsteg xxx.png -a

5、stegpy

需要先获取密码,后使用如下命令:

stegpy xxx.png -p pwd

6、Oursecret

使用Oursecret工具解密图片,需要密码。

7、SlientEye

使用SlientEye工具解密图片

8、zlib解密脚本:

我们找到存在问题的IDAT块,利用 python zlib解压多余 IDAT 块的内容,此时注意剔除 长度、数据块类型及末尾的 CRC 校验值。

三、常用python脚本:

1、zlib解密: import zlib import binascii IDAT = “789…667”.decode(‘hex’) result = binascii.hexlify(zlib.decompress(IDAT)) print result

2、高低字节反转 with open(‘xxx.png’,‘rb’) as f: src = f.read() print(src[:16]) dest =list() for i in range(int(len(src)/2)): dest.append(src[2i+1]) dest.append(src[2i]) dest = bytes(dest) with open(‘flag.png’,‘wb’) as f: f.write(dest)

0%