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包含在每个发行版的以下包中:
安装 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。
您也可以使用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 的系统上。