freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

WinHex数据恢复—FAT32文件系统
2023-01-01 14:06:28
所属地 天津

之前发过怎么利用WinHex工具恢复FAT16文件系统中的数据,本文先是对FAT32文件系统的结构进行了介绍,之后利用WinHex工具恢复格式化磁盘中的数据、彻底删除的文件以及手动恢复损坏的DBR分区。

1、FAT32文件系统结构

首先介绍下FAT32文件系统的结构,如下图所示,其分为MBR、DBR及其保留扇区、FAT1、FAT2、DATA五个部分,其中DBR是DOS引导记录,也就是操作系统引导记录,FAT32系统有两个FAT表,FAT1是第一份,是主要FAT,FAT2是第二份文件分配表,是FAT1的备份,DATA是数据区,其中也包含目录区。

fat32ca.jpg

FAT32的DBR主要由跳转指令、OEM代号、BPB参数、引导程序和结束标志五部分组成。其中跳转指令占用2字节,其主要负责将程序执行流程跳转到引导程序处。OEM代号由厂商具体负责,占8个字节,BPB参数部分很重要,BPB参数中包含每扇区字节数、每簇扇区数、保留扇区数、隐藏扇区数、扇区总数、每FAT扇区数等重要信息。引导程序共占用420个字节,是DBR中占用字节数最多的部分,最后是结束标志“55 AA”,下图是DBR中BPB参数的具体结构。
fat32cdbrcbpbca.pngFAT32的文件分配表有FAT1和FAT2两份,FAT2为FAT1的备份,文件分配表由FAT表项构成,FAT32的每个FAT表项对应4个字节,每个FAT表项都有固定的编号,编号从0开始,文件分配表前两个FAT表项有专门用途,0号表项通常用来存储分区所在的介质类型,1号表项通常用来存储文件系统的肮脏标志。分区的数据区中每一个簇都会映射到文件分配表中的唯一一个表项,因为0号和1号簇有特殊用途,数据区的第一个簇就是2号簇。
FAT32的数据区在文件系统中紧跟在FAT2之后,定位数据区的方法为首先定位至DBR扇区,读取DBR中的0EH~0FH偏移处,得到DBR保留扇区数,读取DBR中的24H~27H偏移处,得到每FAT扇区数,再计算:
数据区扇区位置=DBR保留扇区数+ 2 * 每FAT扇区数
数据区主要由三部分组成:根目录、子目录和文件内容,数据区中以簇为单位来管理这片区域,根目录中存放的是分区根目录下的文件及文件夹的目录项,子目录中存放的是分区子目录下的文件及文件夹的目录项,FAT32的目录项分为四类:短文件名目录项、长文件名目录项、"."目录项和".."目录项、卷标目录项,这里重点讨论短文件名目录项,如下为其各字节的含义:
caaacae.png其中重点需要记住的是0X14文件起始簇号的高位、0X1A文件起始簇号的低位,0X1C文件大小,根据这些信息就可以找到对应文件的存储位置。

2、利用WinHex恢复FAT32文件系统删除的文件

本节包含恢复FAT32文件系统格式化之后数据的恢复和彻底删除的文件恢复两部分,首先是利用WinHex恢复FAT32文件系统格式化磁盘所丢失的数据,如下图所示为FAT32系统盘符中存储的TXT测试文件。
3.png
格式化磁盘前该文件对应的文件目录项如下:
4.png
格式化磁盘前该文件对应的FAT表项如下:6.png
格式化磁盘前该文件对应的数据区如下,可以看到其存储的内容是“hello word!”:
5.png
格式化磁盘后该文件的文件目录项如下,其内容被清空:
7.png
格式化磁盘后该文件的FAT表项如下,其部分内容被清零:
8.png
格式化磁盘后该文件对应的数据区如下,可以看到其文件数据并没有被删除:
9.png
选中数据区域,利用WinHex将文件数据拷贝出去的操作效果如下,即可得到该被删除的文件:
10.png
之后利用WinHex恢复FAT32文件系统中被彻底删除的文件,如下图在一个FAT32格式系统盘中存储有一张文件名为“test.png”的美女图片。
test0a89adf3a91111a6.png
删除前该文件的文件目录项如下图中红色区域:
1.png
删除前该文件的FAT表:
FATe3a498bcf5a17ad3a.png
删除前该文件的数据区:

aaa.png
删除后该文件的文件目录项如下,其开头除了由“54”变为“E5”其他没有变化:
2.png
删除后该文件的FAT表如下,其被部分清零aeaaafate.png
删除后该文件的数据区如下,可以看到其数据区内容在没有拷贝进新的数据的情况下没有发生变化,这也为数据恢复提供了基础,其恢复文件操作类似上文格式化磁盘中文件的恢复,只需要选中文件数据区右键选择导出就可以恢复该彻底删除的文件。
aeaaaa.png

3、FAT32文件系统手动恢复损坏的DBR
本节主要讲怎么手动恢复损坏的DBR,我们首先要知道的是通常情况下FAT32文件系统的DBR是有一个备份的,通过查找DBR备份扇区号或者搜索“EB 58 90”就可以找到备份的DBR,然后将损坏的DBR拷贝过去就可以了,但有时候备份DBR也被损坏了,这就用到我们这里的方法了。
首先,将FAT32文件系统的DBR部分清零,其效果如下,该盘符不能正常打开。
11.png
之后,我们手动恢复该DBR,我们首先新建一个FAT32的分区,将其DBR拷贝过来,效果如下
12.png然后,我们重点计算得到隐藏扇区数、分区总大小、保留扇区数、FAT表大小、每簇扇区数这五个关键数据,从MBR中读取隐藏扇区数为309755,分区总大小为67102720,在DBR处向下搜索“F8FFFF0F”到达FAT1,其扇区号为10262,FAT2的扇区号为26635,则利用FAT2的扇区号减去FAT1的扇区号得到FAT表的大小为16373,DBR所在扇区号在MBR中可以查到是2048,则保留扇区数为FAT1所在扇区号减去DBR所在扇区号为8214,每簇扇区数的计算较为复杂,其需要先计算出数据区总扇区数和数据区的总簇数,利用分区总大小减去两个FAT表的大小再减去保留扇区数,其结果为67061760就是数据区总扇区数,利用FAT表大小乘以512再除以4为2095744,利用数据区总扇区数除以数据区总簇数为32是每簇扇区数,将以上信息填入损坏的DBR中,就可以得到如下图所示正常的FAT32分区。
13.png

# 数据恢复 # winhex
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录