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

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

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

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

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

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

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

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

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

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

首先考虑到ExFAT分区的DBR有一个备份,在分区的12号扇区,如果能把这个DBR找到,直接复制过来就可以了。

跳转到分区相对的12号扇区,结果这个扇区也被破坏了,已经不是DBR的结构。

用WinHex又搜索“55 AA”标志,结果还是找不到DBR的备份。通常情况下,ExFAT分区是有自我保护机制的,数据被破坏的概率是比较小的,但也不能完全排除被破坏的可能。现在来看“K”盘的DBR及其备份确实被破坏了,那么只能采取手工重建的方法来修复这个DBR。

手工重建ExFAT文件系统DBR的方法与手工重建FAT文件系统DBR的方法类似,都是以计算并修改BPB参数为主,下面实际操作。

第1步 复制同版本的DBR

先从其他ExFAT分区中复制一个完好的DBR扇区,放到“K”盘的第一个扇区处。但不能把这个DBR当作“K”盘的DBR直接使用,因为虽然目前这个DBR在结构上没什么问题,但其中的参数跟K盘的文件系统结构不匹配,所以无法用这个DBR访问K盘。

第2步 计算并修改BPB参数

ExFAT文件系统的BPB中需要修改的参数有:

  • 隐藏扇区数(也就是分区的相对开始扇区号);
  • 扇区总数(也就是分区大小);
  • FAT起始扇区号;
  • FAT扇区数;
  • 首簇起始扇区号;
  • 总簇数;
  • 根目录首簇号;
  • 每簇扇区数。

这8个参数需要计算并修改,其他的就不用修改了。

我们先用ExFAT的DBR模板查看一下从其他分区复制过来的DBR,如图4-574所示。

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

图4-574 复制过来的DBR的模板

图4-574里圈中的8个参数就是需要计算并修改的,下面开始计算这些参数,为了计算的方便,计算时并不一定按照上面排列的顺序进行。

(1)隐藏扇区数

隐藏扇区数这个参数也就是分区的相对开始扇区号。如果硬盘的分区表没有被破坏,这个参数可以从分区表中查看。分区“K”是其所在的硬盘的第一个分区,它的分区表在MBR中。MBR并没有破坏,用分区表模板查看这个分区表,如图4-575所示。

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

图4-575 K盘的分区表模板

从分区表模板中可以看到“隐藏扇区数”为63。

(2)扇区总数

扇区总数也可以从分区表中看到,查看图4-575的分区表模板,该值为60 050 907。

(3)FAT起始扇区号

FAT起始扇区号可以通过搜索FAT表的方法获得。搜索FAT表的具体方法是搜索FAT表头标志“F8 FF FF FF”,如图4-576所示。

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

图4-576 搜索FAT表的方法

通过搜索很快找到了FAT表,如图4-577所示。

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

图4-577 FAT表

搜索到的FAT表位于硬盘的2111号扇区,减去分区开始扇区号63,所以FAT表开始于分区的2048号扇区。

另外还能够从FAT表中获得一些有用的信息。因为分区的首簇(也就是2号簇)一定是分配给簇位图文件使用的,现在2号FAT项中的值为“00 00 00 03”、3号FAT项中的值为“00 00 00 04”、4号FAT项中的值为“00 00 00 05”、5号FAT项中的值为结束标志“FF FF FF FF”,这就说明簇位图文件占用4个簇。把这个信息记住,后面的计算会用到。

(4)首簇起始扇区号

首簇起始扇区号的计算方法是找到簇位图文件的开始位置,因为簇位图文件一般都占用第一个簇。数据区开始的一些簇一般都会被使用,所以簇位图文件的前几个字节大多都是“FF”,如果理解了这一点,就能够通过搜索“FF FF”来找簇位图文件的开始地址。搜索设置如图4-578所示。

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

图4-578 搜索簇位图文件的设置

结果在10 303扇区搜到了簇位图文件,如图4-579所示。

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

图4-579 簇位图文件

簇位图文件开始于硬盘的10 303号扇区,减去分区的开始扇区号63,所以簇位图文件应该开始于分区的10 240号扇区,这也是分区首簇的开始扇区号。

(5)每簇扇区数

簇位图文件之后就是大写字符文件了。大写字符文件的内容是固定的,前4个字节是“00 00 01 00”,通过搜索这4个字节就能够找到大写字符文件的开始地址,这样就能算出簇位图文件占用的扇区数,而刚才已经算出簇位图文件占4个簇,那么每簇扇区数就可以算出来了。

搜索大写字符文件的设置如图4-580所示。

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

图4-580 搜索大写字符文件的设置

结果在10 559扇区搜到了大写字符文件,如图4-581所示。

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

图4-581 大写字符文件

大写字符文件开始于硬盘的10 559号扇区,减去分区的开始扇区号63,所以大写字符文件应该开始于分区的10 496号扇区。

刚才计算过簇位图文件开始于分区的10 240号扇区,用大写字符文件开始扇区号10 496减去用簇位图文件开始扇区号10 240,得到簇位图文件的大小为256扇区,同时簇位图文件占用4个簇,所以分区的每簇扇区数为256除以4,等于64。

(6)根目录首簇号

因为簇位图文件占用4个簇,也就是2号簇、3号簇、4号簇、5号簇这四个簇,大写字符文件的大小固定为5836字节,在当前分区中也就是一个簇,即6号簇,这在FAT表中也看的出来。大写字符文件之后就是根目录的开始了,所以根目录首簇号是7号簇。

跳转到7号簇,内容如图4-582所示。

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

图4-582 7号簇的内容

从前三个目录项看,显然这就是根目录,所以根目录首簇号为7。

(7)总簇数

知道了簇大小,计算总簇数就很容易了。用数据区的总扇区数除以每簇扇区数,也就是分区的总簇数了。

因为当前分区大小为60 050 907扇区,分区首簇的开始扇区号是10 240,所以数据区大小为60 050 907-10 240=60 040 667扇区。用60 040 667对每簇扇区数64做取整运算,即60 040 667÷64=938 135,这就是数据区的总簇数了。

(8)FAT扇区数

FAT表所占的扇区数不能直接用分区首簇的开始扇区号减去FAT表开始扇区号这种方法来计算,因为在FAT表之后往往还有很多保留扇区,这样计算就很不准确。

可以用分区的总簇数来计算FAT扇区数。因为分区中的每一个簇对应FAT表中的一个FAT项,刚才计算了分区中的总簇数为938 135,而FAT表中还有两个保留的FAT项,即0号项和1号项,所以FAT表中的FAT项总数为938 135+2=938 137。ExFAT的每个FAT项占4字节,这样就可计算FAT表的总字节数为938 137×4=3 752 548,再将此值除以512,等于7329.19,但现在还不能直接把这个数值当作FAT表的扇区数。在ExFAT文件系统中,FAT表的大小都是簇大小的整数倍,而7329并不是当前分区的簇大小64扇区的整数倍,再经过一个简单运算,可以算出7360是64的整数倍,并且是大于7329又最接近7329的一个数值,所以当前分区FAT表大小是7360扇区。

到此为止,8个参数全部计算完成。

以上讲解的计算方法并不是唯一方法,碰到实际情况时应该因地制宜具体分析,采取最佳方法进行计算。

第3步 保存修改的BPB参数

将计算好的8个BPB参数填入DBR中。如果有模板就用模板填,没有模板也可以直接在DBR中填写,但要注意,在模板中按照十进制数填写,在DBR中直接填写则需要按照Little-Endian字节序填十六进制数。填写好存盘,再双击“K”盘就可以打开了。