暗无天日

=============>DarkSun的个人博客

使用dd从png文件中分离附加数据

我们常常会在 png 图片后面附加其他文件的方式来实现隐写。比如下面这张图片

dd_extract_from_png.png

我们用 pngcheck 检查一下会发现在 IEND 区后存在其他数据

pngcheck images/dd_extract_from_png.png
images/dd_extract_from_png.png  additional data after IEND chunk
ERROR: images/dd_extract_from_png.png

下面我们来看看 IEND 区在哪里结尾

xxd images/dd_extract_from_png.png |grep IEND
000085a0: 97b9 ecde 1e16 0a00 0000 0049 454e 44ae  ...........IEND.

根据 png 文件的格式,在 IEND 后还有 4 个字节的 CRC, 因此 png 文件的结尾应该在 000085b3

将这个值换算成10进值就是

((n=16#85b3))
echo $n
34227

使用 dd 跳过前面的图片内容保存后面的数据

dd if=images/dd_extract_from_png.png ibs=34227 skip=1 of=/tmp/noname
file /tmp/noname
/tmp/noname: DOS executable (block device driver,32-bit sector-support)