取自这里,名为 Moon.png 的图像文件中有一个隐写术部分。这让我思考,如何使用 dd 之类的东西提取 944 到 411781 之间的 Zlib。
$> binwalk moon.png
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
0 0x0 PNG image, 600 x 593, 8-bit/color RGB, non-interlaced
290 0x122 Unix path: /www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef=
944 0x3B0 Zlib compressed data, best compression
411781 0x64885 Zip archive data, encrypted at least v1.0 to extract, compressed size: 35, uncompressed size: 23, name: flag.txt
411976 0x64948 End of Zip archive
作者这样做了dd if=./moon.png of=./moon.zip skip=411781 bs=1
,但是这只适用于起点 0 到 411781。
答案1
作者实际上从文件中提取了ZIP部分。从 411781 开始。默认情况下,从那里复制文件的其余部分。
skip
bs=1
复制之前从头开始移动指定数量的块(因为1 个块是 1 个字节)。因此,要获得“zlib”部分,您需要:
dd if=./moon.png of=./moon.zlib skip=944 count=410837 bs=1
count
是从该点复制的块数。所以这里的计数是结束位置减去跳过的块/字节的数量:411781-944=410837。