内容提要:客户拿来一32M的U盘,提示未格式化,插上电脑一看,容量都可以认到,恢复有希望。打开WinHex,首先做好镜像,接下来分析U盘内容,转到0扇区,有MBR,在MBR中入指明DBR从32扇区开始,如下图:
转向32扇区,出来内容都是FFFF填充,如下图:
继续往下翻,发现下面的好多扇区都和32扇区一样,都是FFFF填充。用WinHexr的搜索功能搜eb5890,也没有找到,说明DBR已经被破坏了。接下来看看FAT表是否被破坏,用WinHex的搜索功能搜找F8ff,结果在96扇区找到了一个FAT表,继续往下找,没再找到,就一个FAT表。
在这里算了一下,96-33=63,再用96+63=159,这里63是扇区的个数,表示DBR开始的FAT1表到FAT2表之间的扇区数,也就是FAT表的大小(现在只是猜想),转到159扇区,看到159扇区中数据,前面的158扇区全部是0,说明从159扇区开始是FDT,再下翻32扇区,转到191扇区,正好有一个根目录,至此,这个U盘的结构已经清楚了:
MBR 0扇区
DBR 32扇区
FAT1 33扇区开始,大小 63个扇区,FAT2 96扇区开始,
FDT 159 扇区开始,数据区从191扇区开始。
接下格式化U盘,把U盘的DBR写入到镜像的32扇区中,
在这里要修改下一DBR参数,按我们前面所算的,FAT1表从33扇区开始,Fat2表从96扇区开始,DBR在32扇区,按照清源大侠的懒人改Fat表法,修改FAT表的个数、大小,保留扇区数,这里分别设置为1、63、64,(原来的为2、248、8可以对照下面两个图,前面有星号表示是修改过的)然后保存并重新打开,怪事,竟然不对,仔细算了一下,应该没错啊,做了几次都不行。后来突然想到,是不是簇大小有问题,格式化后的簇大小是01,按照公式算了一下,簇总数是63*512/2-2=16126,数据区大小是64000-2*63-32-32-1=63809,簇大小是63809-16126=3.95,我们取4,修改簇大小,保存再打开,数据完美恢复。