我的硬盘上有 Virtualbox VM,但硬盘发生故障。我唯一能从磁盘恢复的是 VM 使用的动态 VDI 磁盘的快照,而且我只能恢复文件的前半部分。它仍然包含 VDI 标头、VDI 块图和大量块。
我只对恢复几个文件感兴趣,由于我在故障发生前就处理过这些文件,而且它们小于 VDI 块大小 (1Mb),所以我怀疑它们的数据存在于快照中。事实上,我可以 grep 它并找到它的片段,但快照中的块不是按逻辑顺序排列的。
但由于它不是一个完整的 VDI 文件,virtualbox-fuse 或 libguestfs 等工具拒绝使用它,所以我必须编写自己的取证脚本。
我不明白的是 VDI 块图如何工作以及如何编写脚本来提取我拥有的 VDI 部分中仍然存在的块并按逻辑顺序重写它们(也许用容易识别的字节模式填充未分配或缺失的空间)