硬盘数据恢复基础知识

0x01 恢复方式

从数据恢复方式来看,主要有软件恢复方式、软硬件结合恢复方式和深层信号还原方式三种。
软件恢复方式:在硬盘还可以使用的情况下用数据恢复软件恢复数据, 这种恢复方式恢复成本低,但对于那些已经坏掉的硬盘就显得无能为力了。

软硬件结合方式:先修复硬盘或开盘读出盘片中的数据后再用软件恢复数据, 这种方式的数据恢复率是相当惊人的,即使是位于物理坏道上面的数据,由于多种信息的缺失而无法找出准确的数据值,也可以通过大量的运算,在多种可能的数据值之间进行逐一代入,结合其他相关扇区的数据信息,进行逻辑合理性校验,从而找出逻辑上最符合的真值,但这种方式 还是不能恢复被覆盖了的数据。

深层信号还原方式:通过分析盘片表面的深层磁介质状态,通过使用不同波长、不同强度的射线对这个晶体进行照射,可以产生不同的反射、折射和衍射信号,然后通过分析各种反射、折射和衍射信号,就可以帮助我们“看到”在不同深度下这个磁介质晶体的残影。但由于这种方式现实技术复杂、恢复成本高,而且目前世界范围内也没有几个国家可以拥有这样的技术,只有极少数规模庞大的计算机公司和不计成本的政府机关能拥有这样级别的数据恢复设备 。

0x02 硬盘的存储结构

1,MBR(Main Boot Record )区位于整个硬盘的 0 磁道 0 柱面 1 扇区,共占 512字节。 一个扇区的硬盘主引导记录MBR由如下4个部分组成。

主引导程序(偏移地址0000H–0088H),它负责从活动分区中装载,并运行系统引导程序。出错信息数据区,偏移地址0089H–00E1H为出错信息,00E2H–01BDH全为0字节。

分区表(DPT,Disk Partition Table)含4个分区项,偏移地址01BEH–01FDH,每个分区表项长16个字节,共64字节为分区项1、分区项2、分区项3、分区项4。

结束标志字,偏移地址01FE–01FF的2个字节值为结束标志55AA,如果该标志错误系统就不能启动。

0000-0088主引导程序主引导程序446字节
0089-01BD出错信息数据区数据区0字节
01BE-01CD分区项116字节
01CE-01DD分区项216字节
01DE-01ED分区项316字节
01EE-01FD分区项416字节
01FE55结束标志2字节
01FFAA

2,DBR(DOS Boot Record)区位于 0 磁道 1 柱面 1 扇区,是操作系统可以直接访问的第一个扇区,它包含引导程序和 BPB(BIOS Parameter Block) 。它由格式化程序产生,不同的分区格式的 DBR有所不同。

3,FAT(File Allocation Table )区文件系统给文件分配空间的一张表,它的每一项都与磁盘的数据块一一对应。在 FAT16中每项占用 2 字节, FAT32中每项占用 4 字节。因此在知道分区大小的情况下不难算出 FAT的长度。为了防止 FAT意外损坏,系统特在FAT后面备份了一个一模一样的 FAT,当第一个 FAT遭破坏后可以将第二个 FAT恢复后继续使用。

4,Dir(Directory) 区为文件目录表, 它与 FAT配合确定文件的具体位置。在 Dir区仅保存文名、长度、起始位置、创建时间、修改日间和最后访问日期。

5,数据区即文件真正存放的位置,保存着文件的详细内容。

0x03 数据恢复

一,删除恢复

001.FAT 分区文件恢复

在 FAT分区中,当我们删除一个文件时仅仅修改了 FAT区和 Dir 区的数据内容。在这个过程中,系统将 Dir 区中对应文件的第一个字节改为“ E5H”,然后再将对应的 FAT记录清零释放使用空间,将对应的区域标记为未使用,而修改数据区的内容。

