文件系统结构分析与数据恢复

文件恢复是指由于各种原因(如病毒等)导致数据损失时把保留在介质上的数据重新恢复的过程。即使数据被删除或硬盘出现故障,只要在介质没有严重受损的情况下,数据就有可能被完好无损地恢复。

预备知识

一.硬盘数据存储区域

FAT16和FAT32文件系统硬盘上的数据按照其不同的特点和作用大致可分为5部分:MBR区、DBR区、FAT区、FDT区和DATA区。MBR由分区软件创建,DBR区、FAT区、FDT区和DATA区由高级格式化程序创建。文件系统写入数据时只是改写相应的FAT区、FDT区和DATA区。这5个区域共同作用才使整个硬盘的管理系统有条不紊。
1.MBR,主引导记录区
2.DBR,操作系统引导记录区
3.FAT,文件分配表
4.FDT,文件目录表
5.DATA,数据区
以上5个区域在硬盘逻辑分区上的排列如下所示。各区域在分区上的位置关系。
MBR(63)->DBR(32)->FAT1->FAT2->FDT(32)->DATA

二.文件分配表

文件分配表(FAT)是DOS文件管理系统用来记录每个文件的存储位置的表格,它以链的方式存放簇号。
磁盘格式化后,用户文件以簇为单位存放在数据区中,一个文件至少占用一个簇。当一个文件占用多个簇时,这些簇的簇号不一定是连续的,但这些簇号在存储该文件时就确定了顺序,即每个文件都有其特定的“簇号链”。磁盘上的每一个可用的簇在FAT中有且只有一个登记项,通过在对应簇号的登记项内填入“表项值”来表明数据区中的该簇是已占用、空闲或是坏簇三种状态之一。损坏的簇可以在格式化过程中,由Format命令发现并记录在FAT中。

三.文件目录表

用Format命令对磁盘进行高级格式化的时候,就已经为整个磁盘建立了一个根目录FDT。在根目录下,用户可以再创建不同的子目录或文件。根目录以及各个子目录都有自己的FDT。
根目录下的所有文件及其子目录在根目录的文件目录表中都有一个“目录登记项”。每个目录登记项占用32个字节,提供有关文件或子目录的信息。

手工恢复文件

1. 使用WinHex打开U盘查看各项参数

(1)格式化U盘:
选择“格式化”->在文件系统中选择“FAT32”->“开始”->“确定”,对U盘进行格式化。
(2)使用WinHex获取U盘快照:
打开WinHex。
单击“工具”->“打开磁盘”->在逻辑驱动器中选择磁盘->“确定”
获取新快照后可以看到驱动器中所包含的目录、文件、文件分配表的大小和起始位置等相关信息。
(本实验中选用U盘操作)

「注」 不要选择“不要再显示此提示信息”,如果选中了则不能获取新快照。可以通过“帮助”->“设置”->“初始化”来取消选择

打开后可以看到以下信息:
在这里插入图片描述
(3)查看FAT1
单击WinHex中U盘快照中文件列表中的FAT1即可查看FAT1。
单击FAT1中的数据可在左侧的参数框中看到数据所代表的簇号和簇的当前状态。
在这里插入图片描述
(4)计算FDT的起始位置
在文件列表中可以看到FAT1和FAT2的第1扇区位置,FAT2是FAT1的备份,所以大小相等内容相同。因此可以推算出它的大小为:FAT2的第1扇区位置-FAT1的第1扇区位置。FAT1的大小是: 8934-1484=7450

可读取到数据:
FAT1 1484
FAT2 8934

FDT的位置在FAT2之后,所以可以通过:FAT2的第1扇区位置+FAT1的大小来得到FDT的起始位置。
FDT的起始位置的逻辑扇区编号是: 8934+7450=1638
(5)跳转到FDT的起始地址
单击“位置”->“转到扇区”->在扇区输入框中输入FDT的起始位置的逻辑扇区编号->“确定”,即可跳转到FDT的起始地址。
(6)根据实验原理了解FDT表中的目录登记项的各部份含义。
在FDT中,每个目录登记项占用32个字节,分为8个区域,提供有关文件或子目录的信息。FAT32文件目录项的32 个字节表示的定义:

字节位置字节数内容及含义
0x0~0x78文件名
0x8~0xA3扩展名
0xB100000000(读写)
~~00000001(只读)
~~00000010(隐藏)
~~00000100(系统)
~~00001000(卷标)
~~00010000(子目录)
~~00100000(归档)
0xC1系统保留
0xD1创建时间的10毫秒位
0xE~0xF2文件创建时间
0x10~0x112文件创建日期
0x12~0x132文件最后访问日期
0x14~0x152文件起始簇号的高16位
0x16~0x172文件最近修改时间
0x18~0x192文件最近修改日期
0x1A~0x1B2文件起始簇号的低16位
0x1C~0x1F4表示文件的长度
2. 创建文本文件

在U盘根目录下新建文本文档“Hello.txt”,内容为“Hello World!”的文本文件。文件名和内容使用英文是为了便于查找。

3. 备份相关数据

