第 1 项:
00000000
|
2E
|
20
|
20
|
20
|
20 20 20
|
20
|
20
|
20
|
20
|
10 00
|
C6
|
11
|
5D .
|
..?]
|
00000010
|
6B
|
3B
|
6B
|
3B
|
00 00 12
|
5D
|
6B
|
3B
|
0C
|
00 00
|
00
|
00
|
00 k;k;...
|
]k;......
|
偏移 0x0A 为 0x10,名字为 0x2E(“.”),表示当前目录。 第 2 项:
00000020
|
2E
|
2E
|
20
|
20
|
20 20 20
|
20
|
20
|
20
|
20 10 00
|
C6
|
11
|
5D ..
|
..?]
|
00000030
|
6B
|
3B
|
6B
|
3B
|
00 00 12
|
5D
|
6B
|
3B
|
00 00 00
|
00
|
00
|
00 k;k;...
|
]k;......
|
偏移 0x0A 为 0x10,名字为 0x2E 0x2E(“..”),表示上一级目录。
00000100
|
53
|
55
|
42
|
44
|
49 52
|
7E
|
31
|
54
|
58
|
54 20 00
|
22
|
2E
|
4F
|
SUBDIR~1TXT .".O
|
00000110
|
6C
|
3B
|
6D
|
3B
|
00 00
|
E9
|
84
|
6D
|
3B
|
14 00 00
|
0E
|
00
|
00
|
l;m;..閯 m;......
|
偏移 0x0A 为 0x20,是一个文件,名字为“SUBDIR~1.TXT”,文件长度为 0x00000E00,文件起始位置在簇 0x00000014。 为了读取该文件,还需要参照 FAT 得到它的簇链。首先要解决一个问题,就是怎么知道一个簇在 FAT 表中的位置? 给定一个簇号 N,确定它在表中的位置(下面是以 FAT16/FAT32 为例,FAT12 稍微复杂 些): 在 FAT 表中的 Sector 号为:N/(BPB_BytsPerSec/fact),如果是 FAT16 则 fact 取 2,如果是 FAT32 则 fact 取 4。 在 Sector 内 的 偏 移 地 址 为 : N%(BPB_BytsPerSec/fact) , 即 N 除 以 (BPB_BytsPerSec/fact)取余数。 因此,簇 0x00000014 在 FAT 表中的 Sector 为 0x14/(512/4)=0,Sector 内偏移为 0x14%(512/4)=0x50
下面是 FAT1 的第 0 个 Sector:
00000000
|
F8
|
FF FF FF FF FF FF FF
|
03 00 00 00 FF FF FF 0F
|
....?
|
.
|
00000010
|
00
|
00 00 00 06 00 00 00
|
FF FF FF 0F 08 00 00 00
|
........
|
.....
|
00000020
|
09
|
00 00 00 0A 00 00 00
|
FF FF FF 0F FF FF FF 0F
|
........
|
..
|
00000030
|
FF FF FF 0F FF FF FF 0F
|
FF FF FF 0F FF FF FF 0F
|
....
|
00000040
|
FF FF FF 0F FF FF FF 0F
|
FF FF FF 0F FF FF FF 0F
|
. ...
|
00000050
|
15
|
00 00 00 16 00 00 00
|
17 00 00 00 18 00 00 00
|
................
|
|
00000060
|
19
|
00 00 00 1A 00 00 00
|
FF FF FF 0F 00 00 00 00
|
........
|
.....
|
00000070
|
00
|
00 00 00 00 00 00 00
|
00 00 00 00 00 00 00 00
|
................
|
|
|