![按逻辑顺序从损坏的 VDI 快照中提取块](https://linux22.com/image/1395735/%E6%8C%89%E9%80%BB%E8%BE%91%E9%A1%BA%E5%BA%8F%E4%BB%8E%E6%8D%9F%E5%9D%8F%E7%9A%84%20VDI%20%E5%BF%AB%E7%85%A7%E4%B8%AD%E6%8F%90%E5%8F%96%E5%9D%97.png)
我的硬盘上有 Virtualbox VM,但硬盘发生故障。我唯一能从磁盘恢复的是 VM 使用的动态 VDI 磁盘的快照,而且我只能恢复文件的前半部分。它仍然包含 VDI 标头、VDI 块图和大量块。
我只对恢复几个文件感兴趣,由于我在故障发生前就处理过这些文件,而且它们小于 VDI 块大小 (1Mb),所以我怀疑它们的数据存在于快照中。事实上,我可以 grep 它并找到它的片段,但快照中的块不是按逻辑顺序排列的。
但由于它不是一个完整的 VDI 文件,virtualbox-fuse 或 libguestfs 等工具拒绝使用它,所以我必须编写自己的取证脚本。
我不明白的是 VDI 块图如何工作以及如何编写脚本来提取我拥有的 VDI 部分中仍然存在的块并按逻辑顺序重写它们(也许用容易识别的字节模式填充未分配或缺失的空间)