因此,当一个文件是连续存放的时,我们可以比较容易地恢复删除的文件。但有时我们可能会修改某些文件内容或者磁盘剩余空间不是很大的候时, 都可能使文件零散存放,这时在恢复数据时就只能从多方面来判断分析数据才能正确地恢复数据。

002.NTFS 分区文件恢复

NTFS分区与 FAT类似,只是在删除文件时不是修改的 FAT和 Dir ,而是修改MFT和位图记录。删除文件的过程中将对应文件的 MFT记录中偏移 16H的 2 字节改为 0 即代表该 MFT记录已经被删除,然后再将该 MFT记录在 MFT位图中所对应的位清零,最后将文件所对应的位图清零就完成了文件的删除操作。
MFT记录的数据 (80H) 中详细的记录的文件各数据段的起始位置和长度, 可以方便的恢复数据,而不用像 FAT那样为文件不是连续存放担心恢复效果。

二,格式化恢复

001.FAT 分区

当我们重新格式化磁盘时仅仅重写了 DBR、 FAT和根目录区的数据,所以分区、格式化后仍然可以恢复磁盘中的数据。 但由于分区被重新格式化后无法找到以前分区的根目录入口,并且无法准确知道以前分区的簇大小。因此格式化恢复的重难点在于确定簇大小和根目录的位置。用过 DOS系统的人都知道用 Dir 显示子目录内容时会发现里面有“. ”和“.. ”两个目录,其中“ . ”代表当前目录, “.. ”代表上一级目录。在格式化恢复时,首先确定数据区的起始位置和簇大小,然后再搜索分区中的残留目录数据,最后恢复数据。

002.NTFS 分区

恢复 NTFS分区中的数据,主要通过查找分区中残留的 MFT(MFT,即主文件表(Master File Table)的简称,它是NTFS文件系统的核心。MFT由一个个MFT项(也称为文件记录)组成,每个MFT项占用1024字节的空间。每个MFT项的前部几十个字节有着固定的头结构,用来描述本MFT项的相关信息。后面的字节存放着“属性”。每个文件和目录的信息都包含在MFT中,每个文件和目录至少有一个MFT项。除了引导扇区外,访问其他任何一个文件前都需要先访问MFT,在MFT中找到该文件的MFT项,根据MFT项中记录的信息找到文件内容并对其进行访问。)记录来恢复数据。所有的文件描述信息都存储在文件的 MFT记录中,其中包括文件名,大小,起始位置,长度,创建日期等信息; 其次是每个 MFT记录头都以“FILE”标记开头。因此恢复 NTFS分区中的文件可以分为以下几步:

①在分区中查找以“ FILE”开头的扇区;
②进一步分析扇区中的内容并判断是否为真正的 MFT记录;
③按照 MFT记录格式解释读出的数据内容;
④根据文件的大小和文件所占用的簇数计算出以前分区的簇大小;
⑤恢复数据。

由于在 MFT的数据流中详细地记录了文件的存储位置,所以在 NTFS分区中采用格式化恢复方式恢复数据的成功比 FAT分区高得多。

三,Raw 恢复

在恢复数据时,可能会遇到目录结构或 MFT已经完全破坏了的情况,而文件真正的数据内容并没有被覆盖,此时删除恢复和格式化恢复方式就显得无能为力了。
Raw恢复是一种文件搜索算法,使用这种方式将读取分区中的所有扇区,从而搜索特定的文件头标记。基本步骤为:首先将从扇区中读出的数据与数据库中的数据比较,判断是否为已知的文件格式;再根据文件头和数据库中的数据确定文件大小;最后恢复连续区域内的特定大小的数据;采用这种恢复方式的优点是恢复成功率高。缺点有:

①查找文件速度慢,每读出一个扇区数都要与数据库中的数据进行比较;
②实现难度大,需要程序员查阅大量的数据资料并了解各种类型文件的文件头;
③由于文本文件是无格式文件,没有文件头,因此无法恢复纯文本文件;
④由于这种方式是从文件头开始处连续读取指定大小的数据到特定文件中,所以无法正确恢复零散存放的文件。