数据恢复之已删除文件恢复(上)

本文案例对象:分区类型:MBR,文件系统:FAT32

用Winhex对数据内容进行查找提取

目标1:数据恢复教程.txt

首先将“数据恢复教程”转化为ASCII码

由于它是长文件名(超过8个字节),因此只取前6个字节:CAFDBEDDBBD6
点击Winhex分区的根目录,用十六进制查找文件名

目录项.png

可得文件的起始簇号=132331,文件大小=16字节
转到指定簇得

可以看到文件的内容部分
在文件头右键选块起始,若使用十进制数据,点击左侧Offset纵栏将显示进制转化为十进制,点击Winhex上方小箭头转到偏移量,将文件大小16填入

可得到文件的末位+1的位置,点击选块结束,即可选定数据范围

选块右键点击编辑,复制选块至新文件,选择好位置,并输入带后缀的文件名,即可将其人工拷贝至新位置。


目标2:数据恢复教程.rar

此次使用的是另一块虚拟磁盘,此次文件非常多,我们尝试在根目录下进行文件名搜索

发现需要很长时间,这是因为该磁盘内文件很多,根目录很大。于是我们需要用FAT表进行文件目录下一簇号的查找。

其中Fat的第二表项标注根目录存放情况,此处第三个四字节并不是FFFFFF0F,而是410f0000(0xF41),我们可知存放根目录的下一个簇号是0xF41
于是我们转到该簇号,进行进一步的文件名查找

发现查找依然要很久
返回FAT表,查看存放根目录的下一个簇号,如何查看呢?
由于FAT表每四个字节记录一个簇号的使用情况,因此我们可以将FAT表偏移量设置为3905*4(0xF41*4)即可找到存放根目录的下一个簇号
将鼠标点击FAT表初始位置F8,点击Winhex上面转到偏移量

于是我们找到了存放根目录的下一个簇号7117,依然跳转到该簇查询文件,发现依然很慢(一时出不来),接着重复操作,在FAT表转到偏移量7117*4得到下一个簇号为10081,进行查找,无果,再在FAT表转到偏移量10081*4得到下一个簇号为13671,很快就找到了文件目录(按F3跳到下一个匹配对象)

文件所在簇为0x13599(79257)文件大小为0x63(99)字节【注:字节数一定不能少,不然压缩包打开会报错】,即可将其进行提取

这边我们加对FAT表的理解:
FAT表是描述文件簇流存放的情况,他用FAT表项以链表的形式将其文件存放情况描述出来,存放数据(包括根目录)的第一个簇是2号簇,对于第k个四字节位置,它存放的是使用第k个簇存放文件后下一个簇的位置

目标3:恢复删除的文件

打开另一个新磁盘

在分区内我们发现一个被删除的文件"?INHEX.zip",这边的**?是因为被删除文件的文件名首字节会被替换成E5**标记,我们分别使用Winhex自带功能恢复和人工恢复。

对于被删除的文件,右键点击恢复

这就可以很轻松恢复了。

人工恢复呢,则是采用目标1和目标2的方法进行恢复。
首先将WINHEX转化为ASCII码

这边只取后5个字节,因为被删除文件第一个字节被标志为E5
输入十六进制搜索框搜索,偏移量设置为1(因为E5不进行比较)


查找到文件目录,即可进行恢复。