挂载VMDK磁盘映像

Wit*_*eso 21 mount computer-forensics virtual-disk vmdk

我有一个带有vmdk扩展名的vmware磁盘映像文件

我正在尝试安装它并探索所有分区(包括隐藏的分区).

我试图遵循几个指南,例如:http://forums.opensuse.org/showthread.php/469942-mounting-virtual-box-machine-images-host

我可以使用vdfuse挂载图像

vdfuse -w -f windows.vmdk /mnt/
Run Code Online (Sandbox Code Playgroud)

在此之后,我可以看到一个分区和整个磁盘暴露

# ll /mnt/
total 41942016
-r-------- 1 te users 21474836480 Feb 28 14:16 EntireDisk
-r-------- 1 te users  1569718272 Feb 28 14:16 Partition1
Run Code Online (Sandbox Code Playgroud)

继续本指南,我尝试使用EntireDisk或Partition1

mount -o loop,ro /mnt/Partition1 mnt2/
Run Code Online (Sandbox Code Playgroud)

但这给了我错误'mount:你必须指定一个文件系统类型'

在试图找到我试过的正确类型

dd if=/mnt/EntireDisk | file -
which outputs a ton of information but of note is:
/dev/stdin: x86 boot sector; partition 1: ....... FATs ....
Run Code Online (Sandbox Code Playgroud)

所以我厌倦了作为一个vfat登上,但这给了我

mount: wrong fs type, bad option, bad superblock ...etc
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Tho*_*mas 45

对于较新的Linux系统,有一个命令'guestmount'.安装后,您可以运行以下命令在VMDK映像中安装第三个分区:

guestmount -a xyz.vmdk -m /dev/sda3 --ro /mnt/vmdk
Run Code Online (Sandbox Code Playgroud)

或者,要自动检测并安装图像(不太可靠),您可以尝试:

guestmount -a xyz.vmdk -i --ro /mnt/vmdk
Run Code Online (Sandbox Code Playgroud)

请注意,该标志--ro只是将图像挂载为只读; 要将图像挂载为读写,只需将其替换为标志即可--rw.


guestmount包含在每个发行版的以下包中:

  • Ubuntu:libguestfs-tools
  • OpenSuse:guestfs-tools
  • CentOS:libguestfs-tools-c


Met*_*win 7

安装 affuse,然后使用它进行挂载。

affuse /path/file.vmdk /mnt/vmdk
Run Code Online (Sandbox Code Playgroud)

现在可以在 下找到原始磁盘映像/mnt/vmdk。检查其扇区大小:

fdisk -l /mnt/vmdk/file.vmdk.raw

# example

Disk file.vmdk.raw: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x000da525

Device       Boot Start      End  Sectors Size Id Type
/mnt/vmdk/file.vmdk.raw1 *     2048 41943039 41940992  20G 83 Linux
Run Code Online (Sandbox Code Playgroud)

乘以扇区大小并启动​​扇区。在示例中,它将是 2048*512:

echo '2048*512' | bc
1048576
Run Code Online (Sandbox Code Playgroud)

使用该偏移量挂载原始文件:

mount -o ro,loop,offset=1048576 /mnt/vmdk/file.raw /mnt/vmdisk
Run Code Online (Sandbox Code Playgroud)

磁盘现在应该已安装并可在 上读取/mnt/vmdisk


Edu*_*scu 7

您也可以使用qemu:

对于.vdi磁盘

sudo modprobe nbd
sudo qemu-nbd -c /dev/nbd1 ./linux_box/VM/image.vdi
Run Code Online (Sandbox Code Playgroud)

如果未安装它们,则可以安装它们(在Ubuntu中发出此命令)

sudo apt install qemu-utils
Run Code Online (Sandbox Code Playgroud)

然后用以下命令挂载它:

mount /dev/nbd1p1 /mnt
Run Code Online (Sandbox Code Playgroud)

对于.vmdk磁盘

sudo modprobe nbd
sudo qemu-nbd -r -c /dev/nbd1 ./linux_box/VM/image.vmdk
Run Code Online (Sandbox Code Playgroud)

请注意,我使用了option -r,这是因为VMDK版本3必须只读才能被qemu挂载。

然后我用

mount /dev/nbd1p1 /mnt
Run Code Online (Sandbox Code Playgroud)

我使用nbd1,因为nbd0有时会给出:'mount:特殊设备/ dev / nbd0p1不存在'

对于.ova磁盘

tar -tf image.ova
tar -xvf image.ova
Run Code Online (Sandbox Code Playgroud)

上面将提取.vmdk磁盘,然后安装它。


小智 -3

你有ntfs的软件包吗?

尝试

apt-get install ntfs-3g
Run Code Online (Sandbox Code Playgroud)

在基于 Debian 的系统上。