winhex中文版文件损坏(3分钟了解winhex恢复文件的方法)

WinHex数据恢复—FAT16文件系统FAT16文件系统

FAT(File Allocation Table)就是文件分配表的意思,用来记录文件所在位置的表格,FAT16使用了16位的空间来表示每个扇区配置文件,具体FAT16文件系统由DBR、FAT1、FAT2、FDT、DATA数据区五个部分组成,具体如下图所示。

winhex中文版文件损坏(3分钟了解winhex恢复文件的方法)

其中,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的文件,如下图所示。

根据FAT16的MBR分区表中引导分区信息(位置01C6)确定DBR的位置,读取DBR中的每簇扇区数(位置0X0D)为64,保留扇区数(位置0X0E)为8,FAT表大小(位置0X16)为256,跳转一个保留扇区数8就可以跳转到FAT1,如下图所示。

再跳转一个FAT表大小256就可跳转到FAT2,再跳转一个FAT表大小256就可以跳转到FDT,在FDT中查找带jpg后缀名的文件,记录起始簇号(位置0X1A)为5和文件大小(位置0X1C)为23184字节,如下图所示。

再跳转32个扇区(FAT16文件系统FDT大小)就可以到达数据区,通过文件的起始簇号计算文件所在扇区,记得减去初始的2个不用来存数据文件的簇,就可以定位文件存储位置,这里就跳转192个扇区就到了存储图片数据的位置,如下图所示。

FAT16恢复DBR

1. 跳转指令
跳转指令占用2字节,它将程序执行流程跳转到引导程序处。2. OEM代号
OEM代号占8字节,由OEM厂商具体安排。3. BPB参数
BPB(BIOS Parameter Block)即BIOS参数块,占用51字节,记录了有关该文件系统的重要信息,其中重要的字段如下表所示:

4. 引导程序
FAT16的DBR引导程序占用448字节,其负责完成将系统文件NTLDR装入。5. 结束标志
DBR的结束标志与MBR的结束标志相同,都为“55 AA”。在对DBR的结构有了较深入了解后,如果FAT16文件系统的DBR受到破坏,那么就可以参照其结构特征,尝试恢复DBR,这里将DBR部分全部置0,之后该虚拟磁盘就不能正常打开了,报错如下:

之后,利用winHex来对该FAT16的DBR进行恢复,具体步骤如下:1. 新建一个FAT16文件系统将其DBR复制粘贴到被破坏FAT16的DBR处;2. 计算保留扇区数
从DBR处向下搜索“F8FFFF”,到达FAT1,计算保留扇区数方法:保留扇区数所在的扇区号所在扇区号这里是用也就是保留扇区数为8,将其十六进制值填入0X0E。3. 计算FAT表大小
从FAT1向下搜索“F8FFFF”,到达FAT2,计算FAT表大小方法:表大小所在扇区号所在扇区号这里是用将其十六进制值填入0X16。4. 查看隐藏扇区数大小与分区大小
从MBR的分区表处查看分区的隐藏扇区数大小(位置O1C6)为128与分区大小(位置01CA)4,188,160。5. 计算每簇扇区数
计算每簇扇区数之前先要计算数据区总扇区数和数据区总簇数,数据区总扇区数的计算方法:数据区总扇区数分区大小表大小保留扇区数大小占用的扇区数

这里也就是

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

数据区的总簇数表大小

这里也就是

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

每簇扇区数数据区总扇区数数据区总簇数

这里也就是

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

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

在FAT16文件系统中删除文件和格式化磁盘会对文件产生哪些影响,文件恢复的基本原理是怎么样的呢,这里就新建一个FAT16的虚拟磁盘vhd,在磁盘中新建两个txt文件(test1.txt和test2.txt)作为测试用文件,分别验证彻底删除文件和格式化磁盘会对文件造成什么影响。

文件删除前,查看fat表如下图所示。

查看fdt文件目录表如下图所示,后面提示的TEST1.TXT就是对应的test1.txt文件。

查看test1.txt文件数据如下图所示。

文件删除后,fat表中两个字节位置由原本的FF变为00,如下图所示。

文件删除后,fdt文件目录表开头由“54”变为“E5”,如下图所示。

磁盘格式化前,查看fat表如下图所示。

查看fdt文件目录表如下图所示,后面提示的TEST2.TXT就是对应的test2.txt文件。

查看数据文件如下图所示。

磁盘格式化后,查看fat表中又有四个字节位置由原本的FF变为00,如下图所示。

磁盘格式化后,fdt文件目录表中已经找不到TEST2.TXT

综上,彻底删除某个文件会使该文件对应的FAT表中内容被标记为00,FDT文件目录表中该文件对应部分的第一个字节位置修改了”E5“,文件底层内容无变化。磁盘格式化后,FAT表被清空,FDT文件目录表被清空,但文件底层内容还在,以上也证实了不管是利用Shift 来彻底删除文件还是格式化整个磁盘,文件底层内容是没有变化的,只有当新的数据拷贝占据了这些磁盘空间后才会彻底丢失。

发表评论

登录后才能评论