WinHex软件 FAT32文件系统解析与提出

目录

目录

#软件/磁盘#

#FAT32 结构详解#

分区结构

引导区

保留区

FAT表

数据区

各结构解析

引导区

FAT表

根目录/子目录

#FAT32文件系统手动提文件#

计算每簇扇区数

计算文件位置与大小

需提文件存储在根目录中

文件位置

文件大小

提出文件

需提文件存储在文件夹中

文件夹位置

文件位置

文件大小

提出文件

#FAT32文件系统修复DBR开盘提出文件#

例题:​编辑

跳转指令

结束标识

FAT文字标识

​编辑固定数值

每簇扇区数

FAT表大小

DBR保留扇区

分区大小

开盘


#软件/磁盘#

打开  [右键此电脑→显示更多选项→管理→磁盘管理]。

右键“磁盘管理”,选择“附加VHD”。

将所需故障磁盘添加。

添加完成后打开“WinHex”。

点击右上角列表的“Open Disk”。

选择故障磁盘。

完成

#FAT32 结构详解#

本目录为了解DBR的构造以及含义

FAT32文件系统由“引导区”“保留区”“FAT表”“数据区”构成 。

分区结构

引导区

引导区也被称为DBR。其主要功能是完成操作系统的自举并将控制权交给操作系统。每个分区都有引导扇区,但只有被设为活动分区才会被MBR装的DBR入内存运行。通常DBR位于FAT32文件系统的“0号扇区”。开头固定标识为“EB 58 90”。

保留区

通常存在DBR后,在实际数据恢复中无需在意。

FAT表

FAT表,也被称为“文件分配表”,用于记录分区中文件系统数据区对应簇的使用状态及文件不连续状态下的前后链接关系。正常情况下每个FAT32系统中存在2个FAT表。FAT表2为FAT表1的备份,固定标识为“F8 FF FF 0F”。

数据区

数据区是FAT32文件系统的核心区域,所有数据文件均存储在此处区域。数据区包含“根目录”和“子目录”。数据区的起始位置为根目录的起始位置,根目录位置固定为“2号簇”。

各结构解析

本目录为各结构的解析。

引导区

FAT32的DBR由5部分构成,分别是“跳转指令”“系统版本号”“BPB参数”“引导程序”“结束标识”。

重要参数如下

0x00-02:跳转指令{EB 58 90}为DBR开头的固定标识

0x0B-0C:每扇区字节数{00 02}:固定值“512”

0x0D:每扇区字节数{40}:分区分配的虚拟单位(非固定)

0x10:FAT表个数{02}:记录分区内有效FAT表个数(需随机应变)

0x15/18/1A:固定值分别为“F8”“3F”“FF”

0X20-23:分区大小{00 40 80 0C}:记录了分区总扇区单位扇区

0x24-27:FAT表大小{01 3C 00 00}:记录了FAT表大小单位扇区

0x2C:根目录簇号{02}:记录了根目录的簇号

0x30;32:固定值分别为”01“”06“

0x52-56:文本区为”FAT32“

0xFE-FF:结束标识”55 AA“

FAT表

FAT表固定标识:F8 FF FF 0F。FAT表一般只用于计算分区大小。

根目录/子目录

FAT32文件系统中,统一在数据区的根目录区为根目录创建目录项,并由FAT表为文件的内容分配簇来存放数据。根目录区的首簇由格式化程序指派,并把簇号记录在DBR的BPB中。

根目录对于文件或文件夹的形容有32字节(俩行) ,第一行记录文件名,第二行记录文件簇号以及大小

以下为文件4.JPG为例

0xE0-E7:文件名

0xE8-EA:文件扩展名

0xEB:文件类型,10为文件夹,20为文件

0xF4-F5:文件高位簇:将此数据x65536+低位簇计算值

0xFA-FB:文件低位簇:将此数据x每簇扇区数+高位簇x65536即可定位到文件的起始扇区

0xFC-FF:文件大小(单位为字节)

#FAT32文件系统手动提文件#

在WinHex中打开故障磁盘

向下搜索”!00“,直到跳到根目录。

计算每簇扇区数

到达根目录。

