1、FAT文件系统分析报告 实现平台 : PC硬盘 40G,操作系统 WinXP,测试软件 WinHex 参考资料: 数据恢复技术 戴士剑,陈永红编著 大容量硬盘修复技术及数据管理张钟澍编著 Fat32 报告人: 周俊辉( Tony) 完成时间: 2004.10.20 目录 一、基本概念 . 3 1、硬盘逻辑结构 . 3 2、 LBA, . 3 3、 C/H/S值, . 3 二、硬盘数据存储区域的划分 . 3 1、 MBR . 4 2、虚拟 MBR及其查找实例 . 5 3、 DOS引导区 DBR . 6 4、文件分配表 FAT . 9 5、文件目录表 FDT . 10 6、 DATA区 . 11
2、四、 FAT32文件系统根目录下文件查找实例 . 14 五、子目录下的文件查找举例 . 17 六、长文件名的实现及存在的问题 . 19 七、长文件名查找举例 . 20 一、基本概念 1、硬盘逻辑结构 硬盘是一个密封的腔体,里面密封着磁头、盘片(磁片、碟片)等部件,盘面号既磁头号,从 0开始编号。磁道从外向面编号,从 0开始。磁道被划成一段段圆弧,每段圆弧叫一个扇区,从 1编号。所有盘面上的同一磁道构成一个圆柱,叫做柱面。磁盘容量计算公式: 硬盘容量盘面数柱面数扇区数每扇区字节数(通常为 512) 2、 LBA, 全称 Logic Block Address,既扇区逻辑地址,它从 0开始编号,一
3、一对应硬盘上的物理扇区 3、 C/H/S值, 柱面、磁头、扇区号,一一对应物理扇区 二、硬盘数据存储区域的划分 MBR(63) DBR(32) FAT1 FAT2 DIR(32) DATA 说明: MBR 一般占用 63 个扇区(实际只占用 1个扇区) ;DBR 占用32 个扇区(实际只占用第 1 和第 6 扇区,第 1 扇区起作用,第 6 扇区为第一扇区的备份) ;FAT1=FAT2, FAT 文件为变长,隋分区大小、每簇扇区数的变化而变化 ;DIR 变化 最大,早期的系统中 DIR 是固定长度,为 32 个扇区,而每个文件目录项占用 32 个字节,所以,根目录下最多只能有 512 项(文件
4、和目录总和),软盘只有 112 项,超过这个数就不能再在根目录下建立文件或目录。后来为了突破这个限制,根目录采用和子目录一样的方式来管理,称为根目录文件,就没有这个限制了,从此也就不再有单独的根目录,而成为 DATA的一部分。甚至根目录文件并不一定紧跟在 FAT 之后,可以在 DATA 区任意的位置。 1、 MBR 既主引导记录区,位于 0磁道 0柱面 1扇区。共 512 字节, MBR引导程序占用其前 446 个字节 (偏移 0偏移 1BDH),隋后 64 个字节(偏移 1BEH 1FDH)为 DPT硬盘分区表,最后以“ 55AA”结束。 硬盘分区表结构: 偏移 意义 偏移 意义 0 自举标
5、志 8 本分区前已用扇区数 1 起始磁头号 H 9 2 起始扇区号 S 10 3 起始柱面号 CYL 11 4 分区格式标志 12 本分区总扇区数 5 终止磁头号 H 13 6 终止扇区号 S 14 7 终止柱面号 CYL 15 说明:柱面号的高 2位存放在扇区字节的高 2位 2、虚拟 MBR及其查找实例 起因:通过主引导记录定义 硬盘分区表,最多只能描述 4个分区,如果想要多于 4个分区,就要突破主引导记录中的分区描主法,这在某些时候也是突破硬盘容量限制的一种方法。我们采用一种虚拟MBR 技术来实现。分区表项描述为: C:盘分区表 D: 盘分区表 E: 盘分区表 F: 盘分区表 定义 C:盘
6、 定义 D:盘 定义 E:盘 定义 F:盘 描述剩余空间 描述虚拟 MBR 描述虚拟 MBR 描述虚拟 MBR 末用 末用 末用 末用 末用 末用 末用 末用 先查看硬盘的 0扇区 既 MBR的分区选项, C盘分区的起始扇区号( DBR位置)为: 0000003F 既 63 号扇区,扩展分区号(虚拟 MBR 位置): 01388B3B 换成十进制是 20482875 号扇区。查看 20482875 扇区的分区表项为 第一分区 0000003F( 63)是 D盘的 DBR 相对位置,那么 D盘的 DBR逻辑扇区计算为: 20482875 63 20482938 号扇区。 第二分区又指向系统盘 E
7、:的虚拟 MBR 位置(相对): 01C92C09十进制是: 29961225, E:盘分区的虚拟 MBR 位置计算为: 20482875 29961225 50444100 查看 50444100 号扇区为: 这里只有一个分区,偏移位置为: 0000003F( 63),所以 E:盘 DBR所在的扇区号为: 50444100 63 50444163,如果有 F:盘,则 E:盘的虚拟 MBR 的第二分区将指向它,如果形成一个环,系统本身并不会去判断它,它只是按照这个链忠实地寻找分区,而不进行任何额外的检测与处理,这所谓“逻辑锁”,表现为无法引导,不能访问硬盘。 3、 DOS引导区 DBR 硬盘各
8、分区的逻辑管理方式表现为,所有分区内的逻辑扇区都是从“ 0”开始编号,直至其最大值 1,涵盖整个分区,分区内的 0扇区称为 BOOT 区。由 Format 命令将 DOS 引导记录( DBR)写到该扇区,主要功能是完成系统的自举。 DOS引导扇区结构如下: ( 1)跳转指令 ( 2)厂商标识和 DOS 版本号,占 8个字节( 03 0A) ( 3) BPB(BIOS Parameter Block, BIOS 参数块 ) ( 4) DOS 引导程序,负责完成 DOS三个系统文件的装入 ( 5)结束标专“ 55AA” 硬盘 DOS 引导记录中 BPB参数信息: 偏移量 字节数 含义 00H 3
9、跳转到引导代码 03H 8 厂商标识和 DOS 版本 号 0BH 2 BPB参数信息 每扇区字节数 0DH 1 每簇扇区数( 2的整数倍) 0EH 2 保留扇区数( FAT32一般为 32) 10H 1 FAT 个数(通常为 2) 11H 2 根目录项数(早期版本允许最大目录基数) 13H 2 扇区总数(小卷,小于 32MB)( FAT16系统) 15H 1 磁介质描述符( F8表示硬盘) 16H 2 每 FAT 表所占扇区数(小卷, FAT16系统) 18H 2 每磁道扇区数 1AH 2 逻辑磁头数 1CH 2 当前分区前面隐含扇区 数(系统隐含扇区) 20H 4 扇区总数(大卷,大于 32
10、MB)( FAT32系统) FAT32区段 24H 4 每个 FAT 表所占扇区数(大卷, FAT32系统) 28H 2 标记 2AH 版本 2CH 4 引导目录第一簇,即根目录的起始簇 30H 2 FS 信息扇区, BOOT本身占用的扇区数 32H 2 备份引导扇区的位置 34H 7 保留,一般为 00H 40H 1 BIOS 设备(从 80 开始,编号到 85, 86 为光驱) 41H 1 未使用 42H 1 扩展引导标记 43H 4 序列号 47H 11 卷标 52H 8 文件系统 说明: 1、保留扇区是由 DOS 或 Windows 指定的被保留用做引导的扇区数。早期版本为 1 即 B
11、OOT 本身占用的 1 个扇区,较新的版本一般为 32。除本身占用一个外,有 31 个扇区保留未用,其中第 6扇区一般是 BOOT 的备份,在 BOOT损坏时,可覆盖 BOOT扇区修复 2、系统隐含扇区( Hidden Sectors): 指分区表中所描述的该分区的起始扇区至该逻辑盘 DBR 扇区间的扇区数。即 MBR或虚拟 MBR 至隋后的逻辑盘 DBR 扇区数,一般为 3F( 63) 而分区表中隐含扇区指每个 分区以前的扇区数。不固定。对 MBR隐含扇区是绝对位置,对于虚拟 MBR,隐含扇区是相对于本扩展分区 MBR 的位置。 第一分区 第二分区 第三分区 MBR DBR 及数据 虚拟 M
12、BR DBR 及数据 虚拟 MBR DBR 及 ( 1) ( 3) ( 4) ( 2) 第三分区 MBR 参数中的隐含扇区数 ( 1)指系统隐含扇区也指分区表中是隐含扇区 ( 2)指第二分区 MBR 参数中的隐含扇区数 ( 3),( 4)指系统隐含扇区数 4、文件分配表 FAT 文件分配表( FAT),是 DOS 文件管理系统用来记录每个文件 的存储位置的表格,它以链的方式存放簇号。 FAT 紧接着 DOS 引导扇区存放。磁盘上有两个 FAT,一个是基本表,另一个是备份。两个表的内容相同。每个 FAT所占用的扇区数取决于 DOS 版本、分区大小、每簇的扇区数等因素。可查 BPB参数查询到。 簇
13、号的长度由簇的多少决定,进而取决于 FAT表项的位数。 文件系统 区别 表示最大簇数 簇最大扇区 分区最大容量 FAT12 12 位表示一簇 4096( 12 次方) 64 128MB FAT16 16 位表示一簇 65536( 16 次方) 64 2048MB( 2G) FAT32 32 位表示一簇 4294967296 64 128TB 注:为提高磁盘利用率, FAT32 每簇一般为 8, 16 个扇区,软盘用12位 FAT 表项,磁盘分区文件系统一般规律: 小于 20740( 10M)用 12 位映射一个簇 小于 512M多于 2074( 10M)用 16 位映射一个簇 大于 512M用
14、 32 映射一个簇 在 FAT 表中,簇统计编号也是登编号。每一个登记项作为一个簇的樗信息占用一定的字节,该标专信息表项值含义如下: 表项值( 12 位) 表项值( 16 位) 表项值( 32 位) 簇描述信息含义 000H 0000H 00000000H 未使用的簇 002H FEFH 0002-FFEFH 00000002H-FFFFFFEFH 一个已分配的簇号 FF0H-FF6H FFF0H-FFF6H FFFFFFF0H-FFFFFFF6H 保留 FF7H FFF7H FFFFFFF7H 坏簇 FF8H-FFFH FFF8H-FFFFH FFFFFFF8H-FFFFFFFFH EOF(
15、文件结束簇) 在 FAT 簇登记项中, 0, 1号登记项是表头,簇的登记项从 2号开始,即磁盘的第一个文件从第 2簇开始分配。早期 DOS 版本中,系统文件 IO.SYS(或 IBMBIO.COM)所在的首簇号总是 2。 5、文件目录表 FDT 根目录下的所有文件及其子目录在根目录的文件目录表中都有一个“目录登记项”。每个目录登记项用 32 个字节,提供有关文件和子目录的信息。 FAT32文件系统目录项含义: ( 1) 0-7字节:文件名 ( 2) 8-10 字节:文件扩展名 ( 3) 11 字节:文件属性,按二进制定义,最高二位保留不用, 0-5位分别表示只读位、隐藏位、系统位、卷标位、子目录和归档位,当 11 字节为“ 0FH”时,表示该项为长文件名记录项。 ( 4) 12-13 字节:(仅长文件目录项有效)用 来存储其对应的短文件