一个FAT16分区“K”双击打开时出现如图4-276所示的提示信息。

FAT16文件系统DBR手工重建的实例-数据恢复迷

图4-276 打开分区“K”时出错

这个分区“K”所在的硬盘没有任何物理故障,显然是文件系统遭到破坏,所以系统会提示分区未格式化,用WinHex打开分区“K”,出现如图4-277所示的信息。

FAT16文件系统DBR手工重建的实例-数据恢复迷

图4-277 用WinHex打开分区“K”出错

看来WinHex也无法打开分区“K”,可以断定DBR一定有错误,只能用WinHex打开分区“K”所在的硬盘,然后跳转到“K”盘的DBR扇区,如图4-278所示。

从图4-278中可以看到“K”盘的DBR扇区已经被完全破坏。DBR是文件系统中的一个非常重要的扇区,这个扇区被破坏了,分区当然无法打开。下面来修复DBR扇区。

FAT16文件系统DBR手工重建的实例-数据恢复迷

图4-278 “K”盘的DBR扇区

DBR扇区的结构分为以下几个部分:跳转指令、OEM代号、BPB参数、引导代码和结束标志。同一文件系统类型的DBR扇区,除了BPB参数有部分不一样以外,其他各部分都是一样的,所以恢复DBR的方法是从同一文件系统类型的分区中复制一个DBR,然后再对BPB参数进行修改,就可以了。

现在将另外一个FAT16分区的DBR扇区复制到“K”盘DBR所在的扇区,覆盖原来的数据,如图4-279所示。

FAT16文件系统DBR手工重建的实例-数据恢复迷

图4-279 临时复制的一个DBR

其BPB参数的模板如图4-280所示。

FAT16文件系统DBR手工重建的实例-数据恢复迷

图4-280 复制过来的DBR扇区的BPB参数模板

因为同样是FAT16文件系统的DBR扇区,所以大部分BPB参数的值都是一样的,只有个别参数的值可能不一样,需要修改,这几个参数是每簇扇区数、保留扇区数、分区大小、FAT表大小,其他的都不用修改。

下面对这些值进行验证并修改。

第1步 验证“保留扇区数”。

保留扇区数也就是DBR与FAT1之间的扇区数,用WinHex搜索FAT1,搜索的设置如图4-281所示。

FAT16文件系统DBR手工重建的实例-数据恢复迷

图4-281 搜索FAT1

搜索发现4号扇区就是FAT1,所以“保留扇区数”的值应该为“4”。

第2步 验证“分区大小”。

因为该分区的分区表是完好的,所以可以从分区表中获得该分区的大小,其分区表如图4-282所示。

FAT16文件系统DBR手工重建的实例-数据恢复迷

图4-282 该分区的分区表

图4-282中选中的4个字节就是这个分区的总扇区数,值为22514DH,转换为十进制等于2 249 037,所以分区大小为2 249 037个扇区。

第3步 验证“FAT表大小”。

因为FAT1开始于4号扇区,在随后搜索找到FAT2开始于142号扇区,所以可以确定FAT表大小为138个扇区。

第4步 验证“每簇扇区数”。

每簇扇区数这个参数需要通过计算获得,计算方法如下:

①算出该分区中数据区的大小。计算方法:分区总扇区数−DBR保留扇区数−2×每FAT扇区数−FDT占用的扇区数,即2 249 037−4−2×138−32=2 248 725。

②算出该分区的FAT表中记录的FAT项的个数。计算方法:(FAT表大小×512)/2,FAT表大小乘以512是FAT表的总字节数,除以2是因为FAT16每个FAT项占16位,即2字节,结果为138×512/2=35 328。

③用①的结果除以②的结果就得到每簇扇区数为32。

这种算法一般不会刚好得到整数,需要四舍五入取整数。

BPB的参数都已计算完毕,用模板填入DBR即可,如图4-283所示。

FAT16文件系统DBR手工重建的实例-数据恢复迷

图4-283 修改后的BPB参数

填完后,存盘,分区就可以打开了,如图4-284所示。

FAT16文件系统DBR手工重建的实例-数据恢复迷

图4-284 修复后的“K”盘