ファイル ヘッダー/フッター、署名が変更または削除された場合、ディスク イメージ (dd イメージ) からファイルを回復することは可能ですか?
たとえば、ビットマップ イメージの署名 (0x42 0x4d) または最初の 30 バイトが削除または変更された場合はどうなりますか?
いいえの場合、ファイル署名に基づかないでそのファイルを回復する代替方法は何ですか? 可能な場合、どのように行いますか?
答え1
代わりに、残りのファイルシステム構造を分析できます。
例えば、FAT ファイルシステムファミリーディレクトリ エントリ内のファイル名の最初のバイトをバイト値 0x3F で上書きすることで、ファイルが削除されたことを示します。メタデータの残り (ファイル名の大部分を含む) は削除直後もそのまま残るため、オペレーティング システムを経由せずにディスクに直接アクセスするプログラムはファイルを簡単に見つけることができます。これが DOS の「undelete」コマンドの動作です。
他のファイルシステムも同様ですが、一般的に利用できる情報が少なく、FAT ファミリは特にファイルの回復が容易です。
答え2
何を探すべきか、どこを探すべきかについてある程度の考えがあれば、それは可能です。ビットマップ (非圧縮) には特定の統計特性があり、それを再構築できる可能性があります。
たとえば、画像の幅の可能性のある範囲を事前に知っておくと非常に役立ちます。おおよその色度を知っておくことも役立ちます。
実際の問題は、ファイル自体が不連続なセクターに分割され、それを元に戻すために必要な情報も消去されている可能性があることです。単一のファイルシステム クラスターに収まるほど小さいビットマップであれば、最も可能性が高くなります。
考慮すべきもう 1 つの非常に現実的な可能性は、最初のバイトを消去したものが残りのバイト、またはそのかなり大きな部分も消去し、回復が可能であったとしても価値がないというものです。
圧縮されていない DIB ビットマップの復元を試みるには、値が 3 つ組で変化する特性を持つバイト シーケンスを探します (つまり、N バイトのシーケンスが与えられた場合、3 を法とするインデックスで取得されたピクセル間の相関は、3 の倍数ではない他のインデックスの場合よりも大幅に高くなります)。次に、行幅を最も近い 4 の倍数に丸めたより高いインデックスで同様の相関が存在するかどうかを確認します。行の開始/終了を決定するには、さらに分析が必要です。
具体的なケース(ファイルシステム、実際に使用されているビットマップ形式、ビットマップサイズなど)について詳しく知らなくても、どのように削除/上書きされたか、dd イメージ サイズ、操作の理由など、詳細が不明なため、回復の可能性については「おそらく」以上のことはお伝えできません。