FAT文件系统结构分析
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
17、文件恢复注意事项
• 如果某文件被删除,而该分区又被写入了新文件,则误删文 件的目录项和簇位置可能被覆盖,导致文件无法被恢复。因 此在文件被误删除后是禁止往该分区写入任何信息的。 • 恢复文件时,为了避免恢复错误带来的影响,应当将恢复的 数据写入到其他盘的新文件中,即尽量不对原数据造成影响。 • 有的情况下数据是不可能恢复的,如数据被覆盖、低级格式 化、磁盘该位置物理损坏等。
2、簇
• 在FAT文件系统中,存储文件的基本单位是簇。一个簇由 1~128个扇区组成,但必须是2的n次方倍。 • 软盘的一个簇由一个扇区组成,硬盘分区的簇通常由8个扇 区组成,计4KB。 • 在一个分区中的簇大小是固定的,其大小在引导扇区的BPB (BIOS参数块)中给出。
3、簇大小
• 操作系统以簇为单位给文件分配空间,通常每个文件会浪费 掉0.5簇空间。 • 如果把簇空间设置的大些,则会造成浪费空间较多,如果簇 空间过小,则会造成FAT表增大,使得链表加长,同样会浪 费空间,而且使访问速度降低。 • 簇大小一般由格式化程序自动指定,在32位系统中一般为 4KB~16KB。
FAT32的BPB参数描述-1
偏移 0H 3H 0BH 0DH 0EH 10H 11H 长度 3B 8B 2B 1B 2B 1B 2B 跳转指令,跳至后面引导记录开始处(FAT32从5AH处开始) 文件系统和版本的OEM标志(MSDOS 5.0或MSWIN4.1) 每扇区字节数(通常为200H) 每簇扇区数(值为2的N次方,通常小于64) 保留扇区数(本分区中FAT表之前的扇区总数,通常FAT16为1,FAT32为20H或24H) FAT表个数(通常为2) FAT16系统为根目录最大项,FAT32系统为0 描 述
FAT系统簇号标记说明
FAT12 0 0 FAT16 0 FAT32 未用的空簇(可分配) 值含义
1~FEFH
FF0H~FF6H FF7H FF8H~FFFH
1~FFEFH
FFF0~FFF6H FFF7H FFF8H~FFFFH
1~0FFF FFEFH
0FFF FFF0H~0FFF FFF6H 0FFF FFF7H 0FFF FFF8H~0FFF FFFFH
5、FAT引导扇区分析
• 引导扇区的头3个字节是跳转指令,如EB 58则表示跳至当 前偏移58H处指令执行。 • FAT引导扇区的BPB部分从偏移3开始,存放了关于该分区 的重要信息,如大小、位置、卷标等。该部分在格式化时产 生。 • 接下来是引导记录程序(DBR),它在安装系统的时候产 生,内容随系统不同而变化。 • 最后两个字节是引导扇区结束标记。
16、目录项编辑实验
1. 打开某磁盘,在根目录下创建一个文件,取名ABC.TXT, 随意输入内容后保存。然后用Winhex软件打开该分区,找 到根目录位置中的该文件目录项。 2. 将文件名改为小写的abc.txt,保存后,在我的电脑中打开 该文件,观察效果并思考原因。 3. 同样在根目录下创建一个文件123.TXT,用Winhex软件找 到该文件的目录项,将属性字节改为3FH,保存后,在我 的电脑中查找该文件,观察效果并总结。 4. 将123.TXT的属性值还原,根据目录项的起始簇字段在 FAT表中找到该簇项,然后在数据区中找到对应扇区。
0CH 0EH~0FH
FAT32目录项结构-2
偏 移 10H~11H 12H~13H 14H~15H 16H~17H 文件最后访问日期(格式同修改日期)。 文件创建日期(格式同修改日期)。 文件起始簇号的高16位。 文件最后修改时间,其中高5位代表小时,中6位代表分钟,低5位代表以2s为增量的秒。 数 据 含 义
4、FAT引导扇区结构
• FAT文件系统的引导扇区也只有一个扇区,它是由格式化工 具生成的。它通常在系统安装时生成,位于该分区的最前端。 • 软盘没有分区表,整个软盘被视为一个分区,软盘的第一个 扇区就是系统引导扇区。 • 引导扇区主要包含BPB(BIOS参数块)、DOS引导记录和 结束标识等组成部分。
13H
15H 16H 18H 1A
小卷(<32MB)的分区扇区总数,大硬盘为0
介质描述,恒为F8 在小卷中为每FAT占用扇区数,大硬盘为0 每磁道扇区数(通常为3FH,63) 磁头数(通常为FFH,255) 隐含扇区数(本分区前的扇区总数,也就是本分区的起始逻辑扇区号)
10、FAT项描述
• 32位FAT表中每项占4字节,第0项固定为0FFFFFF8H,第 1项所有位为全1,真正的文件分配从第2项开始。16位FAT 表的第0项为FFF8H。 • 系统在建立文件时,在目录表中给出了该文件的起始簇号, 而FAT表中该簇项记录着链表中下一簇的簇号,一直到结束 标志为止。 • 要求能分析FAT表结构,遍历文件位置。
FAT文件系统
• 计算机除了硬件以外,还必须有软件系统才可以运行,这就 是操作系统。不同的操作系统可以支持一个或多个文件系统。 • FAT文件系统是我们常用的文件系统,广泛用于个人计算机 平台上,现在许多移动存储媒体都支持FAT文件系统格式。
1、FAT文件系统简介
• FAT文件系统是一种用于个人计算机小型操作系统的文件管 理方案,最初由IBM公司用于DOS操作系统。 • FAT文件系统结构较简单,管理方便,但不具备用于商业系 统的安全性、容错性、保密性等特点。 • FAT12用于软盘,FAT16用于早期操作系统,FAT32用于现 代操作系统。
FAT32分区内结构概览
• 在FAT32分区内部,由保留扇区、FAT表和数据区三个部分 组成。 • 保留扇区是指分区内FAT表之前的扇区,也包括引导扇区。 • FAT表通常有两份,系统会同时写入两份,但只会读取第一 份的内容。 • 分区格式化后,首先会创建根目录,因此根目录通常位于数 据区首端,也就是标记为0簇的位置。
6、起始簇位置
• FAT12和16文件系统的起始簇位于数据区,即在FDT(文 件根目录表)之后。首簇在该分区中的相对扇区位置为: 保留扇区数+FAT表扇区数×2+FDT • FAT32文件系统没有专门的目录表区,根目录的起始簇号在 BPB中给出,因此首簇在分区中相对扇区位置为: 保留扇区数+FAT表扇区数×2(2份FAT表)
15、FAT32长文件名
• FAT32的长文件名使得文件名的长度可达255字节,而且支持几乎所有 的除”*/<>?\|之外的Unicode字符集。 • 长文件名仍然存储在目录表中,也是以32字节为单位。它放在文件的真 正目录项的前方,如有多个子项则呈倒序排列。 • 每个子项的首字节为子项的序号,0~5位用于表示序号。如果是最后一 项,则首字节第6位置1。 • 为了区别是长文件名而非目录项,在其每个子项偏移0BH处的文件属性 字段,其值固定为0FH,表示为无法识别的文件,即长文件名。 • 每个子项的偏移0DH处,为目录项的标号,同一个文件的长文件名子项 的标号是一致的。 • 偏移1AH和1BH处值恒为00 00。 • 除开以上字段外,其他的部分则为长文件名的Unicode格式编码,一个 字符占用2字节。
12、文件目录表(FDT)
• FAT12和FAT16文件系统的FDT结构是相同的,每项占32 字节,它记录了该文件的名称、属性、时间、大小、起始簇 号等信息。 • FAT32文件系统的FDT作了扩充,以适应更大的簇号和长文 件名。 • FAT12和FAT16有专门的根目录区,位于数据区之前,因此 限制了根目录中文件个数。 • FAT32将根目录合并到数据区中了,不单独划区域,因此理 论上无限制。
8、FAT(文件分配表)结构
• 文件存储的逻辑结构有三种:连续结构、链表结构和索引结 构。 • FAT系统采用链表存储结构,表中的每一项就对应着相应簇 的使用情况。 • 第0、1项为保留项,真正计数从第2项开始。所以FAT表的 第2项就对应第0簇。 • FAT表有12位、16位和32位三种,即每项占用字节数为1.5 字节、2字节和4字节。
版本(通常为0)
根目录起始簇号(通常为02) FS信息扇区,即BOOT扇区占用扇区数(通常为1) 备份引导扇区的位置 保留未用(全为0) 磁片的BIOS驱动信息(软盘从0开始,硬盘从80H开始) 未用 扩展引导标记(通常为29H) 卷序列号(由格式化程序随机产生) 卷标(如果没有设定卷标,则为“NO NAME”) 文件系统名称的文本标识,如:FAT32 DBR引导程序(FAT32通常从此处开始) 结束标识 “55H AAH”
已分配文件的簇,标识下一簇的簇号
系统保留簇(未用) 坏簇 文件最后一簇(末簇)
FAT32的FAT表起始部分片断
11、簇到扇区的转换
• FAT表中第0和1项为FAT表起始标记,记录是从第2项开始 的。而数据区中的第0和1簇却是不会保留的,因此FAT表中 的第2项对应着数据区的第0簇,以此类推。 • 对文件的簇的访问最终要化为扇区位置,一个已知簇所对应 的本分区中扇区位置为: 首簇扇区位置+(簇号-2)×每簇扇区数
20H
24H 28H
4B
4B 2B
大卷的本分区占用扇区数
大卷的每FAT占用扇区数 延迟标记(通常为0)
FAT32的BPB参数描述-2
偏移 长度 描 述
2AH
2CH 30H 32H 34H 40H 41H 42H 43H 47H 52H 5AH 1FEH
2B
4B 2B 2B 12B 1B 1B 1B 4B 12B 8B 420B 2B
7、引导扇区编辑实验
1. 使用磁盘编辑工具打开非系统分区,将引导扇区复制(即 备份)一份到后一个扇区中。 2. 修改其BPB参数中的序列号(43H~46H)和卷标(47H~ 51H) 3. 保存退出,然后打开该分区,观察修改结果。 4. 再次使用磁盘编辑工具,将该分区的引导扇区中的BPB参 数部分清零。 5. 保存退出,再次打开该分区,观察修改结果。 6. 使用磁盘编辑工具将该引导扇区还原。
9、FAT分区容量限制
• Win95及以前的系统只支持16位FAT表,共可管理2162≈64K个簇。若以簇大小4KB计算,可管理256MB的空间。 若簇最大以32KB计算,则可最多管理2GB空间。 • Win95 OSR2(Win97)及以后系统还支持32位FAT表,若 以簇大小4KB计算,理论上可支持达4G×4KB≈16TB的空 间。
13、FDT概览
• 一个普通的目录项如下所示,每两行32字节,记录了一个 文件的信息,为一个目录项。这里共有4项,除了第二项为 长文件名外,记录了3个文件的信息。
FAT32目录项结构-1
偏 移 00H~07H 08H~0AH 0BH 数 据 含 义 主文件名,如果不到8个字节,后面用空格填充。其中首字节为0H时表示为空目录项,为E5H时表示文件 被删除,为05时表示实际该字节值为E5H。 文件扩展名。 文件属性,各位分别代表不同属性,可以叠加 。 B7、B6:未用; B5:归档位; B4:子目录(代表该文件是一个目录或称文件夹); B3:卷标(根目录下才有,也视为文件); B2:系统位; B1:隐藏位; B0:只读位。 保留未用。(0CH~15H在FAT16系统中均保留未用) 文件创建时间(格式同修改时间)。
18、误删除文件的恢复
• FAT系统在删除文件的时候,并未将数据区中的文件内容清空。只是将 该文件目录项的首字节改为E5H,然后将该文件在FAT表中的簇链全部 清0,标记为可分配。 • 如果我们记得误删文件的目录位置和名称,就可以用磁盘编辑工具打开 该目录,找到该文件的目录项,取得文件的起始簇号和文件大小。 • 根据文件大小计算出所占簇数。如果只有一个簇,则可直接打开该簇扇 区,将数据复制到新文件中。 • 如果有多个簇,则要到FAT表中观察可能的簇链(即附近标记为0的簇 项),然后转到扇区检查数据内容是否一致,将内容复制出来。 • 如果文件内容不连续,则可将各部分单独恢复,最后合并。
18H~19H
文件最后修改日期,其中高7位代表从1980起始的年份偏移,中4位代表月份,低5位代表天。
1AH~1BH 1CH~1FH
文件起始簇号的低16位。 文件的长度(字节)。
14、树形目录结构
• 目录也是一个文件,不过比较特殊,里面存放的是目录信息 表。 • 除根目录外,每个子目录的目录表中头两项都是“.”和“..”。 (ASCII码为2EH) • “.”指向该目录本身,“..”指向该目录的上级目录(父目 录)。因此,我们在命令行中使用目录切换命令“cd..”时, 便可退到上层目录。