您的位置:首页 > 其它

FAT32文件系统详细介绍

2011-04-09 09:46 190 查看
通过使用DiskEditor对硬盘的分析,现对硬盘的MBR区及FAT32文件系统做一个详细的介绍。

新硬盘->低格后 变化:所有扇区中的字节数据填充为0x00
低格后->分区后 变化:写硬盘的MBR(主引导扇区)区
分区后->格式华 变化:写硬盘的FAT(文件分配表)区

MBR区介绍:
起始位置:0柱面0磁头1扇区(硬盘的第一个扇区)
结束位置:0柱面0磁头1扇区
大小:512(硬盘每个扇区的所占用的字节数)个字节

00
01
02
03
04
05
06
07
08
09
0a
0b
0c
0d
0e
0f
00000000
00
00
00
00
00
00
00
00

00
00
00
00
00
00
00
00
00000010
00
00
00
00
00
00
00
00

00
00
00
00
00
00
00
00
…………

















000001b0
00
00
00
00
00
00
00
00

00
00
00
00
00
00
80
01
000001c0
01
00
0c
ff
ff
fe
3f
00

00
00
fc
8a
38
01
00
00
000001d0
00
00
00
00
00
00
00
00

00
00
00
00
00
00
00
00
000001e0
00
00
00
00
00
00
00
00

00
00
00
00
00
00
00
00
000001f0
00
00
00
00
00
00
00
00

00
00
00
00
00
00
55
aa
000 ~ 1bd (446字节)executable code(我们不使用,固定填写0x00)
1be ~ 1cd (16字节)1st partition entry(参数解释见下面)
1ce ~ 1dd (16字节)2st partition entry(同第一个分区)
1de ~ 1ed (16字节)3st partition entry(同第一个分区)
1ee ~ 1fd (16字节)4st partition entry(同第一个分区)
1fe ~ 1ff (2字节)boot record signature(固定值:55 aa)

现以第一个分区的入口参数为例:
80 分区状态(80H表示为激活分区, 00H表示为非激活分区)
01 分区的开始磁头
01 00 分区的开始柱面和扇区(0 ~ 5位为扇区号、8 ~ 15位为柱面号的低8位,6 ~ 7位为柱面号的高两位)
0c 分区的类型(0c表示为FAT32,用LBA方式)
ff 分区的结束磁头
ff fe 分区的结束柱面和扇区(表示同开始磁头)
3f 00 00 00 从MBR到第一个分区扇区的扇区个数(一般为硬盘扇区的最大值)
fc 8a 38 01 分区的总扇区数(可以计算扇区的总大小)





FAT区介绍:
起始位置:0柱面1磁头0扇区
结束位置:根据硬盘参数不同有所不同
大小:硬盘的总簇数×4字节

FAT区中的BOOT:
起始位置:0柱面1磁头0扇区
结束位置:0柱面1磁头0扇区
大小:512字节

00
01
02
03
04
05
06
07
08
09
0a
0b
0c
0d
0e
0f
00000000
eb
58
90
4d
53
57
49
4e

34
2e
31
00
02
08
20
00
00000010
02
00
00
00
00
f8
00
00

3f
00
ff
00
3f
00
00
00
00000020
fc
8a
38
01
fc
4d
00
00

00
00
00
00
02
00
00
00
00000030
01
00
06
00
00
00
00
00

00
00
00
00
00
00
00
00
00000040
80
00
29
ab
0b
64
15
00

00
00
00
00
00
00
00
00
00000050
00
00
46
41
54
33
32
20

20
20
xx
xx
xx
xx
xx
xx
00000060
xx
xx
xx
xx
xx
xx
xx
xx

xx
xx
xx
xx
xx
xx
xx
xx
……

















000001f0
xx
xx
xx
xx
xx
xx
xx
xx

xx
xx
xx
xx
xx
xx
55
aa
000 ~ 059 (60字节)各个参数(参数解释见下面)
000 ~ 059 (420字节)executable code(初始值固定)
000 ~ 059 (2字节)boot record signature(固定值:55 aa)

