SD卡实例分析fat32文件系统

本文通过实例分析SD卡上的FAT32文件系统,涵盖MBR、DBR、FAT表、数据区和目录项等关键部分。详细探讨了格式化过程、分区表、引导扇区的组成以及文件和目录的存储方式。同时,指出了在创建文件时目录项的异常现象以及格式化后多余簇的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

环境描述

分析过程

1.SD卡格式化

2.使用winhex打开sd卡

3.MBR分析

4.DBR分析

5.FAT表分析

6.数据区

7.目录项

子目录的管理

问题记录

1. 每次创建时目录项FDT会多出内容

2. 格式化卡之后,会有多余的FFFFFF0F

参考文章:


环境描述

工具:winhex、32G SD卡一张

注:可以使用diskgenius格式化工具,功能更强大

分析过程

1.SD卡格式化

首先使用windows自带的工具将sd卡格式化

注:这里的分配单元大小实际是簇大小

2.使用winhex打开sd卡

使用winhex打开sd卡,我们想要看到MBR,所以这里选择物理驱动器

3.MBR分析

MBR由前512字节(446MBR+64DPT+55AA),这里显示的都是小端序

我们这里主要看DPT的信息, 分区表由4项组成,每项16个字节(Byte).共4×16 = 64字节(Byte)。

本次我们只分了一个分区,可以看出分区表其他都是0

存贮字节位

内容及含义

第1字节

引导标志。若值为80H表示活动分区,若值为00H表示非活动分区。

00

第2、3、4字节

本分区的起始磁头号、扇区号、柱面号。其中:

磁头号——第2字节;

扇区号——第3字节的低6位;

柱面号——为第3字节高2位+第4字节8位。

20 --32磁头

21 --33扇区

00 --0-柱面

第5字节

分区类型符。

00H——表示该分区未用(即没有指定);

06H——FAT16基本分区;

0BH——FAT32基本分区;

05H——扩展分区;

07H——NTFS分区;

0CH --- Win95 FAT32

0FH——(LBA模式)扩展分区(83H为Linux分区等)。

0C --Win95 FAT32

第6、7、8字节

本分区的结束磁头号、扇区号、柱面号。其中:

磁头号——第6字节;

扇区号——第7字节的低6位;

柱面号——第7字节的高2位+第8字节。

FE--磁头号

FF--63扇区号

FF --1023柱面号

结束扇区为(1023柱面,254磁头,63扇区)

第9、10、11、12字节

逻辑起始扇区号 ,本分区之前已用了的扇区数。

00080000,反过来就是00000800即2048

为该分区(起始逻辑扇区号与逻辑0扇区号之差。表示该分区前面已有2048个扇区,这2048个扇区为系统隐藏扇区。

第13、14、15、16字节

本分区的总扇区数。

FF37A403,反过来就是03A437FF,即61093887

表明该分区有61093887个扇区。即(0柱面,1磁头,1扇区)至(1023柱面,254磁头,63扇区)共有61093887个扇区。

1个扇区512字节,所以该分区大小为61093887/2/1024/1024=29G

从winhex分析看出和我们得出的结论一致:

4.DBR分析

给硬盘分区产生MBR→格式化硬盘分区产生DBR,所以先有MBR,然后才有DBR,也就是DBR存在于逻辑分区的位置

FAT32文件系统的DBR与FAT16的DBR很类似,也由5部分组成,分别为跳转指令、OEM代号、BPB、引导程序和结束标志

跳转指令:EB 58 90:本身占2字节它将程序执行流程跳转到引导程序处

OEM代号:这部分占8字节,其内容由创建该文件系统的OEM厂商具体安排。 当前DBR中的OEM代号为“MSDOS5.0”,说明这个FAT32分区是由微软的Windows 2000以上的操作系统格式化创建的

BPB: FAT32的BPB从第DBR的第12(0BH偏移处)个字节开始,占用79字节,记录了有关该文件系统的重要信息,其中各个参数的含义见下表

这些信息太杂乱,我们借助winhex的(查看==》模板管理器)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值