FAT32文件系统格式详解(图文针对具体文件存储,分析fat32 SD卡)

article/2025/10/9 10:46:50

一. 用winhex工具分析SD卡(FAT32)

WinHex.exe  ->  工具  -> 打开磁盘 -> 选中SD卡设备

                                                   图(1)

打开后主界面如下:

                                                                                          图(2)

二. FAT32磁盘格式分析

当磁盘有多个分区时:

fat32磁盘是由 MBR + 分区1(保留区 + 文件分配表 + 数据区)+ 分区2 + ......

其实,当我们在电脑上面,看到的U盘/SD卡设备,就是如上图红色选择部分,是不包括MBR部分的

 

                                                                                      图(3)

0x00000000 - 0x0013B000     保留区(DBR + FSINFO + ...)

0x0013B000 - 0x0089D800      FAT1

0x0089D800 - 0x01000000      FAT2

0x01000000 -                          数据区

                                                                                       图(4)

三. 分析二进制数据(DBR FSINFO FAT1 FAT2 数据)

(1)启动扇区(DBR)

                                                                                         图(5)

0xEB 0x58 0x90:                                               跳转指令

0x54 0x48 0x52 0x45 0x45 0x53 0x20 0x20:   文件系统标志和版本号 MSDOS5.0

0x00 0x20:                                                     0x200 (512)每个扇区512字节

0x08:                                                              最小单元(簇)为0x08(8)扇区,8*512=4K

0xD8 0x09:                                                     0x9D8(2520) 保留扇区2520个  2520*512=1.2M

 

0x02 :        2个FAT表(FAT1 FAT2)

0xF8 :         存储介质类型,F8标准值

 

0x46 0xCC 0xEC 0x00:文件系统总的扇区数:15518790    15518790*512=7.39G

0x14 0x3B 0x00 0x00:每个fat表占用的扇区总数:15124    15124*512 =  7.4M

0x02 0x00 0x00 0x00:  根目录所在第一个簇的簇号,通常情况下,根目录簇号为2

 

0x46 0x41 0x54 0x33 0x32 0x20 0x20 0x20:文件系统格式 FAT32

 

(2)信息扇区(FSINFO)

                                                                                图(6)

0x52 0x52 0x61 0x41: 扩展引导标志

0x72 0x72 0x41 0x61: FSINFO签名

0x84 0x89 0x1D 0x00: 剩余所有的簇总数  0x1D8984 * 4k = 7928823808 byte = 7.38G

0x06 0x00:                     下一个可用簇:6

0x55 0xAA:                  结束标记字符

 

(3)文件分配表(FAT1)

 

在分析FAT表之前,我们先理解一下FAT32文件系统的一些基本信息:

 

扇区: 512 字节

 

: 文件系统的最小单元, 多个连续的扇区组成, 本SD卡为 4K(8个扇区,必须为2的整数次幂), 最大支持32K(64个扇区), 当我们保存一个1K的文件时,实际上,在文件系统中,是占用的是4K的空间大小,因为最小的存储单元是4K, 当我们保存一个10K的文件时,那么它需要占用三个簇,实际占用空间大小为12K。

 

FAT : File Allocation Table, 文件分配表, 当我们存储10K的文件时,需要使用三个簇,但是一定连续的三个簇吗? 并非一定是连续的,那么如何知道是使用了哪三个族呢,就需要我们文件分配表来记录了,第一个簇的地址,下一个簇是哪个,哪个是最后的结束簇。

 

FAT 是一组与数据簇号对应的列表, 所有簇从2开始进行编号,每个簇都有一个自己的地址编号,根目录默认簇号是为2

 

FAT32中每个簇的簇地址是有32bit(4个字节),FAT表中的所有字节位置以4字节为单位进行划分,并对所有划分后的位置由0进行地址编号。0号地址与1号地址被系统保留并存储特殊标志内容。从2号地址开始,每个地址对应于数据区的簇号,FAT表中的地址编号与数据区中的簇号相同。我们称FAT表中的这些地址为FAT表项,FAT表项中记录的值称为FAT表项值。(没理解的请反复多读几遍,至关重要)

 

