0

我制作了一个文件恢复软件,它读取 FAT32 目录条目并识别文件的第一个簇并尝试恢复数据,它应该可以正常工作,但是当我尝试使用 fat32 USB 磁盘时,会发生以下情况。

未删除时分配给文件的簇编号与删除后立即分配给文件的簇编号不同。我使用 Disk Investigator 和 Tune Up Undelete 来验证这一点,他们都无法恢复文件。常见的问题是,通常在删除文件名时,第一个字符会更改为 0xE5,其余字符保持不变,但这也改变了它的集群信息。

有什么帮助吗?你能试试你的 FAT32 USB 并告诉我发生了什么吗?

我的操作系统是 Windows Vista,笔式驱动器是单分区 FAT32。

4

5 回答 5

2

也许 vista 真的是故意更改目录条目中的第一个簇字段?它实际上将其更改为什么?您没有发布任何带有实数的示例。如果它在每种情况下都用 0 或 0xFFFFFFFF 之类的数字覆盖该字段,那么这很肯定表明 Vista 故意破坏了此信息,因此您无法找到该文件。如果它不必要地将该字段更改为其他有效的簇号,那很奇怪。

您没有提到的另一件事是文件的数据实际上是否仍然物理地位于它最初所在的集群中的磁盘上。查看物理存储在旧位置和新位置中的实际扇区转储(假设新值是真正存在的簇号)会很有趣。如果两个位置都没有实际的文件数据,您可以完整捕获所有扇区并进行搜索。文件的原始数据是否仍然在任何集群/扇区的驱动器上?

我知道这不是一个很好的答案,但是信息太少(并且没有太多实际安装 Vista 并尝试这些东西的倾向),这就是我所能做的。

于 2009-07-21T13:33:48.733 回答
1

您可能会看到USB磨损均衡效果。

这篇关于测试 USB 记忆棒和数据恢复工具的建议的帖子对此有更多说明。

由于磨损均衡(控制器将数据切换到不同的扇区以增加内存芯片在写入操作时的预期寿命)标准硬盘驱动器诊断实用程序无法轻松处理 USB 记忆棒。


更新:与我上面的假设相矛盾的参考。
最近有一篇关于闪存的取证潜力的论文说,
磨损均衡在物理级别起作用,不会影响逻辑级别(软件访问)。
还没有读过这篇论文……但是,对于所有对闪存设备感兴趣的人来说,这似乎是一个很好的信息。

于 2009-07-18T04:48:47.423 回答
1

我在谷歌搜索同样的问题时偶然发现了这个问题。这个问题很老,但我希望我的回答会有所帮助。

此问题与闪存问题无关。当一个文件从 FAT32 分区中删除时,它的第一个簇的高位字被清零,简单明了 ( https://www.cnwrecovery.com/html/fat32.html )。

因此,与 FAT12/FAT16 不同,不可能直接恢复 FAT32 上已删除的文件(和目录)。

于 2016-08-10T21:59:33.590 回答
0

简而言之:在闪存中,当写入一个块时,必须首先擦除该块周围的一组块,然后在考虑到块的更改的情况下重新写入。因此,写入其邻居被标记为未分配的块(尽管您稍后实际上想要该数据)可能会导致未分配的块被写入零。或者,旧块可能被标记为未分配,并且可以将更改写入已经空白簇中的新块,然后在某处记录块更改。

此行为不是特定于操作系统的,而是由 USB 设备本身实际处理的。因此,我们需要知道您使用的是哪种设备,除非您所说的是在您的所有 USB 闪存设备上都发生了这种情况,而您的问题并不清楚。

Anand Shimpi 在他现在著名的SSD Anthology文章(退化章节中的 EG)中更好地解释了长版本;如果您喜欢这种事情,甚至还有详细的跟进。

于 2009-07-18T05:18:56.567 回答
0

您可能希望将您编写的代码与作为开源计算机取证工具包 SleuthKit 的一部分的“icat”和“fls”程序进行比较。使用 SleuthKit,您可以轻松找到已删除 FAT32 文件的目录条目,然后对 inode 进行 icat。您可以在http://sleuthkit.org/找到 SleuthKit

于 2009-09-24T17:49:36.397 回答