解析Fat32文件系统

来源:互联网 发布:双系统怎么重装ubuntu 编辑:程序博客网 时间:2024/05/22 01:48

Fat32文件系统是之前windows os中常用的文件系统,在这篇文章中我们要找到:

1. 第一分区的起始扇区

2. 第一个文件文件配置表(FAT)的位置

3. 数据区域的位置

4. 文件“file1.txt”所在的簇


1  首先,用HxD打开所要解析的FAT32的文件


2  选择所要分析的文件,打开后,在起始的sector0,也就是0扇区我们就会看到该系统的主引导,在结束标志的55AA之前的64位为主分区记录表(Master Partition Table),记录了各个分区的信息。


offset1BE 00表示不可引导,80表示可以从该分区启动

offset1BF-1C1  表示CHS(Cylinder-Head-Sector,先找柱面,然后磁道,再找扇区的寻址方式)起始地址 000101(window OS中都是以LITTLE-ENDIAN(小字节序、低字节序的方式存储,即低位字节排放在内存的低地址端,高位字节排放在内存的高地址.

offset1C2 表示分区标志位

offset1C3-1C5 表示CHS的结束地址

offset1C6-1C9 占32位 表示起始扇区 0000003F=63

offset1CA-1CD 表示该扇区的长度

其余三个扇区记录为0表示unused

3  找到第一分区的起始扇区后我们跳转到其所在的位置63扇区,分析其引导记录中的信息


offset7E0B 占16位 表示byte/sector 每扇区有多少字节的容量  0200(h)=512 byte

offset7E0D 占8位  表示sectors/cluster 每一簇有多少扇区 02

offset7E0E 占16位 表示保留区域内容占多少扇区  0022(h)=34

offset7E10 占8位 该分区有几张FAT表 2

offset7E16 占16位 表示sectors/FAT 若此区域内数字为0, 则跳转到下一行的第5字节,即offset7E24 占32位 000002EB(h)=747 sectors

所以FAT1的偏移量为【第一分区的起始位置(引导记录所在的63扇区)+保留区域的扇区数(34)】*【byte/sector (512)】=49664

相对于第一分区的偏移量为49664-7E00(h)=49664-32256=17408

用户数据区域位置在FAT表结束后的下一个扇区,也就是第一分区起始扇区+保留扇区+FAT表扇区=63+34+2*747=1591

3.跳转到1591扇区,我们就可以看到用户真实文件的记录 FAT Directory Entriy


选中的区域为文件一信息目录, 在offset6E88的位置为文件的属性标志,文件1置08表示其位volumn label也就是使用该文件系统启动时file1.txt不可见

offset6E9A 占16位,表示file1.txt的起始簇 0011(h)=17


在FAT32中,每一簇的信息占32位,4个字节。所以从offsetC200开始算起,数17个4字节 ,找到了offsetC244,为18[00000012(h)]---19[13(h)].......34[22(h)---FFFFFF0F(停止)

所以file1.txt所占的簇为17——34


原创粉丝点击