当文件系统被创建,也就是进行格式化操作时,分配给FAT区域的空间将会被清空,在FAT1与FAT2的0号表项与1号表项写入特定值。由于创建文件系统的同时也会创建根目录,也就是为根目录分配了一个簇空间,通常为2号簇,与之对应的2号FAT表项记录为2号簇,被写入一个结束标记。

 

几点说明:

(1) 由于簇号起始于2号,所以FAT表项的0号表项与1号表项不与任何簇对应。FAT32的0号表项值总是“F8FFFF0F”。

(2)1号表项可能被用于记录脏标志,以说明文件系统没有被正常卸载或者磁盘表面存在错误。不过这个值并不重要。正常情况下1号表项的值为“FFFFFFFF”或“FFFFFF0F”。

(3)如果某个簇未被分配使用,它对应的FAT表项内容为0;

(4)当某个簇已被分配使用,则它对应的FAT表项内的FAT表项值也就是该文件的下一个存储位置的簇号。如果该文件结束于该簇,则在它的FAT表项中记录的是一个文件结束标记,对于FAT32而言,代表文件结束的FAT表项值为0x0FFFFFFF

(5)如果某个簇存在坏扇区,则整个簇会用0xFFFFFF7标记为坏簇,这个坏簇标记就记录在它所对应的FAT表项中。

(6)在文件系统中新建文件时,如果新建的文件只占用一个簇,为其分配的簇对应的FAT表项将会写入结束标记。如果新建的文件不只占用一个簇,则在其所占用的每个簇对应的FAT表项中写入为其分配的下一簇的簇号,在最后一个簇对应的FAT表象中写入结束标记。

(7)新建目录时,只为其分配一个簇的空间,对应的FAT表项中写入结束标记。当目录增大超出一个簇的大小时,将会在空闲空间中继续为其分配一个簇,并在FAT表中为其建立FAT表链以描述它所占用的簇情况。

 

                                                                                      图(7)

【0号表项】:0x0FFFFFF8;  FAT表起始固定标识

【1号表项】:0xFFFFFFFF;  默认值

【2号表项】:0x0FFFFFFF;  根目录 Root directory 所在簇,开始扇区32768

【3号表项】:0x0FFFFFFF;  目录 System Volume Information 所在簇,开始扇区32776 (32768+8)

【4号表项】:0x0FFFFFFF;  文件 WPSettings.dat 所在簇,开始扇区32784 (32776+8)

【5号表项】:0x0FFFFFFF;  文件 IndexerVolumeGuid 所在簇,开始扇区32792 (32784+8)

 

    由于我们是把SD卡格式化后分析,所以fat32除了根目录外,无其他我们存储文件,我们拷贝一个build.log文件再分析。build.log的大小为10k, 需要占用三个簇。

                                                                       图(8)

                                                                                    图(9)

【6号表项】:0x07  表项值为7,即指向下一个表项, 2号簇为根目录,对应的开始扇区为32768, 6号簇。开始的扇区为 32768 + 8 * (6-2)= 32800, 即为build.log的开始扇区。

【7号表项】:0x08  表项值为8,即指向下一个表项。

【8号表项】: 0x0FFFFFFF, 结束簇, 从6号簇build.log开始,到8号簇,文件结束。  

 

    到此,build.log的文件如何存储的,我们弄明白了,整个build.log保存在 6号簇-8号簇, 三个族存储了build.log内的数据,但是build.log的文件名/文件属性/最后修改时间/最后保存时间 这些信息保存在哪里呢?

 

    由于build.log是存放在根目录下的,那我们来看下根目录的二进制数据:

                                                                                     图(10)

在查看根目录的二进制数据之前,我们还是先普及下基本信息:

(1)目录所在的扇区,都是以32 Bytes划分为一个单位,每个单位称为一个目录项。

(2)根据文件名及后缀,我们可以分为短目录文件,长目录文件,简单点理解,如果文件名>8 byte 或者后缀名>3, 则为长文件目录,否则为短文件目录

 

我们查看build.log(短文件目录)

                                                                             图(11)

 

                                                                         图(12)

文件名: build

后缀名: log  

属性:     0x20 (0010 0000) 读写 归档

簇号:     0x06开始簇号

大小:     0x2800  10K

至此,build.log的 文件名称以及相关的属性信息,以及build.log文件的内容存储,都已经明白。

 

如果是长文件目录

                                                   图(13)

不再对具体的长文件目录进行分析。

 

(4)文件分配表(FAT2)

FAT2与FAT1完全相同

 

(5)数据区

参考资料:

https://blog.csdn.net/mjx91282041/article/details/8904705/

https://blog.csdn.net/u010650845/article/details/60780979

https://blog.csdn.net/eternally123/article/details/79836210


http://chatgpt.dhexx.cn/article/mJ8dFtge.shtml

相关文章

Linux笔记七 常用分区格式 文件系统类型详解 挂载

目录 概念描述一、磁盘介绍二、分区介绍三、常用文件系统四、挂载实际运用一、lsblk 查看系统硬盘信息二、df 查看分区使用情况三、blkid查看块设备属性四、MBR分区格式五、格式化文件系统六、mount挂载七、umount卸载八、开机自动挂载九、GPT分区格式 概念描述 当我们本机空间…

概念-文件系统及文件类型

概念-文件系统及文件类型 Linux 文件系统的特点Linux 目录结构规范Linux 文件系统目录文件应用程序的组成部分文件路径Linux 文件类型文件的相关信息文件元数据和节点表结构inode 表和目录cp 和inoderm 和inodemv 和inode Linux 文件系统的特点 1 文件和目录被组织成一个单根倒…

Linux 支持 U盘 NTFS 文件系统格式

Linux 支持 U盘 NTFS 文件系统格式 1、在线(可以连接外网)方式: 1.1、RHEL/CentOS/Anolis/openEuler yum install ntfs-3g1.2、Debian/Ubuntu/Deepin apt install ntfs-3g2、离线方式 下载 ntfs-3g 安装包,离线环境安装 ntfs…

文件系统格式FAT16、FAT32、NTFS、exFAT的区别

前言正文 问题四种文件系统比较 小结 前言 我们在用U盘存储大文件的时候总会遇见这样一个问题,提示文件太大,U盘拷贝时提示文件过大问题 其实这跟U盘的磁盘格式有关,目前市面上常用的U盘大都是FAT32格式,那么FAT32是什么呢&#x…

【Linux】文件系统详解

😊😊作者简介😊😊 : 大家好,我是南瓜籽,一个在校大二学生,我将会持续分享C/C相关知识。 🎉🎉个人主页🎉🎉 : 南瓜籽的主页…

Linux磁盘挂载及格式化文件系统格式为xfs

注释:重新空白挂载磁盘及重新格式化磁盘文件系统格式第一步需解除磁盘挂载,否则从下面第一步开始做 [rootp-master ~]# umount /dev/sdb 1、查看未挂载的磁盘: [rootp-master ~]# lsblk -f 2、磁盘新建分区 3、新建目录,准备将…

windows下文件系统格式介绍

三种文件系统(格式)类型 :FAT、NTFS、exFAT。 1、FAT 最通用的的是FAT32,很多U盘上都是FAT32格式,有时候,我们向U盘拷贝大文件时,会发现拷不进去,实际上就是因为这个U盘是FAT32格式…

Linux文件系统的格式化操作

前言:本节将来探索仓库的划分,即什么地方存放仓库的管理信息,什么地方存放进程的“劳动成果”(也就是文件),对应于文件系统的格式化操作。 先来实现文件系统设备驱动,接着建立文件系统超级块&am…

【文件系统】

一、文件系统的功能规划 第一点,文件系统要有严格的组织形式,使得文件能够以块为单位进行存储。 第二点,文件系统中也要有索引区,用来方便查找一个文件分成的多个块都存放在了什么位置。 第三点,如果文件系统中有的文…

Linux系统中常见文件系统格式

Linux系统中常见文件系统格式 Windows常用的分区格式有三种,分别是FAT16、FAT32、NTFS格式。 在Linux操作系统里有Ext2、Ext3、Linux swap和VFAT四种格式。 FAT16: 作为一种文件名称,FAT(File Allocation Table,文件分…

ffmpeg——TS流解析

RTSP(Real Time Streaming Protocol),实时流传输协议,是TCP/IP协议体系中的一个应用层协议,该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。RTSP在体系结构上位于RTP和RTCP之上,它使用TCP…

网页视频下载(TS流下载合成)

前言 最近《流浪地球》比较火,想找资源下载看看,无奈只找到了网址 http://m.tlyy.tv/【现已变成不良网站】 ,但是我的chrome插件也嗅探不到网页上的视频。。于是乎,右击页面,inspect 走起… 步骤 首先发现 m3u8文件…

TS流分析

一 从TS流开始 数字电视机顶盒接收到的是一段段的码流,我们称之为TS(Transport Stream,传输流),每个TS流都携带一些信息,如Video、Audio以及我们需要学习的PAT、PMT等信息。因此,我们首先需要了…

ts流中的时间概念: pcr,pts,dts 实例解说

ts流中的时间概念: pcr,pts,dts 实例解说 ---------------------------------------- PCR OPCR ---------------------------------------- ts流包头4字节,第5字节为适配域长度,若不为0,第六字节为适配域标志. 适配域有5个标志,这里先说两个,节目参考时钟…

TS流解析【PCR】自己的总结

http://www.cnblogs.com/ztteng/articles/3166025.html http://blog.csdn.net/liuhongxiangm/article/details/8981032 http://blog.sina.com.cn/s/blog_6b94d5680101ton7.html http://blog.csdn.net/jl2011/article/details/47044647 二.TS流包含的内容 一段TS流&#xf…

ES流、PES流、PS流和TS流介绍

流媒体系统结构 整个传输过程为:音视频数据分别通过图像声音编码器打包成ES(elemental stream 基本数据流),在通过PES打包器打包成PES(packet elemental stream分组的基本数据流),之后通过PS复用…

TS流基本知识【HI3798 AVPLAY播放TS流】

目录 一、TS流相关知识 1.1 TS流、PS流、PES流和ES流都是什么? 1.2 TS流是如何产生的? 1.3TS流的格式 二、从TS流到PAT、PMT 2.1 PAT表(Program Association Table,节目关联表) 2.1.1PAT表的描述(表…

TS流

TS流的健壮性很好,所以适合用在无线视频传输。但是,TS流一帧数据的格式较为复杂,所以需要有优秀的分析工具。 比如,EasyICE。(此软件仅供非商业使用,而且每次开打都需要联网验证是否是最新版本&#xff09…

ts流格式

1.ts简介 ts流最早应用于数字电视领域,其格式非常复杂包含的配置信息表多大十几个,视频格式主要是mpeg2。苹果公司发明的http live stream流媒体是基于ts文件的,不过他大大简化了传统的ts流,只需要2个最基本的配置表PAT和PMT&…

ts流格式详解

ts介绍 ts文件为传输流文件,视频编码主要格式h264/mpeg4,音频为acc/MP3。 ts文件分为三层:ts层Transport Stream、pes层 Packet Elemental Stream、es层 Elementary Stream. es层就是音视频数据,pes层是在音视频数据上加了时间戳…