我想写一个程序,可以从硬盘(FAT32 / NTFS分区Windows)恢复已删除的文件。 我不知道从哪里开始。 这应该是什么起点? 我应该读什么来追求这个? 帮助是必需的。 我应该研究哪个系统级别的结构?
这完全是文件系统布局的问题,“文件”实际上是如何在磁盘上查找的,以及当文件被删除时仍然存在的问题。 因此,几乎所有您需要了解的是文件系统规范(针对您要支持的每个文件系统)以及如何获得对HD数据的直接块级访问。 从现有的文件系统驱动程序重用一些代码也许是可能的,但是需要修改它来处理从文件系统的角度来看没有的结构。
您应该首先知道如何在FAT32 / NTFS中完成文件删除,以及其他未删除软件如何工作。
Undelete软件了解用于将文件存储在磁盘(文件系统)上的系统的内部结构,并使用这些知识来查找被删除的文件占用的磁盘空间。 因为另一个文件可能已经使用了部分或者全部这个磁盘空间,所以不能保证被删除的文件可以被恢复,或者如果是的话,它不会遭受一些损坏。 但是,因为空间不能马上重新使用,所以很有可能你将恢复完整的100%被删除的文件。 使用已删除的文件恢复软件的用户常常惊奇地发现,它找到的文件在几个月甚至几年前就被删除了。 最好的反删除程序给你一个恢复文件完好的机会,甚至提供文件查看器的机会,所以你可以检查恢复之前的内容。
这是一个很好的阅读(但不是很技术): http : //www.tech-pro.net/how-to-recover-deleted-files.html
这并不像你想象的那么困难。 您需要了解如何将文件存储在fat32和NTFS中。 我建议你使用winhex用于数字取证的应用程序来检查你的地址计算是否正确。
即NTFS使用主文件记录来存储文件的数据集群。 取消链接会删除c中的文件,但是如果您查看源代码,则它将从表中删除条目并更新记录。 使用像winhex这样的应用程序来读取主文件记录的信息。 这里有一些有用的信息。
主引导记录 – 扇区0十六进制0x55AA是MBR的结束。 接下来将是mft文件名是mft头。 有一个标志来表示文件夹或文件(不知道在哪里)。 文件位于标志告诉如果文件被标记删除。 如果您要恢复已删除的文件,则需要更改此标志。 如果要访问主文件表中的数据,则需要群集大小和群集数以及数据开始计算起始地址的群集数。
不知道FAT32,只是使用相同的方法。 有一个有用的21 YouTube视频,它解释了如何使用winhex访问NTFS上删除的文件数据。 不确定的视频,只需键入winhex数字取证恢复删除的文件。 一旦你看这个视频,它会变得更清晰。 祝你好运
刚刚看了21分钟的YouTube视频如何恢复使用Winhex NTFS删除的文件。 不要忘记表示文件是否驻留的驻留标志。 这给你一些关于如何将文件存储在簇中或只是在mft数据部分(如果小)的想法。 如果您想要访问已删除的数据,则可能需要这样做。 这个视频是完美的开始,因为它包含了所有偏移字节位置,以访问相对于文件记录开始的大部分所需信息。 它甚至向您展示了如何为集群启动进行地址计算。 您需要使用指针以二进制格式访问表格,并向指针添加偏移量以访问所需的信息。 唯一的方法是通过整个表格,并对文件名字节进行二进制比较。 有些领域是小eindian所以请确保你有winhex来检查你的地址计算。
有成千上万的这样的节目,为什么要浪费时间在另一个上? 也许最好学习,分享或贡献现有的开源版本 。