切换到宽版
  • 2738阅读
  • 0回复

苦难与辉煌 一次数据恢复的经历(转) [复制链接]

上一主题 下一主题
 

只看楼主 倒序阅读 0 发表于: 2010-07-07
— 本帖被 Manboo 从 数据恢复教程及典型案例专区 移动到本区(2010-10-14) —
苦难与辉煌


    我有一个1T的移动硬盘,平时用来保存从网上下载来的各种资料。我最初分区的时候没有很好的规划,共分了五个区,第五个区540G用来存放电影。后来发现并没有那么多的电影值得保留,至今才有约60G的影片。而用来放纪录片的分区快用尽了,于是想将第五分区的缩小一些,创建一个新分区来放纪录科教片。
    用的工具还是最老套的PQmagic。PQ的操作分两步,第一,将分区缩小到270G;第二将剩余的270G创建成第六分区。当PQ操作完第一步的时候,突然报错,退出。这时我并不紧张,新分区没有创建成功,我手动创建就是了。但当回到资源管理器中点开缩小的第五分区时竟然一个目录或文件都没有显示出来。这时才意识到问题比较严重,但仍不是很紧张。因为我知道实际的数据并没有被删除,只是系统找不到而已,下面我要帮助系统找到他们。
    PQ可能太老了,根本对付不了现今越来越大的硬盘,以后要小心了。


    帮助系统重新找回目录和文件并没有我想象的那么简单。
    据我对硬盘分区的了解,我可以很快的将第五分区回复到当初的大小。只要修改第三间距和第四间距中分区大小信息即可。说我对NTFS一点了解也没有也不确切,至少我知道分区的引导扇区有关于分区的PBP参数,而且参数中有俩个非常重要:$MFT、$MFTMirr的起始簇号。并且我还知道在分区中还有一个地方对引导扇区做了备份。
    我在新的第五分区的最后一个扇区找到了引导扇区的备份,比较了一下,发现两处不同。第一,分区大小不同,备份中的数值正好是原分区的大小,这给我回复分区大小提供了直接的数据,不用自己换算了;第二,$MFTMirr的起始簇号不同,只要$MFTMirr或$MFT有一个正常,系统就能找回目录和文件。基于这两点,我算是看到了一点萤火虫臀部上的光辉。
    WinHex是手动恢复数据当仁不让的利器。然而当我信心满满的在WinHex中修改我硬盘的底层数据的时候,根本就想不到会出现“文件或目录损坏且无法读取”的后果。这个结果似乎比刚才更可怕,因为现在分区根本就不可用,修改之前好歹是可以使用的。不了解内情的人遇到这种情况,一着急可能会选择格式化分区。其实这只是系统没能正确找到MFT的入口而已,也就是说我修改的$MFTMirr的起始簇号并不正确,系统还是不能利用$MFTMirr的信息找回文件。那么真正的MFT入口在哪儿呢?
    由于我对NTFS文件系统的了解仅限于知道MFT的概念,如何分析 和利用其中的信息还一无所知,恢复的工作似乎就要停顿下来了。我不能眼睁睁的看着数据的丢失,也不能错过这个能让我有所提高的大好机会。


        手动恢复受阻,那么能不能利用数据恢复的工具呢?数据恢复的工具有很多,我常用Easyrecovery来恢复被误删除的文件,这个软件的其他功能尚未体验过。现在我选择的是GetDataBack(NTFS版)。这个软件和Easyrecovery一样要对所选分区进行扫描,这一扫就是8个小时。
      转过天来看扫描结果,GetDataBack扫描出了5个文件系统,根据可恢复的级别标成绿、黄、红三个等级。这五个文件系统的最大区别在于分区大小和$MFTMirr簇号和MFT入口。五个系统中有两个标明了MFT的入口为$MFTMirr,其余的都是未知。出于习惯,我将这五个系统的参数全部记录了下来,说不定将来会用得上。选择其中一个进行下一步操作,这时软件会根据扫描的结果重建目录和文件,居然一个也不少,我可以选择其中任意一个文件或目录进行恢复。恢复操作实际上是将所选的文件或目录复制到另外一个分区上,这一点和EasyRecovery是一样的。
      如此,我逐一的将所有影视文件全部恢复。心中一块石头落地。


    胜利来的如此之快,如此之易,让我不得不感叹现在软件能力之强。那我自己的能力能不能再提高呢?要想提高就必须对NTFS文件系统作比较深入的了解。能够找到的资料并不多。能够参考的出版物大概有两本:戴士剑的《数据恢复技术》、刘乃琦的《系统与数据恢复技术》,这两本书提供了比较详细的NTFS系统的技术细节,但也不够全面。网上雨荷数据安全论坛有一些恢复的例子。对我帮助最大的是一篇《手工恢复NTFS卷中误删除的文件》的文章。
  进行了以上一些技术储备后,我开始尝试手动恢复数据了。我先跳过对$MFT和$MFTMirr的纠缠,直接对文件进行恢复,乞求能将文件从原分区上完整的拷贝出来。NTFS对文件的存储分为两个部分,一个是文件记录(文件的相关信息,指示文件实际存储的位置),一个是文件数据实际的存储(纯数据部分)。 因此找到需要恢复的文件记录并正确解读其提供的信息十分重要。文件记录有记录头部和一系列的属性构成,这些属性中有标准信息(文件的创建、修改、访问时间等)、文件名(文件的名称)、数据(这是最重要的,包含文件的大小,系统分配的存储地址和空间大小)。我在$MFT所在簇的前后扇区不断寻找(通常文件或目录的文件记录跟在系统的$MFT等元文件的文件记录后),找到了一部名叫Bloody Sunday的avi电影(根据文件名属性),然后根据数据属性中的数据运行参数分析出文件的起始簇号和大小。接着又找到了这个电影的中英文字幕文件的文件记录,这样就可以完整的恢复出这部电影了。
  我算是比较幸运,因为磁盘没有经过多次删除和拷贝,剩余空间又很大,文件几乎没有碎片,在数据属性中只有一个数据运行,也就是说文件是存储在连续的空间内的,这是最容易恢复的。如果文件不连续,就会有多个数据运行来描述其存储的位置,这种情况下恢复也不难。就怕碎片太多,一个文件记录只有1K的空间,这1K的空间也不足以描述它的存储状况,而在属性中增加属性列表属性的时候,就没有数据属性和数据运行参数了(被属性列表指向了他处)。而对属性列表属性的介绍实在太少,即使有的书上描述了它的结构,我们也不能解读这些信息。遇到这种情况我就傻眼了。
快速回复
限100 字节
欢迎来到中国数据恢复技术联盟,请勿发表暴力、色情、广
 
上一个 下一个