U盘中的文件和文件夹显示为乱码的数据恢复
华山剑客
一朋友的U盘(128M),原来装的基本上是图片,现在文件夹和文件名显示乱码:


一、做U盘的镜像(用WinHex做U盘的镜像)



1、到根目录看看




3、到FAT1去,


4、到FAT2


分析:和FAT1的一样,看起来也没有问题,目前这个U盘的数据分布情况如下:
|
32 |
992 |
992 |
DIR |
|
DBR |
FAT1 |
FAT2 |
DATA |


5、搜索FAT表





第1948扇区

6、找根目录区(DIR)或DATA区开始的扇区
说明:FAT32分区中的根目录不是的固定的区域、固定大小(与FAT16分区不同),但一般情况下是从第二簇(即DATA区开始的位置)开始的,即:DATA区开始的数据是根目录数据。
寻找方法:从DATA区向上找,比如先到根目录(第2016扇区,其实在现在的U盘中不是根目录,是DATA区中间部分),然后向上搜索(方法见下图),搜索到后看下一个扇区是不是根目录或者DATA区开始的数据:



⑴主要分析没有删除的的子目录(即文件夹)数据,从上图中可以找到两个子目录:


子目录2:建利荣华 子目录数据起始的簇号:10002H 即第65538簇
⑵找子目录数据(不能直接到715簇或者65538簇去找,因为现在的DBR有问题),然后算出每簇扇区数及确认DATA开始的位置。
方法:搜索2E20202020202020





|
该子目录所在的扇区数 |
目录项中描述的这个扇区的所在的簇数 |
|
3136(无内容) |
608 |
|
3198(有内容,但删除) |
639 |
|
3350(有内容) |
715 |
|
132996(有内容) |
65538 |
①原来分区中的每簇扇区数(重建DBR时会用到这个值)
(3198-3136)÷(639-608)=2
(3350-3198)÷(715-639)=2
(132996-3350)÷(65538-715)=2
结论:每簇扇区数是:2
②计算DATA开始的扇区数(假设是X)
3136=X+(608-2)×2 X=1924
3198=X+(639-2)×2 X=1924
3350=X+(715-2)×2 X=1924
132996=X+(65538-2)×2 X=1924
结论:DATA区的开始扇区是第1924扇区,而且根目录在DATA区开始的位置
⑶目前的情况
|
|
|
|
DIR |
|
DBR |
FAT1 |
FAT2 |
DATA |
目前有两个不同的FAT表(不讨论第1024扇区那个备份的FAT表),先要判断哪个是正确的,方法如下:从前面分析的数据可知:第715簇是一个子目录的起始簇,那么在FAT表中,不会有一个簇指向它(因为如果有一个簇指向第715簇,那么第715簇就不可能是一个开始的簇),715换成16进制就是:2CB,在FAT表中应该表示为:CB020000,所以,如果在某一个FAT表中能找到CB020000,那么这个FAT表就不是原来正确的FAT表,在整个FAT表中(1924扇区前)搜索CB020000:



|
|
|
|
DIR |
|
DBR |
FAT1 |
FAT2 |
DATA |
FAT1开始的位置为:990-934=56(也是DBR中保留扇区的扇区数)
因此原来的U盘数据分布情况:
|
56 |
934 |
934 |
DIR |
|
DBR |
FAT1 |
FAT2 |
DATA |
1、FAT2→FAT1
因为第1024扇区的数据(从第4352簇―――4479簇)由于有原来的FAT2的数据而覆盖了,现在先要修复一下,但不知道原来是多少,现在只能用一个连续的没有碎片的,没有结束标志的数据联结上,能不能正确恢复,要看运气了,等恢复好后根据恢复情况再进一步微调。找一下从32开始的这个第4352簇―4479簇的数据,发现全部是连续的,符合条件:

把它复制到第1024扇区去:











(只修改保留扇区数和每FAT扇区数据,因为其它的数据是正确的)





















