freeBuf
主站

分类

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

特色

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

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

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

FreeBuf+小程序

FreeBuf+小程序

WinHex数据恢复—FAT16文件系统
2022-09-04 11:25:23
所属地 天津

FAT16文件系统

FAT(File Allocation Table)就是文件分配表的意思,用来记录文件所在位置的表格,FAT16使用了16位的空间来表示每个扇区配置文件,具体FAT16文件系统由DBR、FAT1、FAT2、FDT、DATA数据区五个部分组成,具体如下图所示。 fat16aaccca.png其中,DBR及其保留扇区(DOS Boot Record)含义是DOS结构引导记录,即操作系统引导记录,而在DBR之后往往有一些保留扇区存在。FAT1(File Allocation Table)含义是文件分配表,FAT16一般有两份FAT表,FAT2就是FAT16的第二份分配表,也就是FAT1的备份。FDT(File Directory Table)含义是文件目录表,一般占用大小为32个扇区。DATA数据区是FAT16文件系统存储数据的区域。

文件分配表由FAT表项构成,FAT表项简称为FAT项,FAT16的每个FAT项对应两个字节,每个FAT项都有固定的编号,编号从0开始,FAT表前两个FAT项有专门用途,0号FAT项通常用来存放分区所在介质类型,例如硬盘的介质类型为“F8”,1号FAT项则用来存储文件系统的肮脏标志(表明文件系统被非法卸载或者磁盘表面存在错误),分区的数据区中每一个簇都会映射到FAT表中的唯一一个FAT项,因为0号FAT项和1号FAT项有特殊用途,所以数据区的第一个簇也就是编号为2号簇,这也就是没有0号簇和1号簇的原因。

用户文件以簇为单位存放在数据区中,一个文件至少占用一个簇。当一个文件占用多个簇时,这些簇的簇号不一定是连续的,但这些簇号在存储该文件时就确定了顺序,即每个文件都有其特定的“簇号链”。在分区上的每一个可用的簇在FAT中有且只有一个映射FAT项,通过在对应簇号的FAT项内填入“FAT项值”来表明数据区中的该簇是已占用、空闲或是坏簇三种状态之一。

下面先通过一个简单的例子,利用winHex工具查看下FAT16文件系统的各个部分,在新建的FAT16格式VHD虚拟磁盘中存放一个test.jpg的文件,如下图所示。 6.png根据FAT16的MBR分区表中引导分区信息(位置01C6)确定DBR的位置,读取DBR中的每簇扇区数(位置0X0D)为64,保留扇区数(位置0X0E)为8,FAT表大小(位置0X16)为256,跳转一个保留扇区数8就可以跳转到FAT1,如下图所示。 1.png再跳转一个FAT表大小256就可跳转到FAT2,再跳转一个FAT表大小256就可以跳转到FDT,在FDT中查找带jpg后缀名的文件,记录起始簇号(位置0X1A)为5和文件大小(位置0X1C)为23184字节,如下图所示。2.png再跳转32个扇区(FAT16文件系统FDT大小)就可以到达数据区,通过文件的起始簇号计算文件所在扇区,记得减去初始的2个不用来存数据文件的簇,就可以定位文件存储位置,这里就跳转192个扇区就到了存储图片数据的位置,如下图所示。3.png

FAT16恢复DBR

FAT16文件系统的DBR位于第一个扇区,计算机启动时首先由BIOS读入主引导盘MBR的内容,以确定各个逻辑驱动器及其起始地址,然后调入活动分区的DBR,将控制权交给DBR,由DBR来引导操作系统。FAT16文件系统的DBR主要包含五个部分,分别是:

1. 跳转指令 跳转指令占用2字节,它将程序执行流程跳转到引导程序处。2. OEM代号 OEM代号占8字节,由OEM厂商具体安排。3. BPB参数 BPB(BIOS Parameter Block)即BIOS参数块,占用51字节,记录了有关该文件系统的重要信息,其中重要的字段如下表所示:4.png4. 引导程序 FAT16的DBR引导程序占用448字节,其负责完成将系统文件NTLDR装入。5. 结束标志 DBR的结束标志与MBR的结束标志相同,都为“55 AA”。 在对DBR的结构有了较深入了解后,如果FAT16文件系统的DBR受到破坏,那么就可以参照其结构特征,尝试恢复DBR,这里将DBR部分全部置0,之后该虚拟磁盘就不能正常打开了,报错如下:5.png之后,利用winHex来对该FAT16的DBR进行恢复,具体步骤如下:
1. 新建一个FAT16文件系统将其DBR复制粘贴到被破坏FAT16的DBR处;2. 计算保留扇区数 从DBR处向下搜索“F8FFFF”,到达FAT1,计算保留扇区数方法:保留扇区数=FAT1所在的扇区号-DBR所在扇区号这里是用136-128=8也就是保留扇区数为8,将其十六进制值填入0X0E。 3. 计算FAT表大小 从FAT1向下搜索“F8FFFF”,到达FAT2,计算FAT表大小方法:FAT表大小=FAT2所在扇区号-FAT1所在扇区号这里是用392-136=256将其十六进制值填入0X16。 4. 查看隐藏扇区数大小与分区大小 从MBR的分区表处查看分区的隐藏扇区数大小(位置O1C6)为128与分区大小(位置01CA)4,188,160。 5. 计算每簇扇区数 计算每簇扇区数之前先要计算数据区总扇区数和数据区总簇数,数据区总扇区数的计算方法:数据区总扇区数=分区大小-2*FAT表大小-保留扇区数大小-FDT占用的扇区数这里也就是4188160-256*2-8-32=4187608

数据区总簇数的计算方法:

数据区的总簇数=512*FAT表大小/2

这里也就是

512*256/2=65536

最后每簇扇区数的计算方法:

每簇扇区数=数据区总扇区数/数据区总簇数

这里也就是

4187608/65536=64

6. 将计算的重要数据填入被破坏FAT16文件系统的DBR中对应的位置6b6309d5906a1a687.png

FAT16删除文件和格式化磁盘区别

在FAT16文件系统中删除文件和格式化磁盘会对文件产生哪些影响,文件恢复的基本原理是怎么样的呢,这里就新建一个FAT16的虚拟磁盘vhd,在磁盘中新建两个txt文件(test1.txt和test2.txt)作为测试用文件,分别验证彻底删除文件和格式化磁盘会对文件造成什么影响。 文件删除前,查看fat表如下图所示。7.png查看fdt文件目录表如下图所示,后面提示的TEST1.TXT就是对应的test1.txt文件。8.png查看test1.txt文件数据如下图所示。9.png文件删除后,fat表中两个字节位置由原本的FF变为00,如下图所示。10.png文件删除后,fdt文件目录表开头由“54”变为“E5”,如下图所示。11.png文件彻底删除后,文件底层内容无变化,利用winHex导出文件后,仍可查看原文件。12.png磁盘格式化前,查看fat表如下图所示。13.png查看fdt文件目录表如下图所示,后面提示的TEST2.TXT就是对应的test2.txt文件。14.png查看数据文件如下图所示。15.png磁盘格式化后,查看fat表中又有四个字节位置由原本的FF变为00,如下图所示。16.png磁盘格式化后,fdt文件目录表中已经找不到TEST2.TXT17.png磁盘格式化后,文件底层内容无变化,利用winHex导出文件后,仍可查看原文件。18.png综上,彻底删除某个文件会使该文件对应的FAT表中内容被标记为00,FDT文件目录表中该文件对应部分的第一个字节位置修改了”E5“,文件底层内容无变化。磁盘格式化后,FAT表被清空,FDT文件目录表被清空,但文件底层内容还在,以上也证实了不管是利用Shift+来彻底删除文件还是格式化整个磁盘,文件底层内容是没有变化的,只有当新的数据拷贝占据了这些磁盘空间后才会彻底丢失。

转载声明:如果希望转载请于公众号(安全fun)后台联系,或者邮件至anquanfun@163.com,转载时请保留原作者(安全fun)及出处信息,转载文章禁止声明原创,更多合作也可邮件至anquanfun@163.com,搜索微信公众号:安全fun。acc.jpg免责声明:本公众号所涉及内容仅供安全研究与教学使用,如出现其他风险,后果自负。

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