web-dev-qa-db-ja.com

ディスクイメージを検査する方法

ハードディスクのダンプがあります。ハードディスクリカバリ会社が私のために作ってくれました。彼らがダンプを作成するためにどのソフトウェアを使用したかはわかりません。私が持っているのはファイルだけですdisk.img

始めるための私の唯一のアイデアは、fileを使用することでした。

$ file disk.img 
12693A.img: x86 boot sector; GRand Unified Bootloader, stage1 version 0x3, stage2 address 0x2000, stage2 segment 0x200; partition 1: ID=0xc, starthead 1, startsector 63, 312576642 sectors, code offset 0x48

これがハードディスクのダンプの場合、次の順序で含まれていると思います。a)ブートセクターb)パーティションテーブルc)パーティションしたがって、fileツールは(任意の)ファイルの最初の部分を読み取るだけだと思います。この場合、最初の部分はブートセクターですが、ファイルにはさらに多くの部分が含まれています。

方法:

1)パーティションテーブルを参照してください。 16進コードではなく、そこにどのパーティションがあるかについて人間が読めるもの。

2)各パーティションの内容を確認するにはどうすればよいですか?これは、物理ディスクではなく、ファイルを変更することに興味がなく、コンテンツを見るだけであるにもかかわらず、「マウント」と呼ばれていると思います。

7
Mads Skjern

ディスク全体のコピーを含むファイルであるため、他のブロックデバイスと同じように扱い、fdiskを実行できます。ディスクイメージの名前がdisk.imgであるとすると、次のコマンドで十分です。

fdisk -l disk.img

これにより、次のような出力が得られます。

Disk /home/yjwong/disk.img: 250.1 GB, 250058268160 bytes
255 heads, 63 sectors/track, 30401 cylinders, total 488395055 sectors
Units = sectors of 1 * 512 = 512 bytes

   Device              Boot      Start         End      Blocks   Id  System
/home/yjwong/disk.img1            2048     3905535     1951744   82  Linux swap / Solaris
/home/yjwong/disk.img2   *     3905536   488394751   242244608   83  Linux

パーティションをマウントするために、Linuxカーネルでは、mountコマンドでディスクイメージへのオフセット(バイト単位)を指定できます。ディスクイメージ内のパーティションをループマウントする必要があります。ただし、fdiskは開始オフセットをセクター単位で指定するため、所定のオフセットにセクターサイズ(通常は512)を掛ける必要があります。

上記の例の2番目のパーティションをマウントするには、オフセットは3905536 * 512 = 1999634432です。

次のコマンドは、パーティションタイプがext4であり、/mntが目的のマウントポイントであると仮定して、トリックを実行します。

Sudo mount -t ext4 /home/yjwong/disk.img /mnt -o loop,offset=1999634432

読み取り専用でコンテンツを表示する場合は、マウントオプションにroを追加できます。

Sudo mount -t ext4 /home/yjwong/disk.img /mnt -o loop,offset=1999634432,ro
13
yjwong