您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 第6章ExFAT文件系统数据恢复.
ExFAT文件系统也称为扩展文件分配表文件系统,由此也可知它是由FAT文件系统扩展而来。ExFAT继承了原FAT类文件系统的架构,使用FAT表、目录结构等对数据进行管理。但ExFAT对FAT表项进行了扩展,在FAT32文件系统中,每个FAT表项虽然占用4个字节(32bit),但却只使用了其中的28bit,所以它管理的簇地址并不能够达到32bit的理想上限。ExFAT则启用了FAT32原来未使用的4bit,真正使可管理的地址编号达到32bit的上限。这是ExFAT文件系统可管理容量增大的一个原因。ExFAT对簇的大小进行了扩展。早先的FAT类文件系统,簇的上限为32KB,而ExFAT则将这个上限扩展到32MB。实际上,理论上这个上限值可以达到2的255次方,只不过微软将其限制在了32MB以内。这也使得ExFAT可管理的容量大大增加。在FAT32中,分区所占用扇区数用4个字节表示,ExFAT则使用8个字节表示,这也使ExFAT在可管理的分区大小上有了非常大的突破。不过,由于MBR分区表的局限性,虽然文件系统本身可以管理超过2TB的空间,但使用4个字节表示扇区数的分区表项最大只能表述到大约2TB,所以使用MBR分区表表述的分区,即使使用ExFAT文件系统,也无法突破2TB的容量限制。ExFAT支持更大的单一文件。FAT32中,文件的大小使用4个字节表述,可表示的单一文件上限大约为4GB。ExFAT使用8个字节对文件大小进行表述,可表示的单一文件大小上限大约为16EB。由于ExFAT仍然属于FAT类文件系统,所以它的布局结构总体上仍与FAT12/16/32大同小异,如图6.1所示。ExFAT保持了FAT类文件系统的总休架构,大致分为DBR及其保留扇区、FAT表和用户数据区三大部分。DBR及其保留扇区是FAT表前的区域,大致可分为三个部分,一是主引导区域,二是备份引导区域,再就是其他保留区域。主引导区域通常占用0~11号扇区,其中0号扇区作为DOS引导记录,简称为DBR;备份引导区域占用12~23号扇区,其中12号扇区是DBR的完整备份;由24号扇区开始至FAT表前一个扇区这部分通常不被使用,我们权且称其为其他保留区域。FAT表区域由FAT表组成,不同的是,目前01.00版本的ExFAT文件系统通常只有一个FAT表(事务ExFAT---TexFAT文件系统有两个FAT表),FAT表中的每个FAT项占用4个字节,并全部使用这4个字节的32个bit。用户数据区则用于存储用户数据。ExFAT的数据区的起始簇号也是2,该簇通常由簇位图文件占用,其位置如图6.1中③所示,该文件的各种信息记录在根目录下的一个0x81类型的目录项中。跟在簇位图文件后的是大写转换表文件,其位置如图6.1中④所示,这个文件的大小是固定的,为5836个字节。再后面则是根目录,这是所有文件及文件夹的入口,其位置如图6.1中⑤所示。根目录之后,如图6.1中⑥所示,是真正的用户数据区。ExFAT文件系统也将0号扇区做为引导记录扇区,除引导信息外,还记录着文件系统的各项参数,如分区大小、FAT表位置及大小、簇起始位置、根目录起始簇号、每扇区大小、每簇扇区数等等。ExFAT引导记录扇区的主要结构见表6.1。(1)0x00~0x02:3个字节,跳转代码。(2)0x03~0x0A:分区类型标志,也称为OEM标签,是一个8字节的ASCII码,用以说明文件系统的类型名称,即“4558464154”,明文“EXFAT”,剩余未用的字节使用“20”填充。由于ExFAT与NTFS一样使用0x07做为分区表中的分区类型值,单纯由分区表项中的该值无法判断这个分区是NTFS分区还是ExFAT分区,这时可以通过引导记录扇区中的分区类型标志值对它们进行区分。(3)0x0B~0x3F:53个字节,全部为“00”。(4)0x40~0x47:8个字节,分区隐藏扇区数。注意:实验中发现,该值为当前扇区的物理扇区号,即使该分区位于扩展分区内也不例外,这点与FAT32或NTFS引导记录扇区中“分区前已用扇区数”的描述方法略有不同。(5)0x48~0x4F:8个字节,分区扇区总数。(6)0x50~0x53:4个字节,FAT表起始扇区号,该值为相对于文件系统0号扇区而言。(7)0x54~0x57:4个字节,FAT表扇区数。(8)0x58~0x5B:4个字节,首簇起始扇区号,该值用以描述文件系统中的第1个簇(即2号簇)的起始扇区号。通常2号簇分配给簇位图使用,因此,该值也就是簇位图的起始扇区号。虽然该簇跟在FAT表后,但实际上它并不一定等于FAT表起始扇区号加上FAT表的大小。(9)0x5C~0x5F:4个字节,分区内的总簇数。(10)0x60~0x63:4个字节,根目录起始簇号。(11)0x64~0x67:4个字节,卷ID。(12)0x68~0x69:2个字节,文件系统版本。(13)0x6A~0x6B:2个字节,卷标志。该标志用以描述主FAT号、卷是否干净等信息。(14)0x6C~0x6C:1个字节,每扇区字节数,表示方法为,假设此处值为N,则每扇区大小字节数为2的N次方个字节。此处的值通常为“09”,即每扇区大小字节数为512。微软将该处的值限定为最大为12,也就是每扇区大小字节数最大为212=4096。(15)0x6D~0x6D:1个字节,每簇扇区数,表示方法为,假设此处值为N,则每簇大小扇区数为2的N次方个扇区。此处值最小为1,最大值取决于每扇区大小字节数,因为ExFAT的簇大小上限为32MB,也就是225个字节,所以0x6C处的值与0x6D处的值相加不得超过25。(16)0x6E~0x6E:1个字节,FAT表个数,事务ExFAT中为2个FAT表,版本01.00只有一个FAT表。(17)0x6F~0x6F:1个字节,介质描述符。(18)0x70~0x70:1个字节,似乎是卷中已用簇空间的百分比。(19)0x71~0x77:7个字节,保留。(20)0x78~0x1FD:390个字节,引导代码。(21)0x1FE~0x1FF:2个字节,有效结束标志“55AA”。如果扇区大小超过512个字节,“55AA”仍然位于扇区的最后两个字节,引导代码至“55AA”之间可能会使用“00”进行填充。现在,我们来实验分析一个ExFAT文件系统的引导记录扇区部分参数,如图6.2所示。(1)0x00~0x02:3个字节,“EB7690”,跳转代码。(2)0x03~0x07:分区类型标志,“4558464154”,明文“EXFAT”。(3)0x0B~0x3F:53个字节,全部为“00”。(4)0x40~0x47:8个字节,“3F00000000000000”,分区起始扇区号,63。(5)0x48~0x4F:8个字节,“00823E0000000000”,分区扇区总数,4096512。(6)0x50~0x53:4个字节,“80000000”,FAT表起始扇区号,128。(7)0x54~0x57:4个字节,“00020000”,FAT表扇区数,512。(8)0x58~0x5B:4个字节,“80020000”,数据区起始位置扇区号,640。(9)0x5C~0x5F:4个字节,“FEF90000”,卷内的总簇数,63998。(10)0x60~0x63:4个字节,“04000000”,根目录起始簇号,4。(11)0x64~0x67:4个字节,卷ID。(12)0x68~0x69:2个字节,“0001”,文件系统版本,01.00。(13)0x6A~0x6B:2个字节,“0000”,卷标志。(14)0x6C~0x6C:1个字节,“09”,每扇区字节数,即扇区大小为29=512字节。(15)0x6D~0x6D:1个字节,“06”,每簇扇区数,即26=64个扇区。(16)0x6E~0x6E:1个字节,“01”,FAT表个数,1。(17)0x6F~0x6F:1个字节,“80”,介质描述符。(18)0x70~0x70:1个字节,“00”,卷中已用簇空间的百分比,这是一个刚刚格式化的文件系统,基本尚未使用。(19)0x1FE~0x1FF:2个字节,有效结束标志“55AA”。如果我们的WinHex已经集成了ExFAT的引导扇区模板,这些参数也可以使用WinHex模板来查看。打开WinHex的模板管理器,选择BootSectorexFAT模板,如图6.3所示。双击模板后就可以查看ExFAT的DBR信息了,如图6.4所示。在DBR及其保留扇区之后是FAT(FileAllocationTable)即文件分配表,其具体位置由DBR的BPB参数中偏移量为50H~53H的4个字节描述。在FAT12/16/32中,FAT表不只用于记录FAT链,同时还用于表示当前FAT对应的簇是否被使用:表项为0表示该表项对应的簇未使用,否则为已分配使用。ExFAT文件系统的FAT表则只用于描述FAT链,而不再用以说明某个簇的分配情况,簇的分配情况另外使用簇位图进行描述。FAT32中,虽然每个FAT表项占用32个bit,但真正使用的却只是其中的28个bit。ExFAT的FAT表项也占用32个bit,并且全部启用了这32bit。ExFAT中,FAT项的取值含义见表6.2。分区刚刚格式化后,未被分配使用的FAT项将会设置为零,表示该FAT项对应的簇是空闲的。同时,由于ExFAT文件系统的FAT表则只用于描述FAT链,而不再用以说明某个簇的分配情况;当一个文件占用多个簇时,这些簇的簇号可能是连续的,也可能是不连续的;如果文件存放的簇不连续,这些簇的簇号就以簇链的形式登记在FAT表中;而如果文件存放在连续的簇中,FAT表则不登记这些连续的簇链,这些簇链的FAT表项取值也为零。FAT表的前五个FAT项通常都有专门的用途,0号FAT项用来存放分区所在的介质类型,比如硬盘的介质类型为“F8”,那么硬盘上分区的FAT表的第一个FAT项就固定为“F8FFFFFF”;1号FAT项一般都固定为“FFFFFFFF”;从2号表项开始每个FAT表项与数据区中的簇进行一对一的映射,并且ExFAT的第一簇(也就是2号簇)分配给簇位图文件,第二簇(也就是3号簇)分配给大写转换表文件,第三簇(也就是4号簇)分配给根目录,所以FAT表的第2、3、4表项一般情况下都为“FFFFFFFFF”。图6.5为一个新格式化的ExFAT文件系统的FAT表。由图中可以看到,2、3、4号FAT项都写入了结束标记0xFFFFFFFF,说明这三个FAT项对应的簇分别分配给了三个文件或目录。这三个文件或目录即簇位图文件,大写转换表文件和根目录。分区在格式化为ExFAT文件系统后,会创建两个元文件,一个是簇位图文件$BitMap,一个是大写转换表文件$UpCase,下面对这两个文件作简要分析。ExFAT文件系统的FAT表之后就是数据区了,但数据区并不一定紧跟在FAT表之后,FAT表之后可能会有一些保留区。数据区的具体开始位置由DBR中的“首簇起始扇区号”来确定,而数据区的第一个簇就是2号簇,2号簇一般就分配给簇位图文件使用。以一个刚完成格式化操作的分区为例,我们观察其DBR,内容如图6.6所示。偏移58H~5BH处可以看到“首簇起始扇区号”为384,跳转到384扇区,内容如图6.7所示。该扇区只有一个字节“07H”,这就是簇位图文件的内容。簇位图文件类似于NTFS文件系统中的元文件$BitMap,它的作用是用来管理分区中簇的使用情况。簇位图文件中的每一位,映射到数据区中的每一个簇。如果某个簇分配给了文件,该簇在簇位图文件中对应的位就会被填入“1”,表示该簇已经占用;如果簇没有被使用,它们在簇位图文件中对应的位就是“0”。图6.7中簇位图文件的内容为“07H”,换算成二进制等于“00000111”,这8位就对应数据区中的8个簇,也就是2号簇到9号簇这八个簇。从“00000111”这个二进制序列中我们可以看出2、3、
本文标题:第6章ExFAT文件系统数据恢复.
链接地址:https://www.777doc.com/doc-2110900 .html