原创

: IDAT block小结

IDAT block小结

IDAT块隐写–一生之敌

IDAT定义:
图像数据块IDAT(image data chunk):它存储实际的数据,在数据流中可包含多个连续顺序的图像数据块。
IDAT存放着图像真正的数据信息,因此,如果能够了解IDAT的结构,用户就可以很方便的生成PNG图像。

一张图片可以有很多的IDAT块。

说了和没说一样。

先来说一说这个IDAT块长什么样
这里是16进制下的WINHEX截图
在这里插入图片描述
IDAT块一般的标识符为IDAT
只需要搜索这个关键字winhex就会整理出来这个IDAT头了。

但是一般的IDAT隐写会体现在IDAT块的长度上,会有一些IDAT块有异常的长度,那么就是解题的关键。

IDAT有固定的长度,正常的PNG图片只有最后一个IDAT块的长度是比其他的要短的。

那么在kali linux中,可以通过以下命令查看IDAT块的信息

1
2
3
#check png picture idat block error:to see the length of idat block
pngcheck -v 1.png

在这里插入图片描述
像是上面的一张图就明显的有问题。这个异常在第3个IDAT块中,0x6049位置。

首先,789C代表了zlib的头。这个文件一般我们看到他的时候是在binwalk解图片的时候。

有几张图片,就有几个zlib文件。

这个很重要

那么这里搜出来有两个789C就很灵了。

这两个789C必须要删一个。

还有就是必须把包含了zlib的一整个IDAT一起删除。

下面的图就信息量很大。
当然这两个合起来去搜索”IDATx”也不是不行。这样搜出来是两个结果,大概率是带有zlib的IDAT块。
在这里插入图片描述

删除第一个

这张图片有了新的想法。
在这里插入图片描述

删除第二个

无事发生,这张图片就是原本显示的图片。
在这里插入图片描述

删除第二个
真是神奇呢。。。

突然觉得所谓的“幻影坦克”是不是可以用类似的原理来分出来两张图片呢。