现解释各个参数的含义:
eb 58 90 跳转代码(固定值: eb 58 90)
4d 53 57 49 4e 34 2e 31 OEM名字(固定值: 表示MSWIN4.1)
00 02 每扇区的字节数(512)
08 每簇的扇区数
20 00 保留的扇区数(通常固定为32)
02 FAT表的个数(通常有2个)
00 00 未使用(固定为0)
00 00 未使用(固定为0)
f8 介质类型(硬盘为f8)
00 00 未使用(固定为0)
3f 00 每磁道的最大扇区数(硬盘的参数)
ff 00 最大磁头数(硬盘的参数)
3f 00 00 00 分区中隐藏的扇区数(初始化时写入每磁道的最大扇区数)
fc 8a 38 01 分区中的扇区总数(自己根据硬盘参数计算)
fc 4d 00 00 每个FAT表占用的扇区数
00 00 Flags(Bits 0-4 Indiate Active FAT Copy)(Bit 7 Indicates whether FAT mirroring is enabled or disable <clear is enabled>)(if FAT mirroring is disabled, the FAT information is only written to the copy indicated by bits 0-4)
00 00 FAT32驱动版本(固定值:00 00)
02 00 00 00 根目录区的开始簇号(00 01 两个簇号不使用)
01 00 文件系统信息(后面有相关的说明)扇区所在位置的扇区号(此扇区号为相对位置)
06 00 备份引导扇区所在位置的扇区号(此扇区号为相对位置)
00 00 00 00 00 00 00 00 00 00 00 00 保留
80 分区的逻辑驱动号(第一个分区固定为80)
00 未使用
29 扩展标识(固定值:29)
ab 0b 64 15 分区的串号(工控机硬盘为74 00 e6 f0)
00 00 00 00 00 00 00 00 00 00 00 分区的名称(工控机硬盘为4e 4f 20 4e 41 4d 45 20 20 20 20意思为“NO NAME”)
46 41 54 33 32 20 20 20 FAT名称(固定值:表示“FAT32”)


executable code:
具体含义不明(应该是用来引导用的代码)

FAT区中的文件系统信息区:
起始位置:0柱面1磁头1扇区
结束位置:0柱面1磁头1扇区
大小:512字节

00
01
02
03
04
05
06
07
08
09
0a
0b
0c
0d
0e
0f
00000000
52
52
61
41
00
00
00
00

00
00
00
00
00
00
00
00
00000010
00
00
00
00
00
00
00
00

00
00
00
00
00
00
00
00
……

















000001e0
00
00
00
00
72
72
41
61

75
90
1d
00
44
05
00
00
000001f0
00
00
00
00
00
00
00
00

00
00
00
00
00
00
55
aa
000 ~ 003 1e4 ~ 1fd (30字节)各个参数(参数解释见下面)
004 ~ 1e3 (480字节)未知(固定值:00)
000 ~ 059 (2字节)boot record signature(固定值:55 aa)

现解释各个参数的含义:
52 52 61 41 标识(First Signature)
72 72 41 61 标识(Signture of FSInfo sector)
75 90 1d 00 剩余的簇数(如果设置为ff ff ff ff,表示未知)(工控机硬盘为fc 94 18 00)
44 05 00 00 最近一次被分配的簇号(工控机硬盘为02 00 00 00)
00 00 00 00 00 00 00 00 00 00 00 00 保留
00 00 未知


FAT区中的未知数据区
起始位置:0柱面1磁头2扇区
结束位置:0柱面1磁头2扇区
大小:512字节

00
01
02
03
04
05
06
07
08
09
0a
0b
0c
0d
0e
0f
00000000
fa
66
0f
b6
46
10
66
8b

4e
24
66
f7
e1
66
03
46
00000010
1c
66
0f
b7
56
0e
66
03

c2
33
c9
66
89
46
fc
66
00000020
c7
46
f8
ff
ff
ff
ff
fa

66
8b
46
2c
66
83
f8
02
00000030
0f
82
cf
fc
66
3d
f8
ff

ff
0f
0f
83
c5
fc
66
0f
00000040
a4
c2
10
fb
52
50
fa
66

c1
e0
10
66
0f
ac
d0
10
00000050
66
83
e8
02
66
0f
b6
5e

0d
8b
f3
66
f7
e3
66
03
00000060
46
fc
66
0f
a4
c2
10
fb

bb
00
07
8b
fb
b9
01
00
00000070
e8
be
fc
0f
82
aa
fc
38

2d
74
1e
b1
0b
56
be
d8
00000080
7d
f3
a6
5e
74
19
03
f9

83
c7
15
3b
fb
72
e8
4e
00000090
75
d6
58
5a
e8
66
00
72

ab
83
c4
04
e9
64
fc
83
000000a0

000000b0

000000c0

000000d0

000000e0

000000f0

00000100
d2
03
c0
13
d2
e8
18
00

fa
26
66
8b
01
66
25
ff
00000110

00000120

00000130

00000140

00000150

00000160

00000170
0f
a4
c2
10
fb
8b
df
b9

01
00
e8
b4
fb
5a
0f
82
00000180
9f
fb
fb
8b
da
c3
00
00

00
00
00
00
00
00
00
00
00000190
00
00
00
00
00
00
00
00

00
00
00
00
00
00
00
00
000001a0
00
00
00
00
00
00
00
00

00
00
00
00
00
00
00
00
000001b0
00
00
00
00
00
00
00
00

