《浅谈Windows数据恢复原理及其实现.doc》由会员分享,可在线阅读,更多相关《浅谈Windows数据恢复原理及其实现.doc(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、硬盘数据恢复技术探讨金元兵 唐华灵 西南大学信息管理系,重庆 荣昌 402460摘摘 要要:数据恢复技术是保证计算机数据安全的重要技术,是当前各行各业信息化关注的热点问题。 文章通过对硬盘的数据存储结构的分析,探讨了硬盘数据恢复的基本技术,并结合实际软件开发讨论了数据恢复方法及其实现。关键词关键词:数据恢复;删除恢复;格式化恢复;Raw 恢复 the Analysis of Hard Disk Data Recovery TechnologyJin Yuanbin Tang HualingDepartment of the Information Management Southwest Un
2、iversity, ChongQing RongChang 402460Abstract: Data recovery, which is vital to keep safe to computer data. nowadays, business information is a hot issue. Through the analysis of the hard disk data storage structure, and the technology of data recovery, in conjunction with the discussion of the actua
3、l software development and data recovery methods to achieve. Key Word: Data recovery; Deleted recovery; Formated recovery; Raw recovery;1 1 引言引言随着科学技术的迅猛发展,信息化已经成为当前各行各业关注的重点问题。而数据作为信息化管理的核心部分,其安全性已受到了人们越来越多的重视,如何能够迅速而正确地恢复数据也就成了至关重要的问题。本文结合数据恢复软件开发实例,讨论数据恢复的方法实现。2 2 数据恢复的分类数据恢复的分类从数据恢复方式来看,主要有软件恢复方
4、式、软硬件结合恢复方式和深层信号还原方式三种。软件恢复方式主要是在硬盘还可以使用的情况下用数据恢复软件恢复数据,这种恢复方式恢复成本低,但对于那些已经坏掉的硬盘就显得无能为力了。软硬件结合方式则是先修复硬盘或开盘读出盘片中的数据后再用软件恢复数据,这种方式的数据恢复率是相当惊人的,即使是位于物理坏道上面的数据,由于多种信息的缺失而无法找出准确的数据值,也可以通过大量的运算,在多种可能的数据值之间进行逐一代入,结合其他相关扇区的数据信息,进行逻辑合理性校验,从而找出逻辑上最符合的真值,1但这种方式还是不能恢复被覆盖了的数据。深层信号还原方式则通过分析盘片表面的深层磁介质状态,通过使用不同波长、不
5、同强度的射线对这个晶体进行照射,可以产生不同的反射、折射和衍射信号,然后通过分析各种反射、折射和衍射信号,就可以帮助我们“看到”在不同深度下这个磁介质晶体的残影。但由于这种方式现实技术复杂、恢复成本高,而且目前世界范围内也没有几个国家可以拥有这样的技术,只有极少数规模庞大的计算机公司和不计成本的政府机关能拥有这样级别的数据恢复设备。3 3 硬盘的存储结构硬盘的存储结构图 1 表示了硬盘的存储结构,包括 MBR 区、DBR 区、FAT 区、Dir 区和数据区五个部分。MBR 区(0 磁道 0 柱面 1 扇区)DBR 区(0 磁道 1 柱面 1 扇区)FAT1FAT 区 FAT2Dir 区数据区图
6、 1MBR(Main Boot Record)区位于整个硬盘的 0 磁道 0 柱面 1 扇区,共占 512 字节。它由 446 字节的主引导程序,64 字节的分区表记录和 2 字节的结束标记(“55AA” )组成。它的具体内容由分区程序产生,不属于任何一个操作系统,其主要作用是检查分区表是否正确并读出引导分区中的操作系统引导程序。它不能被操作系统直接访问,一般通过 Int 13 或扩展 Int 13 读取数据。在 DOS 或 Win9x 下运行 Debug 命令,然后依次输入下面的代码读取 MBR 内容:-a 汇编指令XXXX:0100 mov ax, 201 ah 为操作方式,2 为读,3
7、为写;al 读写的扇区数XXXX:0103 mov bx, 400 bx 为读写数据所在的内存地址XXXX:0106 mov cx, 1 高 10 位为柱面号,低 6 位为扇区号XXXX:0109 mov dx, 80 dh 为磁头号,dl 为驱动器号2XXXX:010C int 13 调磁盘读写中断XXXX:010E int 3 断点中断XXXX:010F-g=100 执行上述汇编-d 400 显示 MBR 内容DBR(DOS Boot Record)区位于 0 磁道 1 柱面 1 扇区,是操作系统可以直接访问的第一个扇区,它包含引导程序和 BPB(BIOS Parameter Block)
8、。它由格式化程序产生,不同的分区格式的 DBR 有所不同。FAT(File Allocation Table)区文件系统给文件分配空间的一张表,它的每一项都与磁盘的数据块一一对应。在 FAT16 中每项占用 2 字节,FAT32 中每项占用 4 字节。因此在知道分区大小的情况下不难算出 FAT 的长度。为了防止 FAT 意外损坏,系统特在 FAT 后面备份了一个一模一样的 FAT,当第一个 FAT 遭破坏后可以将第二个 FAT 恢复后继续使用。FAT16 分区的 FAT 长度计算公式为:FAT 扇区数 = 51242 - 2 FAT- - 数分区FAT32 分区的 FAT 长度计算公式为:FA
9、T 扇区数 = 51284 2 FAT- - 分区若结果不为整数时,则按进一法取整。下面为 FAT16 分区的计算例子:由 240975 个扇区组成的 FAT16 分区中,保留扇区数为 6,根目录扇区数为 32,每个簇 4 个扇区组成,求 FAT 至少应该包含多少个扇区?FAT = (240975 6 2 FAT 32) / 4 2 + 4 234.839,取整为 235,所以该分区的 FAT 表至少应该由 235 个扇区组成。Dir(Directory)区为文件目录表,它与 FAT 配合确定文件的具体位置。注意,在Dir 区仅保存文名、长度、起始位置、创建时间、修改日间和最后访问日期。数据区
10、即文件真正存放的位置,保存着文件的详细内容。4 4 数据恢复技术数据恢复技术34.14.1 删除恢复删除恢复4.1.14.1.1 FATFAT 分区文件恢复分区文件恢复在 FAT 分区中,当我们删除一个文件时仅仅修改了 FAT 区和 Dir 区的数据内容。在这个过程中,系统将 Dir 区中对应文件的第一个字节改为“E5H” ,然后再将对应的FAT 记录清零释放使用空间,将对应的区域标记为未使用,而修改数据区的内容。下面是对删除 Test.txt 文件前和删除文件后的对比分析图:图 2 删除 Test.txt 文件前的资源管理器图 3 删除 Test.txt 文件后的资源管理器4图 4 删除 T
11、est.txt 文件前的 FAT图 5 删除 Test.txt 文件后的 FAT图 6 删除 Test.txt 文件前的 Dir图 7 删除 Test.txt 文件后的 Dir图 8 删除 Test.txt 文件前的数据区5图 9 删除 Test.txt 文件前的数据区因此,当一个文件是连续存放的时,我们可以比较容易地恢复删除的文件。但有时我们可能会修改某些文件内容或者磁盘剩余空间不是很大的候时,都可能使文件零散存放,这时在恢复数据时就只能从多方面来判断分析数据才能正确地恢复数据。4.1.24.1.2 NTFSNTFS 分区文件恢复分区文件恢复NTFS 分区与 FAT 类似,只是在删除文件时不
12、是修改的 FAT 和 Dir,而是修改的 MFT和位图记录。删除文件的过程中将对应文件的 MFT 记录中偏移 16H 的 2 字节改为 0 即代表该 MFT 记录已经被删除,然后再将该 MFT 记录在 MFT 位图中所对应的位清零,最后将文件所对应的位图清零就完成了文件的删除操作。MFT 记录及数据流格式请参考 http:/www.reddragonfly.org/ntfs。MFT 记录的数据(80H)中详细的记录的文件各数据段的起始位置和长度,可以方便的恢复数据,而不用像 FAT 那样为文件不是连续存放担心恢复效果。4.24.2 格式化恢复格式化恢复4.2.14.2.1 FATFAT 分区分
13、区当我们重新格式化磁盘时仅仅重写了 DBR、FAT 和根目录区的数据,所以分区、格式化后仍然可以恢复磁盘中的数据。但由于分区被重新格式化后无法找到以前分区的根目录入口,并且无法准确知道以前分区的簇大小。因此格式化恢复的重难点在于确定簇大小和根目录的位置。用过 DOS 系统的人都知道用 Dir 显示子目录内容时会发现里面有“.”和“.”两个目录,其中“.”代表当前目录, “.”代表上一级目录。下面我们先看一下 FAT32 中的 FDT(File Directory Table)结构,如图 10 所示: 6未用存档子 目 录卷标系统隐含读写76543210图 10 FAT32 的 FDT 表项分析
14、在格式化恢复时,首先确定数据区的起始位置和簇大小,然后再搜索分区中的残留目录数据,最后恢复数据。确定数据区的起始位置的基本步骤是:逐一读取分区中的扇区内容,判断扇区中的数据是不是子目录数据,即判断偏移 0 字节、32 字节、33字节处是否为“.” (“2EH” )且是否为目录。若是,则确定扇区所对应的簇号,并计算簇大小,然后再根据“数据区起始扇区号 = 当前扇区号 (当前簇号 2) 每簇扇区数” ,公式减 2 是因为在 FAT 中前两个簇号为保留簇号,未使用;否则继续搜索下一个扇区。然后再继续搜索子目录数据,直到搜索完整个分区。这种方式有的优点是:实现简单,不需要掌握其体的文件格式;搜索速度较
15、快。缺点是:它只能找出每个目录中第一个簇内的 FDT,当一个目录中的文件较多时无法找到存储在后面的 FDT;当文件不是连续存放时恢复难度较大。4.2.24.2.2 NTFSNTFS 分区分区恢复 NTFS 分区中的数据,主要通过查找分区中残留的 MFT 记录来恢复数据。仔细阅读 NTFS 分区资料后会发现所有的文件描述信息都存储在文件的 MFT 记录中,其中包括文件名,大小,起始位置,长度,创建日期等信息;其次是每个 MFT 记录头都以“FILE”标记开头。因此恢复 NTFS 分区中的文件可以分为以下几步:在分区中查找以“FILE”开头的扇区;进一步分析扇区中的内容并判断是否为真正的 MFT
16、记录;文件名扩展名属 性未 用文件创建时间文件创建日期最近访问日期起始簇号的高 16 位最近修改时间最近修改日期起始簇号的低 16 位文件长度7按照 MFT 记录格式解释读出的数据内容;根据文件的大小和文件所占用的簇数计算出以前分区的簇大小;恢复数据。由于在 MFT 的数据流中详细地记录了文件的存储位置,所以在 NTFS 分区中采用格式化恢复方式恢复数据的成功比 FAT 分区高得多。4.34.3 RawRaw 恢复恢复在恢复数据时,可能会遇到目录结构或 MFT 已经完全破坏了的情况,而文件真正的数据内容并没有被覆盖,此时删除恢复和格式化恢复方式就显得无能为力了。Raw 恢复是一种文件搜索算法,
17、使用这种方式将读取分区中的所有扇区,从而搜索特定的文件头标记。基本步骤为:首先将从扇区中读出的数据与数据库中的数据比较,判断是否为已知的文件格式;再根据文件头和数据库中的数据确定文件大小;最后恢复连续区域内的特定大小的数据;采用这种恢复方式的优点是恢复成功率高。缺点有:查找文件速度慢,每读出一个扇区数都要与数据库中的数据进行比较;实现难度大,需要程序员查阅大量的数据资料并了解各种类型文件的文件头;由于文本文件是无格式文件,没有文件头,因此无法恢复纯文本文件;由于这种方式是从文件头开始处连续读取指定大小的数据到特定文件中,所以无法正确恢复零散存放的文件。5 5 结束语结束语本文虽然讨论了 Windows 系统下各种数据恢复技术,但数据恢复毕竟只是数据丢失后的一个补救措施。我们应该养成备份重要数据的良好习惯,特别是操作员应该时刻备份数据,谨防数据丢失。参考文献:参考文献:1 戴士剑,涂彦晖.数据恢复技术(第二版).北京电子工业出版社,20052 http:/ 3 http:/ http:/www.reddragonfly.org/ntfs