前不久,由于静电或者病毒,我的U盘突然无法读出数据了,打开时系统提示需要格式化。(如果你想恢复数据,请千万别格式化,也不要做任何写操作。切记!!!如果数据很重要,建议直接妥善保存存储介质,并送交数据恢复公司。)
我先用数据恢复软件进行恢复,如:易我文件恢复向导,Easyrecover,getdate back,undelete_plus等,均失败。(根据经验,易我文件恢复向导,效果不错,但这次也失去了作用)。
由于U盘被破坏的时间很短,所以遭到破坏的文件应该不多。这是我的精神支柱。
仔细观察没有发现MBR,FAT1,FAT2,目录,等数据
看来修复的难度很大。加之对于文件系统不甚了解,想恢复数据难度就更大了。于是一边学习FAT文件系统(我的另一篇文章中有,供大家学习。或登录WWW.SJHF.NET查找)
多次用WINHEX查看U盘后,我在0x3C3C4000处发现了MBR,隔了一个扇区发现了,FAT1,FAT2(不完整,但没关系,他是FAT1的备份吗)在MBR中知道我的我的分区为FAT16隐藏扇区两个,每个FAT为0xff大,加上目录32个扇区,对了每簇为32扇区。一共是0X44000字节
我把从0X0到0X44000的数据先复制出来,备份。然后吧MBR,FAT1,FAT2(经过修复的)复制回去。
这次U盘可以打开了,但文件夹的名字全是乱码,文件的大小也都不对。
考虑是目录错了。
看来恢复文件艰难重重。
我已经打算放弃了。
用WINHEX查找一些还能看到的文本文件,C语言文件
把他们先复制出来吧。
我突发奇想,既然FAT完好,我只要找到每个文件的开始顺着FAT就可以找到完整的文件了,虽然没有文件名。
在查找文件时,我发现了几个子目录,这让我兴奋,因为这里有文件名,文件大小,更重要的有文件开始的簇号。
因为文件开始保存的扇区应为0X44000 + (簇号-2) * 每簇的扇区数(我这里是32)
令我吃惊的是根据这个公式我没有找到相应文本文件。而在他的附近找到了
是不是我的0X44000不对呀!!!!
在后续的查找中在0X3D1CC000处又发现了FAT,后面还有一个目录,根据观察(那个目录我熟悉)应该是根目录,看来里数据恢复的日子不远了,我把这个目录复制了回去就是0X40000处
在打开U盘,文件根目录的文件名正确了
但是下一级目录还是错误的,并且文件不能打开。
郁闷,看来应该是数据区的起始地址错了。
看来我只能试着修改隐藏扇区数来做调整了。
祝我幸运吧!
文件结构的学习建议去WWW.SJHF.NET
看来我是不幸的
簇号是混乱的,我晕
先做个备份,U盘是要用的,数据以后有心情了恢复吧。手工填写FAT是疯狂的。