FAT(File Allocation Table)
FAT,文件配置表。主要分FAT12/FAT16/FAT32,这三者可支配的大小越往后越大,不过协议大体相同。
FAT的整体结构图:
MBR
MBR是整个硬盘的起始引导处,不过对于U盘来说,MBR主要用来对整个U盘的空间进行分区,如图所示,可以分成4个大区
MBR每个字段所代表的含义:
我们只关心,第一个分区所在的位置,从1C6开始的4字节表示第一分区所在的扇区处(每个扇区512字节),沿着这条信息我们能找到DBR
DBR
DBR用来记录FAT所需的各项参数,包括扇区的大小,簇的大小,FAT1/FAT2的所在位置及大小
DBR各个字段所代表的含义
我们关心的字段如图中标示,根据这个信息我们就能找到FAT1/FAT2/DATA这三个分区
FAT1/FAT2
FAT2是对FAT1的备份,以防数据破坏不能修复。
FAT通过一整个FAT1来对整个DATA分区的数据进行标示与管理:
对于fat32来说,每4个字节表示一个簇,一个簇就管理着一段内存(n个扇区,在DBR有记录),每四个字节所代表的含义:
DATA
DATA区主要包含两部分,一个是目录和文件(统称目录项),另一个是数据;对于目录项的含义如下:
一个目录项由32个字节组成,通过目录项我们可以找到此项对应的簇号,然后在通过簇号链我们就能得到此项对应的数据,FAT就是通过这个原理来运作数据的。
那么整个数据的根目录在哪呢?对于FAT32来说,根目录存在簇号2代表的地方,由于簇号0和1另有所用,它们不占用实际的簇空间,所以一般来说根目录就在DATA区域的起始位置。
工具
如果想要查看FAT的具体协议,可以通过winhex或者DiskDenius工具来查看,如下图是通过DiskDenius打开一个U盘所得到的信息:
DBR每个字段的含义:
每个地址的数据: