用WinHex软件解析FAT32文件系统

准备工作:

将一个U盘格式化为FAT32格式,在U盘内创建几个文件,最好是TXT文档,其中至少有一个是长文件(命名较长)。

补充知识:

短文件名表示

短文件名表示

长文件名表示

长文件名表示

当一个文件名为长文件名时,会由几个长文件名表示法和一个缩略名的短文间名表示,并且其文件大小以及首簇号等信息存放在短文件内

开始解析

(1)U盘信息:

U盘信息

保留扇区:22262226;文件目录首簇号:22;FAT表大小 :1527115271; 簇大小:88

(2)U盘DBR:

U盘DBR

FAT32分区上DBR中各部分划分位置

偏移字节 字段长度/ B 字段名
0x00 3 跳转指令
0x03 8 厂商标志与OS版本号
0x0B 53 BPB
0x40 26 扩展BPB
0x5A 420 引导程序代码
0x01FE 2 有效结束标志

(3)跳转22262226个扇区到FAT表1:

FAT表1

(4)跳转1527115271个扇区到FAT表2:

FAT表2

(5)再跳转1527115271个扇区到文件目录表:

文件目录表

(6)U盘根目录文件:

U盘根目录文件

(7)解析长文件ALongLongTestTxtFile.TxtA Long Long Test Txt File.Txt

长文件A Long Long Test Txt File.Txt

长文件的缩写名(短文件)看出文件首簇号为: 0000000700 00 00 07
大小为000040BE=16574Bytes00 00 40 BE =16574 Bytes
推测占的簇数为16574/4096=4.04>416574/4096 =4.04>4 故需要5个簇存放
目录表首簇号为22

(8)从目录表跳转72=57-2=5个簇,即5X8=405 X 8=40个扇区到达文件位置:

文件位置

(9)在FAT表中找出簇号链:
从FAT表跳转7X4=28bytes7 X 4 =28 bytes找到首簇号

这里写图片描述

得到簇号链 第七个簇内容为0000000800 00 00 08 ,第八个簇内容是00000009>0000000A>0000000B>FFFFFF0F00 00 00 09——>00 00 00 0A——>00 00 00 0B——>FF FF FF 0F与之前推测相符合
PS:在FAT32系统中FAT表中每个簇占四个字节

文献参考:《计算机病毒与反病毒技术》2006-6-1清华大学出版社出版,作者:张仁斌,李钢,侯整风