複雑なファイルから画像を抽出しようとしています。ファイルをさまざまな部分に分割し、すべて別のファイルに抽出できます。
file
各部分の種類を検出し、写真である部分(JPEG、PNG、BMP...)のみを選択するのがアイデアでした。これらの部分に純粋で純粋な画像データが含まれていると、効果的に検出できます。
たとえば、
$ file Section_Raw_7BB28B99-61BB-11D5-9A5D-0090273FC14D_body.raw
Section_Raw_7BB28B99-61BB-11D5-9A5D-0090273FC14D_body.bmp: PC bitmap, Windows 3.x format, 193 x 58 x 8, image size 11368, 256 important colors, cbSize 12446, bits offset 1078
ただし、まだどのジャンクデータやメタデータがあるかはよくわかりませんが、とにかくファイル自体のファイルシグネチャの前にXバイトを追加してもイメージとして認識されません(やはり1つのイメージではありません))イメージ自体)。
$ file Section_Raw_4B2E0988-9E44-49AE-8B77-F544B1CAF03F_body.raw
Section_Raw_4B2E0988-9E44-49AE-8B77-F544B1CAF03F_body.raw: data
ファイルに最初の一致()を削除しないように指示すると、問題にならないようです-k
。内部にJPEGが表示されていませんが、16進エディタでファイルを調べた後、始めの近くに一般的なマジックコードがあることがわかりました。 JPEG:
どうやって進めますか?このようなファイルを識別する方法はありますか?それともこれをfile
行うには、まず最初に余分なバイトを削除する必要がありますか?
メタデータバイトの長さが常に同じであるかどうかを評価する必要がありますが、もしそうなら、ファイルがそれを超えるファイルを探し始めるように指示する方法はありますか?それとも、ファイルの最初のXバイトを削除して別の有効なイメージを作成することもできますか?
他のオプションは、ファイルの始まりと終わり(grep
16進数のためのing?)とdd
長さのためのingを手動で見つけるのが難しいようです。もちろん、うまくいきますが、経験豊富な小さなLinuxユーティリティが提案したように、単純でも読みやすくもありません。
お時間をいただきありがとうございます!
PS。テストする必要がある場合に備えて、ここにファイルをアップロードしました。http://s000.tinyupload.com/index.php?file_id=71511465902538158650