




已阅读5页,还剩42页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要随着社会的不断地发展,人类也即将步入信息化社会。电脑也就与我们生活越来越来越紧密。我们的银行卡、饭卡、公交车卡、电话卡等数据信息都以电子的信息存储着,所以这些数据的丢失对我们的生活都会造成很大的损失或影响,于是我们迫切需要对这些数据进行备份和数据恢复来防止这些重要数据的丢失。我们也可以看到很多公司都在不停的备份他们的重要数据,以便原始数据丢失后能通过备份的数据来恢复正常的工作。但是这些备份有时候也会失效,而直接恢复丢失的数据可能是此时唯一的方法,通常它也是恢复的丢失的数据最有效地方法。总之,开发一个数据恢复的软件来恢复我们丢失的数据是很有必要的,所以我们要研究数据是怎么样丢失的,这样就能知道怎么样恢复这些数据。现在数据恢复的软件不计其数,但是这些软件都不能保证100%恢复,另外很多数据恢复软件只是徒有虚名,在实际恢复过程中根本不管用。本文将讨论你数据恢复的基本原理,这样也就知道为什么一些数据不能恢复的原因了。也许大家已经用过EasyRecovery和FinalData这两款数据恢复软件,它们对误删除的文件或格式化后的文件的恢复确实很好。它们的出现也说明了对数据恢复的必要性。总之,本文就是要讨论怎么样恢复丢失的数据,从而更行之有效的恢复。本文的结构是先讨论跟数据恢复相关的一些概念,然后讨论一些数据恢复方法的基本原理,其中还包括一些算法。本文将主要讨论DBR、FAT、FDT,因为它们是数据恢复的关键。最后将测试该数据恢复软件,以及说明一下它的不足和后继应该要注意的地方。通过本文的学习,我们就会知道数据恢复的基本原理。这样我们就可以通过这个软件来恢复数据或再根据这个理论来自己开发一个更好的软件进行数据恢复。关键词: 数据恢复,DOS引导记录,文件分配表,文件目录表,数据AbstractAs the time goes by, the social where we live becomes better and better, which makes us step into a social full of information. As you see, we depend on computer more and more. Our bank cards, golden dragon card, bus card and telephone card and so on are all kept in electric, what if the data loses, which will lead a huge effort to life. So it is important to backup the data or recover the data so as to prevent us losing the data. As we can see, a great many companies backup the important data, so if the source data lost, they can recover it immediately through the backup data. But the backup data could be out of work, so recover the data directly is the only method, besides it is often the effective way to have the lost data back. Namely, it is important to develop software to recover the data we lost. So we have to study how the data lost and how to recover it.At present there is too much software which it is used to recover the data to count how much it is, but it is certain to us that it often cannot recover all the data, whats more, a great many of them are just faked, that is to say ,they cannot recover data at all or the data recovered is out of work. After reading the paper, you will know the reason how to recover the data and why some data will never be recovered again. Maybe you have used the software named EasyRecovery, and another good one is named FinaData. Both of them are really nice software to recover the data we delete by accident or formatted. If you have used then before, you can understand the paper easily. They are popular to us which indirectly tells us that it is necessary to recover data. In a word, we need to study how to recover the data so we can recover the data effectively and completely.The structure is that we talk about the key words which it is related to the actual process of the data recovery. Then we talk about the several methods to recover the data and their advantage and disadvantage. Besides the end of it will say whether it is possible to commit in developing the software. We will mainly talk about the DBR, FAT, FDT, as they are the key to recover the data. At the end of this chapter, we will test the software and say something which it will improve or should notice.After that, you will know the theory to recover the data, then you can recover the data by yourself or you can develop your own software to recover the data through it.Keywords: Data recovery, DBR, FAT, FDT, Data45目 录摘要IAbstractII1 绪论1.1研究目的和意义21.2国内外现状21.3相关技术介绍32 需求分析2.1 问题范围112.2 功能及性能需求122.3 应用环境及假设条件133 系统设计3.1 文件操作143.2关键技术153.3 模块划分244 系统实现4.1 实现流程274.2 关键模块285 测试运行5.1 测试环境及对象325.2 单元测试325.3 集成测试355.4 结论416 总结与展望42致 谢43参考文献44附录:英文缩写词451 绪论1.1研究目的和意义 我们人类即将步入信息社会,在信息社会中离不开数据。而数据的丢失是不可避免的,这样数据恢复软件应运而生1。数据恢复的基础是那些数据没有被覆盖。就是删除了数据后最好不要再往这个逻辑磁盘内写数据了,否则可能会覆盖刚才被删除的数据,造成以后不能恢复。估计原来我用EasyRecovery的时候就已经把要恢复的文件给覆盖了,造成我误以为EasyRecovery不好,它的功能不强大。以前也有同学抱怨过说不小心把程序给删除了,以致于不能按时提交作业。对于这种灾难现在只要我们正确使用数据恢复软件,就可以再次找回我们丢失的文件,为我们解决后顾之忧2。还有一些同学以前删除了某些文件,现在又觉得那些文件可能有用,这时也可以用数据恢复软件。根据数据删除的原理的分析以及数据恢复的原理分析,能够使我们对硬盘的逻辑结构更加清楚。从分析中我们也可以发现FAT文件系统和NTFS文件系统的结构特点以及它们的优缺点,为我们以后进行操作系统的分析打下良好的基础。数据恢复软件旨在恢复被误删除的文件,从而为我们解决文件丢失问题。而一些数据恢复公司或电脑维修公司把一些用户删除的个人隐私文件恢复后在网络上肆意传播的现象,我们表示对这个用户的同情,对这些数据恢复公司表示强烈抗议,他们不仅违反了道德观念,更触犯了个人隐私权,也错误的使用了数据恢复软件。数据恢复软件不应该成为“双刃剑”的3。它应该属于绿色软件的。所以在这里再次重申要正确的合法的使用数据恢复软件。由数据恢复出发也让我们知道怎么样让数据彻底删除,从而不给一些不法分子恢复数据的机会。当然做这个课题对我来说是一个挑战,也给了我这个学习机会,使我对数据恢复有了更深刻的认识。1.2国内外现状国内外的有很多数据恢复的软件,现列举主要的如下:(1)EasyRecovery,这个功能比较强大,相信很多人都使用过。它还有格式化后的恢复功能,而其速度比较快,准确率高,恢复率高等优点。我觉得EasyRecovery在各方面都比其它的数据恢复软件要好。(2)FinalData 它类似于Windows界面,另外操作简单方便(3)DataExplore数据恢复大师(4)Recuva这个数据恢复工具听说也很强大,但是我用迅雷一直下不下来。3086KB(5)Recover My Files 大小8130KB(6)AntlerTek Data Recovery 大小2061KB(7)易我数据恢复向导 它是国内首款自主研发的数据恢复软件 大小为3639KB(8)Undelete Plus 它是最小的绿色恢复软件还有很多类似的数据恢复软件。我用过其中的EasyRecovery和FinalData这两款很优秀的数据恢复软件,还有一个软件叫Smart Flash Recovery等4。另外过内有很多数据恢复公司,我不知道他们是用什么来恢复数据的,但大体应该是用这些数据数据恢复软件吧。虽然这些软件很多,但是介绍这些数据的恢复过程的书籍特别少,程序的原代码找了很久仍然找不到。1.3相关技术介绍1.3.1 U盘U盘的称呼最早来源于朗科公司生产的一种新型存储设备,名曰“优盘”, 使用USB接口进行连接5。而之后生产的类似技术的设备由于朗科已进行专利注册,而不能再称之为“优盘”,而改称谐音的“U盘”或形象的称之为“闪存”“闪盘”等。后来U盘这个称呼因其简单易记而广为人知,而直到现在这两者也已经通用,并对它们不再作区分。其最大的特点就是:小巧便于携带、存储容量大、价格便宜。是移动存储设备之一。一般的U盘容量有1G、2G、4G、8G、16G等,价格上以最常见的2G为例,32元左右就能买到。U盘容量有了很大程度的提高,如:4G、8G,16G的U盘。它携带方便,属移动存储设备,所以当然不是插在机箱里了,我们可以把它挂在胸前、吊在钥匙串上、甚至放进钱包里。存储原理计算机把二进制数字信号转为复合二进制数字信号(加入分配、核对、堆栈等指令)读写到USB芯片适配接口,通过芯片处理信号分配给EPROM2存储芯片的相应地址存储二进制数据,实现数据的存储。EPROM2数据存储器,其控制原理是电压控制栅晶体管的电压高低值,栅晶体管的结电容可长时间保存电压值,也就是为什么USB断电后能保存数据的原因。只能这么通俗简单的解释了。U盘、USB接口与即插即用通俗地讲,USB就是一种外围设备与计算机主机相连的接口类型之一。除了USB接口外,还有如并行总线等接口。然而USB接口却有个极大的优点使得它在这个领域非常的普及,那就是具有这种接口的设备可以在电脑上即插即用(即插即用有时也叫热插拨)。 电脑开机的时候要先开外围设备再开主机电源,而关机时候的顺序恰好相反。之所以要遵循这种开机顺序,那是因为在电脑启动之前必须先让所有的外围设备的电源都打开做好准备,然后等待主机对这些设备逐一进行检查并安装相应的软件。只有这样电脑才能正常运行,否则将可能出现外围设备不能用或者电脑不能识别外围设备的情况。而USB接口的出现却改变了这种状况,如果某个设备是USB接口,那么它就可以随时插入电脑主机不管电脑此时处于什么样的状态,而如果要取走这个设备,只需按照规范操作便可以将这个设备安全的从电脑上移走。这无疑给人们的学习和生活提供了极大的便利。因此从U盘这个名称上我们可以看出,这个存储盘是USB接口的,因为这个存储盘是USB接口,所以这个存储盘也就能够在电脑上即插即用,也就是说这个存储盘是可以移动的存储盘,它可以随身携带。因此,广义上的U盘实际上就是指的移动存储设备6。 然而,狭义上的U盘仅仅指闪盘。 闪盘是指采用闪存技术来存储数据信息的可移动存储盘。闪存技术是计算机领域刚刚兴起没有几年的存储技术。 它与传统的电磁存储技术相比有许多的优点:这种存储技术在存储信息的过程中没有机械运动,这使得它的运行非常的稳定,从而提高了它的抗震性能,使它成为所有存储设备里面最不怕震动的设备。由于它不存在类似软盘,硬盘,光盘等的高速旋转的盘片,所以它的体积往往可以做得很小。而现在的MP3播放器可以做得很小的原因就是因为采用了这种存储技术。 举个例子来讲,如果某个人说他有一个U盘,那它可能只是普通的移动硬盘,也可能是最近几年刚刚出现的微硬盘,还有可能是闪盘。当然了,正如前文所说,现在的U盘一般是指闪盘,因此,我们通常理解为他拥有的是一块闪盘。 1.3.2 扇区 磁盘上的每个磁道被等分为若干个弧段,这些弧段便是磁盘的扇区(Sector)。磁盘驱动器在向磁盘读取和写入数据时,要以扇区为单位。扇区是磁盘最小的物理存储单元。所以也可以根据总扇区数*每扇区字节数来得到磁盘容量,后面的程序中算磁盘容量都是根据这个来的。因为可以直接在DBR表中读取到存储介质的扇区总数和每扇区字节数,其中每扇区字节数基本上都是512字节。当然也可以根据CHS,即Cylinder(柱面)、Head(磁头)、Sector(扇区)三个参数来确定硬盘的容量,硬盘的容量=柱面数磁头数每磁道扇区数512字节7。1.3.3 簇扇区是磁盘最小的物理存储单元,但由于操作系统无法对数目众多的扇区进行寻址,所以操作系统就将相邻的扇区组合在一起,形成一个簇(Cluster),然后再对簇进行管理8。每个簇可以包括2、4、8、16、32或64个扇区。显然,簇是操作系统所使用的逻辑概念,而非磁盘的物理特性。但是一个簇有32KB大小的限制,一般一个簇的大小为4kB。为了更好地管理磁盘空间和更高效地从硬盘读取数据,操作系统规定一个簇中只能放置一个文件的内容,因此文件所占用的空间,只能是簇的整数倍;而如果文件实际大小小于一簇,它也要占一簇的空间。所以,一般情况下文件所占空间要略大于文件的实际大小,只有在少数情况下,即文件的实际大小恰好是簇的整数倍时,文件的实际大小才会与所占空间完全一致。文件大小大于一个簇时,文件的起始簇记作首簇,在FAT表中首簇的末尾会指向下一簇,如末尾的簇为(F)FF8(F)FFF时就表示为文件的末簇。其中0000表示可用簇,(F)FFF0(F)FFF6为保留簇,(F)FF7为坏簇。这种以簇为最小分配单位的机制,使硬盘对数据的管理变得相对容易,但也造成了磁盘空间的浪费,尤其是小文件数目较多的情况下,一个上千兆的大硬盘,其浪费的磁盘空间可达上百兆字节。表1-1 FAT文件系统簇记录项的含义FAT各系统记录项的取值含义(16进制)FAT12记录项的取值FAT16记录项的取值FAT32记录项的取值对应簇的含义000000000000000未分配的簇002FEF0002FFEF00000002FFFFFFEF已分配的簇FF0FF6FFF0FFF6FFFFFFF0FFFFFFF6系统保留FF7FFF7FFFFFFF7坏簇FF8FFFFFF8FFFFFFFFFFF8FFFFFFFF文件结束簇1.3.4 主引导扇区主引导扇区位于整个硬盘的0磁道0柱面1扇区,包括硬盘主引导记录MBR(Master Boot Record)和分区表DPT(Disk Partition Table)。其中主引导记录的作用就是检查分区表是否正确以及确定哪个分区为引导分区,并在程序结束时把该分区启动程序(也就是操作系统引导扇区)调入内存加以执行9。在总共512字节的主引导扇区里MBR占446个字节; DPT占64个字节,最多可以表示4个主分区;最后以55AAH作为结束标志,如果不是55AAH那么就会启动出错或不能读取该硬盘。其中MBR是由分区程序(例如DOS 的Fdisk.exe)产生的,它不依赖于任何操作系统,而且硬盘的引导程序不是一成不变的,我们可以任意编写,只要它能完成前述的任务。不同的操作系统可能这个扇区是不尽相同, 只要它能完成前述的任务即可,这也是能实现多系统启动的原因(正因为这个主引导记录容易编写,所以才出现了很多的引导区病毒)。用命令FDISK /MBR 可以修复MBR。FDISK命令只是重新改写了硬盘的主引导扇区(0面0道1扇区)中的内容 。具体说就是删除了硬盘分区表信息,而硬盘中的任何分区数据并没有改变。另外,MBR是由分区程序(如DOS的FDISK.EXE)产生的,它不依赖于任何操作系统,而且硬盘的引导程序不是一成不变的,我们可以任意编写,只要它能完成前述的任务。其主要功能与工作流程如下:启动PC 机时,系统首先对硬件设备进行测试,成功后进入自举程序INT 19H。然后读系统磁盘0 柱面,0 磁头,1 扇区的主引导记录MBR 内容到内存指定单元0:7C00 首址开始的区域,并执行MBR 程序段。硬盘的引导记录是不属于任何一个操作系统的,它先于所有的操作系统而被调入内存并发挥作用,然后才将控制权交给主分区内的操作系统,并让主分区信息表来管理硬盘。MBR 程序段的主要功能如下:(1)检查硬盘分区表是否完好(2) 在分区表中寻找可引导的活动分区(3) 将活动分区的第一逻辑扇区内容装入内存。在DOS/WINDOWS 分区中,此扇区内容称为DOS 引导记录。图1-1 查看硬盘主引导扇区内容 在实模式下,可以用图1-1 所示的代码查看DOS引导记录内容。1.3.5 DBRDBR(DOS BOOT RECORD,DOS引导记录),通常位于硬盘的0磁道1柱面1扇区(这是对于DOS来说的,对于那些以多重引导方式启动的系统则位于相应的主分区/扩展分区的第一个扇区),是操作系统可直接访问的第一个扇区,它包括一个被称为BPB(BIOS Parameter Block)的本分区参数记录表和一个引导程序,即DOS引导程序和BPB(BIOS参数块)。其中DOS引导程序从该扇区的偏移3EH开始,它主要完成DOS的系统文件(IO.SYS,MSDOS.SYS)的定位与装载,而BPB用来描述本DOS分区的磁盘信息。 它包含逻辑格式化时使用的参数,可供DOS计算磁盘上的文件分配表,目录区和数据区的起始地址,BPB之后的三个字提供了物理格式化(低格)时采用的一些参数。引导程序或设备驱动程序根据这些信息将磁盘的逻辑地址(DOS扇区号)转换成物理地址(绝对扇区号)。图1-2 BPB参数表信息图1-2中的内容为DBR扇区的BPB参数表。DBR扇区的具体内容以及含义见后面的。如偏移0BH开始的两字节记录了每扇区字节数,偏移0DH记录了每簇扇区数,偏移0EH开始的两字节记录了保留扇区数。通常保留扇区数加1即得到FAT的首扇区。DBR的主要功能DOS/windows 系统在引导的时候,DBR是第一个(除硬盘的MBR之外)需装载的程序段。DBR 装入内存后,即开始执行该引导程序段,其主要任务是装载DOS 的系统隐藏文件IO.SYS。DBR 程序段所完成的主要任务如下:(1) 重新设置引导驱动器(2) 将根目录的第一个扇区(即根目录FDT 中的前16个文件项)装载到内存;(3) 检查FDT 中的前两个文件是否DOS 的两个系统隐藏文件。(4) 将其中一个系统隐藏文件IO.SYS 装载到内存。(5) 将控制权交给该系统隐藏文件IO.SYS。1.3.6 FATFAT(File Allocation Table)即文件分配表,是DOS/Win9x系统的文件寻址系统,为了数据安全起见,FAT一般做两个,第二FAT为第一FAT的备份, FAT区紧接在DBR之后,其大小由本分区大小及文件分配单元的大小决定9。关于FAT的格式一直有许多的选择,Microsoft 的DOS及Windows采用我们所熟悉的FAT12、FAT16、FAT32和NTFS格式,但除此以外并非没有其它格式的FAT,像Windows NT、OS/2、UNIX/Linux、Novell等都有自己的文件管理方式。如linux的Ext2、ext3、swap文件系统,OS/2的HPFS等。FAT2与FAT1是完全同步的。即当系统正确的合法的读写文件时使FAT1改变时,FAT2也同时变化。另外系统在定位文件时永远也不会读取FAT2表,它只会根据FAT1表来定位文件。同一个文件的数据并不一定完整地存放在磁盘的一个连续的区域内,往往会分成若干段,想一条链子一样存放,这种存储方式称为文件的链式存储。为实现文件的链式存储,硬盘上必须准确的记录那些簇已经被文件占用,还必须为每个已经占用的簇指明存储后继内容的下一个簇的簇号,对于文件的最后一个簇,标记内容为FFF8HFFFFH,这些都是由FAT表来保存。表中有很多项,每项记录一个簇的信息。文件系统的全部目的是跟踪文件, 具体描述即需要说明整个磁盘分区中每个存储单元(簇)的使用情况、文件数据的簇存储情况(连续或碎片)以及树型目录结构的描述。FAT 实际上是一个卷中所有簇使用情况的映射表, 每个文件/目录都同表中的若干项对应联系, 并在目录中进行索引。FAT32 是 FAT 的扩展, 支持 32 位寻址, 保留了簇映射和目录索引的基本结构。文件分配表(FAT)有表标识和簇映射(旧称表目)的集合组成。表标识符包括磁盘介质描述符(1字节)和填充字节,总计占两个簇的簇映射区域(这大概也就是 FAT文件系统簇号由2开始的原因 )。填充字节一般为FAT32 的填充字节中还包含脏位,即系统启动时执行磁盘检查chkdsk。最初格式化的FAT中,所有项都表明为“未占用”,项为0来表示“未占用”。如果硬盘有局部损坏,格式化程序会检测出损坏的簇,则在相应的项中标为“坏簇”,以后存文件时就不会再用这个坏簇。“坏簇”用(F)FFF7h作为标记,而只要一个簇为坏簇,整个磁道就被标记为“坏道”则被标记为B。FAT的项数与硬盘上的总簇数相当,每一项占用的字节数也与总簇数相适应,因为其中需要存放簇号。图1-3为FAT表的部分内容。图1-3 FAT1表中的内容 FAT具有紧凑和高速的优点。通过对磁盘的数字化描述,FAT 记录了每个文件的位置和区域。自然这些优点的得到是有代价的,FAT的代价是寻址空间的局限(4GB)和簇内空间的浪费,FAT32的FAT表则占据了过多的磁盘空间,如果操作系统操作一个相对大的分区依然试图将整个FAT 表放进内存,其占据的空间和时间资源将相当可观,同时会导致系统的脆弱,特别是磁盘碎片很多时, 甚至可能造成系统的崩溃,至少将影响正常系统的健壮。1.3.7 FDTFDT文件目录表(File Directory Table):即根目录区,又称为ROOT区,只有FAT还不能定位文件在磁盘中的位置,FAT还必须和FDT配合才能准确定位文件的位置。FDT记录着每个文件(目录)的起始单元(这是最重要的)、文件的属性等。定位文件位置时,操作系统根据FDT中的起始单元,结合FAT表就可以知道文件在磁盘的具体位置及大小了。在FDT区之后,才是真正意义上的数据存储区,即 DATA区。 图1-4为FDT表中根目录的文件信息。关于其具体的内容以及其含义见后面的具体数据恢复软件的设计部分。这里先提一下,一个文件或目录的文件名的绝对路径的长度(长度包括文件的扩展名以及文件名中的空格)不能超过255字节,而一个汉字算两个字符。至于为什么不能超过255,只知道是windows系统这样规定的,具体在那里规定的我也不知道。这个对我们分析问题有一定的帮助,如我们在解压文件时就经常遇到解压后的文件名的绝对路径长度超过255字节,从而使解压出错而中断。另外在FAT32中用4个字节即32位来表示文件的大小,所以FAT32中单个文件的大小不能超过232-1个字节,即不能超过4G。同理FAT16中单个文件的大小不能超过216-1个字节。但是在NTFS文件系统格式中已经打破了4G大小的限制。在FAT16格式中还规定了根目录下最大文件的个数,但是从FAT32开始就可以创建无限多个文件。在操作系统原理10中也讲了目录采用分级结构,即有一级目录和二级目录等。它们采用树结构,这个也是继承了DOS的目录结构。图1-4 FDT表中的内容1.3.8 数据区数据区(Data Area)紧跟在FDT的下一个扇区,直到逻辑盘的结束地址。它存储着所有的数据,而且即使文件目录被破坏仍旧可能从磁盘里把信息读出,这也就是硬盘数据的理论依据。里面存放的就是实际的十六进制数据。通常高位在后,低位在前。DATA虽然占据了硬盘的绝大部分空间,但没有了前面的各部分,它对于我们来说,也只能是一些枯燥的二进制代码,没有任何意义。在这里有一点要说明的是,我们通常所说的格式化程序(指高级格式化,例如DOS下的Format程序),并没有把DATA区的数据清除,只是重写了FAT表而已,至于分区硬盘,也只是修改了MBR和OBR,绝大部分的DATA区的数据并没有被改变,这也是许多硬盘数据能够得以修复的原因。2 需求分析2.1 问题范围“U盘数据恢复软件的设计与实现”主要是要完成数据被删除后用自己设计的软件来恢复该数据,其中数据指存放在文件中的数据,即要完成恢复被删除的文件的工作。总体示意图如图2-1图2-1 总体数据恢复流程 我们都有过文件被删除后又想恢复该文件的经历。可是我们经常苦于没有软件来恢复被删除的文件。所以有一个文件恢复的软件迫在眉睫,也是我们要学习的当务之急。另外,国内外有很多专门做数据恢复的公司。这个也说明数据恢复有比较大的需求。这也给我们带来了很多机遇,当然我们也会遇到各种挑战。毕竟社会在不断的发展,技术也在不断的变新,所以我的程序也能与时俱进,能适应社会的发展,能真正满足客户的要求。我们都知道我们删除文件后我们还可以通过还原回收站来还原被删除的文件。可是清空回收站后我们就没有什么简单的方法来恢复被删除的文件了,另外可能有的文件过大就不会放在回收站里面,或用户直接用Shift+Delete删除文件也不会放在回收站里面。所以此时用还原回收站已经不能满足要求了。另外最重要的是在U盘中删除文件后这些文件并不放在回收站里面,还原回收站是一点用也没有。后面系统设计阶段将讲解回收站的一些信息。从回收站中并不能提取到对数据恢复有用的信息。这时就必须要分析文件在磁盘中的结构。从而找到文件在磁盘中对应的数据。所以我们的目标是要自己动手设计开发一个实现数据恢复的软件。主要问题就是根据上图所示的项目来展开。如怎么样更好的列举被删除的文件,这个要求能够尽量多的提供被删除的信息,从而便于用户定位选择。重点在恢复的过程。毕竟选择文件,然后填写文件名等这都是为了定位要恢复那个文件,它们作为文件恢复的输入。而把实际恢复出的数据写到文件作为输出,还有一个输出就是文件的恢复率,即反馈信息。2.2 功能及性能需求对于不同的文件系统找文件的数据的方法略有不同。其基本原理都是根据DBR表找到目录区,从目录区中找到目录信息。根据目录中提供的文件目录项中所表述的文件首簇找到文件的数据,利用FAT表找到下一簇的数据。所以我们希望数据恢复软件不仅能够恢复常用的FAT32文件系统的被删除的文件,也可以恢复差不多被淘汰的FAT16文件系统的被删除的文件,当然更希望能够支持新的NTFS文件系统的被删除的文件的恢复。这些文件系统的格式不同,但是基本原理系统。所以在编码时我们要尽量考虑扩展性。时刻想到程序要支持FAT16、FAT32和NTFS文件系统格式。另外新的文件系统也可能出现,或者还有很多其它的文件系统格式,如HPFS、Ext2、Ext3等。所以要尽量考虑程序的扩展性和健壮性。在文件恢复前,我们希望程序能够列举出所有以前被删除的文件,这样才便于用户选择那些文件要被恢复。列举出的文件中我们当然希望有关于文件或文件夹的一些比较详细的信息,如长度、创建日期、最后修改日期、最后访问时间、文件能够被恢复等信息。这样便于用户确认是要恢复那个文件以及决定是否恢复该文件。另外需要考虑程序的移植性。程序的正常运行跟硬件环境息息相关,当然也跟操作系统有关。不同的硬件,程序的运行结果可能不同。另外程序移植到另一个操作系统可能就不能运行了,所以在编码过程中我们应该考虑到程序的移植性。对于数据恢复,恐怕用户最关心的还是文件恢复率。我们当然希望数据恢复率是100%,可是由于文件的删除造成FDT表的变化,从而可能使一些数据定位不到,即找不到文件中的一些数据到底在那里,这样也就不能100%恢复。另外可能会被其它的文件覆盖,这个数据恢复更是难上加难,这个时候我们就只能希望尽量多的恢复被删除的数据了。另外在恢复后我们希望有反馈信息,即文件的恢复程度11。恐怕用户还关心的另一个问题是时间。我们都知道I/0操作是很花时间的,所以我们在实际数据恢复过程中要保证数据恢复的正确性和准确性外,还要考虑时间的问题。如果很花时间,用户可以考虑从其它地方再弄一份,如从网上下载、备份恢复等。另外如果花很多时间还不能恢复数据或恢复出不能用的数据,那么用户就会考虑是否用这个软件了。所以时间效率是我们考虑的重点。2.3 应用环境及假设条件 我们假设在Windows环境下。由于不同的操作系统有不同的文件系统格式,所以只针对Windows系统就可以使程序更简单,而选择Windows的主要原因还是Windows用户比较多,具有普遍性。另外考虑到程序的移植性等方面,所以综合决定程序只适用于Windows平台。在windows环境下,操作系统的磁盘有不同的文件系统格式。比较早的是FAT12,它的寻址空间最大为212*32KB=128M。在我的周围同学中还没有看到有人用FAT12文件系统的存储设备。这个主要是我们进入大学时就已经流行FAT16文件系统了。那时FAT12文件系统就基本上已经被淘汰了,现在有的估计也不能使用了。所以不考虑FAT12文件系统。而FAT16文件系统的存储设备还是有一些的,如我自己的手机的1G的存储卡。同学使用的移动存储设备中FAT16文件系统大概只占1/5。而主要是使用FAT32文件系统,比较FAT16文件系统支持的最大容量为216*32KB=2G,其中表示最多有216个簇,而每簇的容量大小一般都不能达到32KB,所以FAT16文件系统的容量一般没有2G的。这样就要求使用FAT32文件系统了。FAT32文件系统理论可以支持232*32KB=128T。按每簇4KB的容量算也可以支持16TB。这个显然能满足我们的要求。但是FAT32的容量过大时就会产生很多碎片,从而进行文件读写比较慢,于是NTFS文件系统出现了。专家提示,磁盘容量大于32G时就不宜使用FAT32文件系统。NTFS以它的容错性和安全性以及高效性著称,可是这个也使得NTFS文件系统比较复杂。所以我们假设这个软件运行在FAT16或FAT32文件系统下,对于NTFS文件系统可以查看扇区,但不提供数据恢复12。在测试过程中以我的4G的金士顿FAT32文件系统的U盘为主要测试对象。3 系统设计3.1 文件操作3.1.1文件的创建在逻辑磁盘内建立一个文件后,就会在目录下中建立一个目录项。关于首簇,即空间的分配参照操作系统的空间分配原则10。这个首簇会在FAT表中登记,然后这个簇的下一簇等都会在FAT表中登记。目录项里面的创建时间、最后访问时间都为当前时间,创建日期、最后访问日期以及最后修改日期为当前日期。粘贴文件到这里时,保持文件的最后修改时间不变,即它与原文件的最后修改时间相同,而创建日期和最后访问日期都为当前日期。3.1.2 文件的删除根目录下文件的删除:把文件名的第一个字节改成E5。对于长文件名每个目录项的第一个字节都改成E5。另外FAT表中偏移为该目录项中的首簇号的标记为00 00 00 00H,即表示该文件所占的空间可以再次被分配给其他文件使用。文件对应的DATA区的数据没有任何变化,所以这就是数据恢复的理论基础。根目录下文件夹的删除:把文件夹的第一个字节改成E5H,对于目录名为长文件名的每个目录项的第一个字节都改成E5H。另外FAT表标记为00 00 00 00H,即表示该文件所占的空间可以再次被分配给其他文件使用。而子目录和子文件的所有目录项都没有变化,对应的DATA区域的数据也没有变化。所以文件夹删除了还可以提取文件的信息。 需要指出的是删除文件或文件夹后长文件名的校验码并不改变,即校验码还是根据原来的没有删除文件时计算得到的11。由于8.3短文件名中没有校验码,所以不用提及校验码13。3.1.3 文件重命名重命名实质是重建一个新的目录项,然后删除原文件。新的目录项里面的创建日期为新目录项的创建时的当前日期,时间也是当前时间,访问日期当然也是当前日期,但是新的目录项里面的修改时间与原来的目录的修改时间相同。新的目录项的文件的首簇号不变,文件长度不变。所以根据首簇号通过目录下中找到被重命名的文件也可以找到对应后的文件。在同一逻辑磁盘内移动文件,与文件的重命名类似。也会把原来的文件的首字节改成E5H,再新创建一个目录项。目录项里面的最后访问日期,文件的首簇号、文件长度等都不变。而移动到其它的逻辑磁盘内就相当于复制粘贴文件了,所以它会在目标磁盘内新建目录项。3.1.4文件的修改修改文件就会造成文件的长度的变化,也就可能会改变文件所在的簇号,以致改变那些数据所在的扇区。对于修改一些数据,可能只是修改扇区里面的数据内容而已,即并没有改变文件所在的簇情况,就是说并没有改变FAT表的内容。可能有时会删除一些数据,这些可能会使是该文件所占地簇减少,这样该文件在FAT表中的表示就会发生变化,即所占的簇数减少。还有就是会在文件尾部追加数据,这个当然会增加文件的长度,操作系统也就要为这些新加的数据分配扇区,所以这个会改变FAT表,至于新扇区的分配策略,即簇的分配策略就是操作系统的事情了,如首次适应算法、最佳适应算法、最坏适应算法等,在这里就不讨论这些文件的分配策略。前面也有讲到。对于文件的修改,它会修改FDT目录下的文件的最后访问日期、最后修改日期、最后访问时间以及文件长度等。3.1.5 高级格式化 高级格式化会清空FAT表,即FAT表的簇都标记为空闲可用,并且把FDT表的根目录项都清除掉,但是子目录还在。当然文件所在的数据区中的数据没有变化。3.2关键技术 下面是实现数据恢复的一些关键技术。对于硬盘的0磁道0柱面1扇区的内容,即MBR的大概内容如表3-1。表3-1 MBR内容示意图 001bdh 主引导记录MBR (446字节)01beh01cdh 分区信息表1 (16字节),即DPT表(Disk Partition Table)01ceh01ddh 分区信息表2 (16字节),即DPT表(Disk Partition Table)01deh01edh 分区信息表3 (16字节),即DPT表(Disk Partition Table)01eeh01fdh 分区信息表4 (16字节),即DPT表(Disk Partition Table) 01feh (内容为55)01ffh 内容为AA但是MBR所在的扇区无法直接读取14。而且在扩展分区和U盘中对数据的恢复没有提供什么信息,所以在这里就不继续讨论了。下面介绍DBR所在的扇区,即0磁道1柱面1扇区的内容以及含义12(1个扇区的大小一般都为512字节)。这个扇区里面有很多硬盘的参数信息,对数据恢复非常关键。FAT文件系统的1扇区的各字节的含义如表3-2。表3-2 FAT文件系统的DBR各字节含义偏移量字节数含义003跳转到引导代码038DOS版本号0B2BPB参数信息每扇区字节数,通常都为0200,即每扇区512字节。0D1每簇扇区数(2的整数倍)0E2保留扇区数(用于引导DOS等) ,通过这个找到FDT101FAT个数(通常为2);112根目录项数(用于早期版本),FAT32固定为0132扇区总数(用于早期版本),FAT32固定为0151磁介质描述符,硬盘固定为F8H162每FAT表所占扇区数(用于早期版),FAT32固定为0 182每磁道扇区数1A2逻辑磁头数1C4当前DOS分区前面的隐含扇区数(系统隐含扇区)204扇区总数,这个很重要。这个能说明磁盘容量244每FAT表所占扇区数282标记; FAT32中保留未用2A2版本; FAT32中保留未用2C4引导目录第一簇,即根目录的起始簇,通常为02H。由这个找根目录302FS信息扇区,BOOT本身占用的扇区数; 通常为1322备份引导扇区的位置。可以通过备份引导扇区恢复DBR3412保留,一般为00H 401BIOS设备(硬盘为80H,U盘为00)411未使用 421扩展引导标记29H434序列号 4711卷标 528文件系统 FAT32格式为FAT32,FAT16格式为FAT165a420DOS引导程序1fe2结束标志55AAh其中标识的“用于早期版本”就表示适用于FAT12和FAT16,默认的都是在FAT32文件系统下的偏移及含义。而表3-3为NTFS文件系统的1扇区的各字节的含义。表3-3 NTFS文件系统的DBR各字节含义偏移量字节数含义003跳转到引导代码038NTFS0B2BPB参数信息每扇区字节数,通常为0200H,即每扇区512字节0D1每簇扇区数(2的整数倍)0E2NTFS固定为0101NTFS固定为0112根目录项数(用于早期版本),NTFS固定为0132扇区总数(用于fat12,fat16),NTFS固定为0151磁介质描述符,硬盘固定为F8H162NTFS固定为0182每磁道扇区数1A2逻辑磁头数1C4当前DOS分区前面的隐含扇区数(系统隐含扇区)204NTFS未使用,为0244NTFS未使用,为0288扇区总数308$MFT起始逻辑簇号388$MFTMirror的起始逻辑簇号404每MFT记录簇数444每索引簇数(4字节) 488卷标(8字节)504校验和 (4字节)5a420DOS引导程序1fe2结束标志55AAh其中$MFTMirror为$MFT的备份,其原理与FAT32文件系统中FAT2是FAT1的备份一样13。图3-1、图3-2、图3-3分别显示了FAT16、FAT32和NTFS文件系统的1扇区的部分内容。 图3-1 FAT16文件系统的1扇区的内容图3-2 FAT32文件系统的1扇区的内容图3-3 NTFS文件系统的1扇区的内容逻辑磁盘的1扇区也是windows系统可以直接读写的第一个开始扇区。对于FAT格式的文件系统的FAT的开始位置由DBR的0EH开始的两个字节决定。如我的U盘的0EH和0FH字节的内容分别为26H、00H。紧跟在保留扇区后面的就是FAT表。其中FAT表分为FAT1表和FAT2表,FAT2表为FAT1表的备份。所以我的U盘的FAT表就从第39扇区开始。读取我的U盘的FAT表内容如图3-4所示。00000002H簇的下一簇为0000036fH0000003H簇的下一簇为0fffffffH,表示00000003H簇是文件的尾簇图3-4 FAT表的内容FAT表的开始前8个字节固定为f8 ff ff 0f ff ff ff ff。FAT表用4个字节来记录文件的下一扇区
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 航空材料检测与质量控制补充协议
- 工业废气处理项目验收质量规范完善及补充协议
- 传染性单核细胞增多症指南
- 整体护理查房
- 职场素质培训体系构建
- 公共关系危机管理教学
- 醇在医学领域的应用研究
- 新课改瘦专用2025版高考政治一轮复习第三单元微专题选择题题型专攻四-引文类讲义新人教版必修4
- 过度肥胖患者护理
- 产前护理知识普及与实践
- 【MOOC】信息社会与人工智能-山东大学 中国大学慕课MOOC答案
- 妊娠合并急性阑尾炎护理
- 三位数加减三位数竖式计算题200道及答案
- 215kWh工商业液冷储能电池一体柜用户手册
- 教育学研究答辩模板
- 消化道穿孔并发症护理查房课件
- 《民航危险品运输》学习通超星期末考试答案章节答案2024年
- 中小学(幼儿园)公共安全教育教师说课比赛评分细则
- TSG 07-2019《特种设备生产和充装单位许可规则》
- 新人教版数学四年级下册全册课本练习题可编辑可打印
- 山东省义务教育必修地方课程小学四年级上册《环境教育》教案-全册
评论
0/150
提交评论