记下他的簇号。

继续往下搜”!00“,到达他的子目录。

记下他的簇号。

用”根目录“-子目录”,算出他的每簇扇区数

算出他的每簇扇区数为“128”。

计算文件位置与大小

需提文件存储在根目录中

这里以文件“1.doc”为例。

文件位置

读取第二行“A”"B"处数据,读取到的数据为“6”。

用“(文件位置-根目录位置)*每簇扇区数”得出文件的实际位置

得出文件实际位置为“512”。

文件大小

读取第二行“C”"D""E""F"处数据,读取到的数据为“10240”。

提出文件

回到根目录首,向下偏移“512”个扇区。注意进制需要从十六进制调整为十进制,点击左边列表即可。

到达文件实际位置。

在开头第一个字节选择右键,选择“Beginning of Block”定开头。

往下偏移“10240”个字节,跳到文件尾。选择“End of block”定结尾。

Ctrl+Shift+N 保存,提出。

需提文件存储在文件夹中
文件夹位置

这里以“文件夹1”为例。

读取第四列“A”“B”处数据 ,读取到的数据为“1971”,注,文件夹没有大小。

用“(文件夹位置-根目录位置)*每簇扇区数”得出文件夹的实际位置。得出文件夹的实际位置为“252,032

文件位置

向下跳转“252,032”个扇区,到达下一级目录

这里以“A001.DOC"为为例。

读取第二行“A”"B"处数据,读取到的数据为“1,972”。

用“(文件位置-文件夹位置)*每簇扇区数”得出文件的实际位置

算出文件的实际位置为“128”。

文件大小

读取第二行“C”"D""E""F"处数据,读取到的数据为“22,528”。

提出文件

回到文件夹首,向下偏移“128”个扇区。注意进制需要从十六进制调整为十进制,点击左边列表即可。

到达文件实际位置

在开头第一个字节选择右键,选择“Beginning of Block”定开头。

往下偏移“22,528”个字节,跳到文件尾。选择“End of block”定结尾。

Ctrl+Shift+N 保存,提出。

#FAT32文件系统修复DBR开盘提出文件#

  修复FAT32文件系统DBR时,需了解DBR的必要参数和位置。详情参数可参照目录中“各结构解析”→“引导区”。

  修复DBR需要的数据分别为:“跳转指令”,“每簇扇区数”,“分区大小”,“FAT表大小”,“结束标识”,"FAT文字标识",“结束标识”,"几个固定数值".“DBR保留扇区数”。

例题:

可以看出此磁盘DBR已被删除,需要通过手动修复DBR进行开盘。

所需数据:“每簇扇区数”,“分区大小”,“FAT表大小”,“保留扇区数”需要手动计算

先将DBR中固定数值写入。

跳转指令

"EB 58 90"存在于DBR开头处

结束标识

“55 AA”DBR结束标识,存在于DBR末尾

FAT文字标识

"FAT32"  放置在0x52至0x56处,可直接在文本区输入“FAT32”,也可直接在数据区输
“46 41 54 33 32”。

固定数值

0X0C:0C0X10:020X15:F80X18:3F
0X1A:FF0X22:020X20:010X32:06

每簇扇区数

DBR开始向下搜索“!00”,跳到“根目录”。

记下它的簇号

继续往下搜索,直到跳到“子目录”。

记下它的簇号

将“子目录”的簇号减去根目录”的簇号即可得出“每簇扇区数”。

将数据填在0x0D处。

FAT表大小

DBR开始向下搜索“!00”,跳到“FAT表1”。

记下它的簇号。

继续往下搜搜“!00”,直到“FAT表2”。

记下它的簇号。

”FAT表2减去”FAT表1“即可得到FAT表大小

将FAT表大小填在0x24至0x27

DBR保留扇区

用”FAT1减去”DBR所在位置簇号

将数据填至”0x0E至0x0F

分区大小

分区大小=(“FAT2”-"FAT1")×每簇扇区数×128

将数据填至“0x20至0x23

至此,全部数据已全部填好

开盘

打开WinHex中开盘选项

这里填入“分区大小

这样即表示分区已找到

修复DBR成功

  • 24
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值