(1)重新获取磁盘快照
此时弹出对话框提示“有快照可以重用”,单击“获取新快照”即可获得逻辑驱动器的当前快照。
(2)备份FDT中“Hello.txt”的目录登记项
根据FDT的起始位置的逻辑扇区编号跳转到FDT的起始地址。
在这里插入图片描述
找到文件“Hello.txt”的登记项。根据数据区右侧的明文找到倒数32个与文件“Hello.txt”相关的字节,即是文件的目录登记项。
在这里插入图片描述
按住鼠标左键拖动选中文件“Hello.txt”的目录登记项的32个字节。
右键单击被选中的数据块->“编辑”->“复制选块”->“置入新文件”->将新文件命名为“FDTH.dat”保存位置是C盘根目录下->“保存”。此时新文件会在WinHex中被打开。
根据实验原理中对目录登记项各部份的定义,文件“Hello.txt”的文件名在目录登记项中的十六进制代码的第1字节的值是 48
文件的大小是 12 字节,在目录登记项中的十六进制代码是 00 00 00 0C
文件的首簇编号是 6 ,在目录登记项中的十六进制代码是 00 06
在这里插入图片描述
(3)备份FAT1中的相关数据
参考FDT数据的备份步骤,将FAT1中的有效数据备份到C盘根目录下,文件名为“FAT1H.dat”。
在这里插入图片描述
(4)查看DATA区域中文件“Hello.txt”的数据
单击“位置”->“转到扇区”->在簇输入框中输入文件“Hello.txt”的首簇号->“确定”,即可跳转到文件“Hello.txt”的起始地址。
在这里插入图片描述
在这里插入图片描述

4. 删除文件

在D盘根目录下选中文件“Hello.txt”
按“Shift+Delete”键将其删除。

5. 查看删除标记

(1)重新获取U盘快照。
(2)对比当前FDT中文件“Hello.txt”的目录登记项和FDTH.dat中的相关数据。
FDTH.dat中第一个字节是 48
当前FDT中文件“Hello.txt”的目录登记项的第一个字节是 E5
在这里插入图片描述
(3)对比FAT1中相关数据的变化。
FAT1H.dat中文件“Hello.txt”簇链相关位置的十六进制值是00 00 00 00
上述位置的值在当前FAT1中相同位置的值是FF FF FF 0F
在这里插入图片描述
在这里插入图片描述
(4)查看DATA区域中文件“Hello.txt”的数据。
根据FDTH.dat记录的文件“Hello.txt”的首簇位置跳转相关簇并查看文件数据。文件数据是否有变化?
在这里插入图片描述

6. 根据备份数据恢复文件

(1)根据备份数据FDTH.dat和FAT1H.dat恢复FDT与FAT1中的相关数据。
在FDT与FAT1的数据部分,用鼠标单击要修改的数据,然后通过键盘输入数值。
按“Ctrl+S”键保存上述修改。出现提示信息,单击“确定”|“是”完成保存。
(2)刷新D盘根目录查看文件。文件是否被恢复?
答:是
文件名是 HELLO.txt
在这里插入图片描述

模糊恢复文件

1. 格式化U盘

(1)重新对U盘进行格式化。
(2)使用WinHex重新获取U盘快照。
(3)对比格式化前后FDT和FAT1中数据的变化。

格式化前;
在这里插入图片描述
在这里插入图片描述

格式化后:

在这里插入图片描述

2. 根据DATA区的数据内容恢复文件

(1)根据FDTH.dat中的记录跳转到文件“Hello.txt”首簇位置查看文件数据。文件数据是否有变化?
->没有变化。
在这里插入图片描述
(2)根据文件首簇位置和文件大小修改FDT和FAT1。
根据FDT的定义,文件“Hello.txt”的目录登记项中表示文件首簇位置的是 26至 27 字节。根据DATA区域中文件“Hello.txt”的相关内容,在这些位置中应填入 06 00
表示文件大小的是目录登记项中的第 28 至 31字节。根据DATA区域中的相关内容,在这些位置中应填入 0C 00 00 00
根据DATA区的数据内容修改FAT1。文件“Hello.txt”没有写满一个簇,因此找到文件“Hello.txt”在FAT1中的首簇位置写入FF FF FF 0F,表示文件结束。
(3)修改文件名。
表示文件名及其扩展名的是登记项中的第 0 至 7 字节。此时,假设只知道文件类型是文本文件而不知道文件名,则可以在相关字节中填入其它十六进制值,但是必须保证这些值符合文件名命名规则。0-7字节为文件名,可以全部填入十六进制值“46”;8-10字节为文件扩展名,填入十六进制值“54 58 54”。
按“Ctrl+S”键保存上述修改。
(4)刷新D盘根目录查看文件。文件是否被恢复?
答:是。
文件名是 FFFFFFFF.txt
在这里插入图片描述

安全擦除文件(文件粉碎)

将恢复的文件安全擦除
(1)安全擦除文件
单击“工具”->“文件工具”->“安全擦除…”->选择刚被恢复的文件|“删除”->在“用16进制数值填充”中输入数值->“确定”->“确定”,文件即被不可逆删除。为了便于查看可在“用16进制数值填充”中输入又特征的数值。例如“1234”。
(2)在DATA区查看文件数据
跳转到被安全擦除的文件的首簇位置查看被安全擦除的文件的数据。
文件被安全擦除后DATA区中的数据是否有变化?

文件被安全擦除后DATA区中的数据为刚刚填充的16进制的数值。

在这里插入图片描述

使用Rstudio进行文件恢复。

开始文件恢复:通过选择要恢复的磁盘,右键点击,打开驱动器文件,会自动扫描;左边是现在的文件,右边是可恢复的一些文件数据,绿色是恢复几率比较大的;勾选你要恢复的文件,然后点击上方的 恢复标记的恢复选项,输出文件夹自己设置;点击确定,恢复完成,在恢复文件夹找到已经恢复好的删除文件。

结果:文件有被恢复,但是内容是空的。

在这里插入图片描述

主引导扇区覆盖

利用changeboot.bin覆盖主引导扇区,虚拟机中实施

在虚拟机中,用WinHex打开磁盘C,将changeboot.bin中的字节码全选复制到磁盘C的FDT中,保存后重启。

在这里插入图片描述

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值