【文件】FAT文件系统分析

一、硬盘存储结构

        硬盘总体存储图:

        

              采用希捷硬盘120G,WinHex查看,主引导记录MBR如下:

            

              硬盘分区表,64字节,分四个分区,每个分区占16位。

              扩展分区,就像加入了一个U盘,第一个扇区512字节,为分区引导记录DBR,还有其他。

二、FAT文件存储基本原理

        FAT表就是一个簇号的索引。当目录或者文件建立后,目录表中会有一个起始的簇号,这时就对应FAT表的位置,1个簇有很多扇区,这样将大的空间映射为小的簇号来管理。

        根据目录表的起始簇号,查FAT表,直到找到标记FF FF FF 0F时,说明文件已经完全找到。

三、根目录文件存储

       以4G容量的U盘为例,U盘的名字都写在U盘里,以文件的形式来管理。U盘DBR引导扇区(占一个扇区512字节)、保留扇区、文件分配表FAT1、FAT2、根目录表。差不多是相邻的。

       1、基本原理

             引导扇区的0EH处是保留扇区数a,aX扇区字节数,定位到FAT1;//    FAT1挨着保留扇区

             FAT1的偏移+引导扇区的24H处的FAT占用扇区处,定位到FAT2;//    FAT2挨着FAT1

            根目录位置= FAT2结束位置+(起始簇号-2)X每簇扇区数; //起始簇号一般为2,起始簇号在引导扇区2CH处

            注意:FAT中,对应0号簇的单元常常是:F8FFFF0F,对应1号簇值为:FFFFFFFF或FFFFFF0F

       2、文件存储

            找到根目录项后,短文件采用32个字节的8.3文件格式存储目录,长文件会将文件名分割,再连续存储它,长文件最后一个目录项,是存将长文件变换成短文件的目录。

           目录项的0BH处字节是0F,代表是长文件存储,

            其0H处的字节,后5位代表项目编号,从01、02开始,第6位为1,则说明为最后一项。        

            目录及文件存储:

            文件存储对应的结束标记:FF FF FF 0F

            U盘新建一个文件夹是,根目录会多一个32字节的目录数据结构,同时写FAT表,其所占用的簇号,再分配相应的簇。这时,所分配的簇,又会多两个目录项,父目录和当前目录(各32字节)。

              

       3、数据分析

      

四、总结

       1、存储方式:前面索引块,后面目录信息,通过起始块号找到索引区,然后一块一块数据读出,即可得到全部数据。

       2、目录路径时,在windef定义了#define MAX_PATH 260 是全路径最长长度。

       3、多出两个目录项,参考第5点时,其目录项存储结构有问题。

       4、字符数目,存储存不下时,第一个目录结构标识后面还有,然后依次读取。

       5、关于目录结构的变长字符,可以插入'\n'来定位其字符串,可参看超级玛丽源码。

参考:1.1、2、FAT文件系统原理-数据恢复

3、FAT下长文件名字

4、FAT32文件系统的存储组织结构(1)

5、FAT32文件系统的存储组织结构(2)

1.1 FAT下长文件名字

3、长文件名和短文件名对应关系

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值