00
00
00
00
00
00
00
00
000001c0
00
00
00
00
00
00
00
00

00
00
00
00
00
00
00
00
000001d0
00
00
00
00
00
00
00
00

00
00
00
00
00
00
00
00
000001e0
00
00
00
00
00
00
00
00

00
00
00
00
00
00
00
00
000001f0
00
00
00
00
00
00
00
00

00
00
00
00
00
00
55
aa
FAT表介绍:
起始位置:0柱面1磁道1扇区+保留扇区数+(每个FAT表占用的扇区数×2)
结束位置:根据分区情况确定
大小:根据分区情况确定

00
01
02
03
04
05
06
07
08
09
0a
0b
0c
0d
0e
0f
00000000
f8
ff
ff
0f
ff
ff
ff
ff
ff
ff
ff
0f
ff
ff
ff
0f
00000010
a6
00
00
00
ff
ff
ff
0f
ff
ff
ff
0f
ff
ff
ff
0f
……
000001e0
ff
ff
ff
0f
ff
ff
ff
0f
ff
ff
ff
0f
ff
ff
ff
0f
000001f0
ff
ff
ff
0f
ff
ff
ff
0f
ff
ff
ff
0f
ff
ff
ff
0f
说明:
每簇的使用情况用32位二进制填写,未被分配的簇相应位置写零;坏簇相应位置填入特定值;已分配的簇相应位置填入非零值,具体为:如果该簇是文件的最后一簇,填入的值为FFFFFF0FH,如果该簇不是文件的最后一簇,填入的值为该文件占用的下一个簇的簇号,这样,正好将文件占用的各簇构成一个簇链,保存在FAT表中。0000000H、00000001H两簇号不使用,其对应的两个DWORD位置(FAT表开头的8个字节)用来存放该盘介质类型编号。FAT表的大小就由该逻辑盘数据区共有多少簇所决定,取整数个扇区


DATA区介绍:
起始位置:0柱面1磁道1扇区+保留扇区数+(每个FAT表占用的扇区数×2)
结束位置:根据分区情况确定
大小:根据分区情况确定

00
01
02
03
04
05
06
07
08
09
0a
0b
0c
0d
0e
0f
00000000
57
49
4e
39
38
20
20
20

20
20
20
10
00
00
00
00
00000010
00
00
1b
2f
00
00
e8
60

1b
2f
03
00
00
00
00
00
……

000001e0
53
59
53
54
45
4d
20
20

31
53
54
06
00
00
00
00
000001f0
00
00
26
2f
01
00
a7
61

1b
2f
9c
6d
20
60
08
00
000 ~ 01f (32字节) 根目录区中的WIN98子目录(参数解释见下面)
1e0 ~ 1ff (32字节)根目录区中的SYSTEM.1st文件(参数解释同上)

现解释各个参数的含义:
57 49 4e 39 38 20 20 20 文件名(WIN98)
20 20 20 文件扩展名(无)
10 文件属性(最高两位保留未用,0至5位分别是只读位、隐藏位、系统位、卷标位、子目录位、归档位)
00 仅长文件名目录项用,用来存储其对应的短文件名目录项的文件名字节校验和等
00 00 00 24位二进制的文件建立时间,其中的高5位为小时,次6位为分钟
00 00 16位二进制的文件建立日期,其中的高7位为相对于1980年的年份值,次4位为月份,后5位为月内日期
1b 2f 16位二进制的文件最新访问日期,定义同上
00 00 起始簇号的高16位
e8 60 16位二进制的文件最新修改时间,其中的高5位为小时,次6位为分钟,后5位的二倍为秒数
1b 2f 16位二进制的文件建立日期,其中的高7位为相对于1980年的年份值,次4位为月份,后5位为月内日期
03 00 起始簇号的低16位
00 00 00 00 32位的文件字节长度(对于子目录,此项为0)



图示硬盘分区结构:

开始位置:0柱面0磁道1扇区(逻辑扇区号为0)

MBR(硬盘主引导分区)

FAT(文件分配表区)…………
BOOT(1个扇区)+文件系统信息区(1个扇区)+未知(固定数据,1个扇区)+3个保留扇区
BOOT(1个扇区)+文件系统信息区(1个扇区)+未知(固定数据,1个扇区)+3个保留扇区

开始位置:0柱面1磁道1扇区+保留扇区数
= 63 + 32 = 95

FAT表
FAT表

DATA(数据区)

开始位置:0柱面1磁道1扇区(逻辑扇区号为63)

开始位置:0柱面1磁道1扇区+保留扇区数+(每个FAT表占用的扇区数×2)
= 63 + 32 + (19964×2) = 40023

以上数据都是超的硬盘中数据,针对不同的硬盘参数和使用,我们应该修改相应的数据。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: