ddを使用して指定された2つのポイントを使用して単一のファイルからコンテンツを抽出するには?

ddを使用して指定された2つのポイントを使用して単一のファイルからコンテンツを抽出するには?

からインポートここ、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から始まります。デフォルトでは、ファイルの残りの部分はここからコピーされます。

skipbs=1コピーする前に、指定された数のブロックを最初から移動します(1ブロックは1バイトなので)。したがって、「zlib」部分を取得するには、次のものが必要です。

dd if=./moon.png of=./moon.zlib skip=944 count=410837 bs=1

countこの時点でコピーされたブロックの数。したがって、ここの数は終了位置からスキップされたブロック/バイト数を引いたものです(411781-944 = 410837)。

関連情報