毕业设计.docx

上传人:b****5 文档编号:6275527 上传时间:2023-01-05 格式:DOCX 页数:44 大小:541.52KB
下载 相关 举报
毕业设计.docx_第1页
第1页 / 共44页
毕业设计.docx_第2页
第2页 / 共44页
毕业设计.docx_第3页
第3页 / 共44页
毕业设计.docx_第4页
第4页 / 共44页
毕业设计.docx_第5页
第5页 / 共44页
点击查看更多>>
下载资源
资源描述

毕业设计.docx

《毕业设计.docx》由会员分享,可在线阅读,更多相关《毕业设计.docx(44页珍藏版)》请在冰豆网上搜索。

毕业设计.docx

毕业设计

JIANGSUUNIVERSIY

本科毕业论文

 

硬盘FAT32格式误格式化数据恢复技术

FAT32formattoformattheharddiskdatarecoverytechnologymisuse

专业:

计算机科学与技术

班级:

05计本3

姓名:

蒋松

指导教师姓名:

孙维连

指导教师职称:

教授

 

2009年3月5日

硬盘FAT32格式误格式化数据恢复技术

专业班级:

计算机科学与技术(3)班学生姓名:

蒋松

指导教师:

孙维连职称:

教授

摘要

计算机软件和硬件的更新速度之快,令人目不暇接。

当今,计算机用户大都面临两种困惑。

其一,硬件的价格总是在你买了以后再降;速度、硬盘容量、内存等配置永远不够的,等到够了的时候,又没有时间学习怎么用。

而硬件故障总是在维修合同到期之后才会发生。

因此,硬件的升级换代永无止境。

其二,软件系统越来越多,而应用问题越来越多,用户所需要的增强功能和错误修正总是出现在可望而不可及的下一版本中。

由于计算机的应用越来越广泛,硬盘的容量也越来越大,用户的硬盘数据(积累很久的数据)显得很重要,所以,保护起我们这些重要的硬盘,对计算机的维护显得日益重要。

计算机在正常的工作时,是按照“逻辑盘”对硬盘进行数据存取的,这就是我们通常说的C盘D盘….。

这种数据存取的前提条件是硬盘要有正常的主引导记录、分区表、分区引导记录、文件分配表、文件目录表。

如果,其中有一项不正常,计算机就不能正常工作。

然而,磁盘在使用中出现的不正常情况是经常发生的,如遭到病毒攻击、使用者的误操作、认为的破坏等等。

这时就要找出能够挽救硬盘,恢复数据,将损失尽可能减少。

这成为了我们的一个重要课题,也是本程序开发的目的和动力。

本次程序的功能主要包括有:

恢复MBR、DPT、DBR、BPB和根目录区的数据等等。

通过Debug分析硬盘相关信息,利用TurbroC编辑工具实现程序。

这个程序能恢复整盘是一个文件而且整个分配表全连续的FAT32硬盘数据。

关键字:

硬盘;故障;磁盘维护;Turboc;FAT32;

FAT32formattoformattheharddiskdatarecoverytechnologymisuse

Abstract

Computersoftwareandhardwareupdatestothespeed,dizzying.Today,computerusersarefacedwithtwokindsofconfusion.First,thepriceofhardwareisalwaysinthelowerandlowerafteryoubuy;speed,harddrivecapacity,memoryconfiguration,etc.willneverbeenough,andwaituntilenoughtime,andtherewasnotimetolearnhowtousethem.Andmaintenanceofhardwarefailurealwaysoccuronlyafterthecontractexpires.Therefore,upgradinghardwareendless.Second,moreandmoresoftwaresystems,andtheapplicationofmoreandmoreusersneedenhancementsandbugfixesarealwaysappearinthenextversionelusive.Asaresultoftheapplicationofthecomputermoreandmorewidely,increasingthecapacityoftheharddisk,andtheuser'sharddrivedata(thedataaccumulationtime)isveryimportanttoprotecttheseimportantfromourharddisks,computermaintenancebecomeincreasinglyimportant.Computerinthenormalworkinghours,inaccordancewiththe"logical"dataontheharddiskaccess,thisiswhatweusuallysaythattheCdiskDplate.....Thisdataaccessisaprerequisitetohaveanormalharddiskmasterbootrecord,partitiontable,partitionbootrecord,fileallocationtable,documenttableofcontents.Ifthereisanunusualone,thecomputerwillnotworkcorrectly.However,thediskappearsinusedonotnormallytakeplacefrequently,suchasbyvirusattacks,user'smisoperation,andsothatthedamage.Atthistimeweshouldfindouttheharddrivetosaveandrestoredata,tominimizelosses.Thishasbecomeanimportanttopicwearealsothepurposeoftheprogramdevelopmentandmotivation.

Themainfunctionoftheprocedureinclude:

therestorationofMBR,DPT,DBR,BPBandtherootzoneandsoforth.Debugharddrivethroughtheanalysisofrelevantinformation,useeditingtoolstoachieveTurbroCprocedures.Thisproceduretorestoretheentirediskisafileallocationtableandthewhole-widedatafortheFAT32harddrive.

Keywords:

harddrive;breakdown;diskmaintenance;Turboc;FAT32;

引言

在今天这样的信息时代,信息作为一种无形的价值,在人们心目中的地位也越来越高。

谁最先获得信息,谁就可能是胜利者。

而无形的信息,往往是保存在有形的磁盘中,而在当今纷繁复杂的世界中,信息的安全性总是被严重地威胁着,随时都有被毁灭的可能性。

所以,人们越来越认识到数据安全的重要性。

虽然,一个磁盘价钱不菲,但作为至关重要的信息,却比磁盘珍贵得多。

难怪有的企业把磁盘拿去维修时,费用达几千元,几万元,甚至上十万元。

这正是因为数据的重要性,对一个专门靠收集数据来分析的部门来说,如果有一天收集了几年的数据不慎受到破坏,那么,失去了双何止这是几千元,几万元呢?

所以,如果把磁盘的成本同存储的重要数据相比,很多情况下磁盘成本是可以忽略不计的。

从而就有这样一句话,那就是“数据无价”。

因此,随着各种情况所造成重要数据丢失使得数据安全的重要性日益提到人们的日程。

通过对硬盘结构及其工作原理的研究,我们发现硬盘的数据丢失很多时候并不是完全的数据毁灭,而只是对用户来说是不可视的硬盘主引导记录,分区表,引导扇区等的破坏,只要这些地方修复了,很多时候硬盘也就修复了,数据也就得到了拯救。

有鉴于此,本论文从硬盘结构及其工作原理着手,对FAT32格式的硬盘的误格式化数据恢复。

通过程序目前只能简单的对整个盘是一个文件,整个分配表全连续的进行恢复。

 

第一章硬盘的物理结构

图1.1硬盘的物理结构

硬盘存储数据是根据电、磁转换原理实现的。

硬盘由一个或几个表面镀有磁性物质的金属或玻璃等物质盘片以及盘片两面所安装的磁头和相应的控制电路组成(图1.1),其中盘片和磁头密封在无尘的金属壳中。

硬盘工作时,盘片以设计转速高速旋转,设置在盘片表面的磁头则在电路控制下径向移动到指定位置然后将数据存储或读取出来。

当系统向硬盘写入数据时,磁头中“写数据”电流产生磁场使盘片表面磁性物质状态发生改变,并在写电流磁场消失后仍能保持,这样数据就存储下来了;当系统从硬盘中读数据时,磁头经过盘片指定区域,盘片表面磁场使磁头产生感应电流或线圈阻抗产生变化,经相关电路处理后还原成数据。

因此只要能将盘片表面处理得更平滑、磁头设计得更精密以及尽量提高盘片旋转速度,就能造出容量更大、读写数据速度更快的硬盘。

这是因为盘片表面处理越平、转速越快就能越使磁头离盘片表面越近,提高读、写灵敏度和速度;磁头设计越小越精密就能使磁头在盘片上占用空间越小,使磁头在一张盘片上建立更多的磁道以存储更多的数据。

 

第二章硬盘的逻辑结构

硬盘上的数据是如何组织与管理的呢?

硬盘首先在逻辑上被划分为磁道、柱面以及扇区,其结构关系如图2.1所示。

图2.1磁头、柱面和扇区

硬盘由很多盘片(platter)组成,每个盘片的每个面都有一个读写磁头。

如果有N个盘片。

就有2N个面,对应2N个磁头(Heads),从0、1、2开始编号。

每个盘片被划分成若干个同心圆磁道(逻辑上的,是不可见的。

)每个盘片的划分规则通常是一样的。

这样每个盘片的半径均为固定值R的同心圆再逻辑上形成了一个以电机主轴为轴的柱面(Cylinders),从外至里编号为0、1、2……每个盘片上的每个磁道又被划分为几十个扇区(Sector),通常的容量是512byte,并按照一定规则编号为1、2、3……形成Cylinders×Heads×Sector个扇区。

这三个参数即是硬盘的物理参数。

第三章硬盘引导原理

3.1MBR(masterbootrecord)扇区

计算机在按下power键以后,开始执行主板bios程序。

进行完一系列检测和配置以后。

开始按bios中设定的系统引导顺序引导系统。

假定现在是硬盘。

Bios执行完自己的程序后如何把执行权交给硬盘呢。

交给硬盘后又执行存储在哪里的程序呢。

其实,称为mbr的一段代码起着举足轻重的作用。

MBR(masterbootrecord),即主引导记录,有时也称主引导扇区。

位于整个硬盘的0柱面0磁头1扇区(可以看作是硬盘的第一个扇区),bios在执行自己固有的程序以后就会jump到mbr中的第一条指令。

将系统的控制权交由mbr来执行。

在总共512byte的主引导记录中,MBR的引导程序占了其中的前446个字节(偏移0H~偏移1BDH),随后的64个字节(偏移1BEH~偏移1FDH)为DPT(DiskPartitionTable,硬盘分区表),最后的两个字节“55AA”(偏移1FEH~偏移1FFH)是分区有效结束标志。

MBR不随操作系统的不同而不同,意即不同的操作系统可能会存在相同的MBR,即使不同,MBR也不会夹带操作系统的性质。

具有公共引导的特性。

我们来分析一段mbr。

下面是用winhex查看的一块希捷120GB硬盘的mbr。

你的硬盘的MBR引导代码可能并非这样。

不过即使不同,所执行的功能大体是一样的。

我们看DPT部分。

操作系统为了便于用户对磁盘的管理。

加入了磁盘分区的概念。

即将一块磁盘逻辑划分为几块。

磁盘分区数目的多少只受限于C~Z的英文字母的数目,在上图DPT共64个字节中如何表示多个分区的属性呢?

microsoft通过链接的方法解决了这个问题。

在DPT共64个字节中,以16个字节为分区表项单位描述一个分区的属性。

也就是说,第一个分区表项描述一个分区的属性,一般为基本分区。

第二个分区表项描述除基本分区外的其余空间,一般而言,就是我们所说的扩展分区。

这部分的大体说明见表1。

表1 图2分区表第一字段

字节位移

字段长度

字段名和定义

0x01BE

BYTE

0x80

  引导指示符(BootIndicator)  指明该分区是否是活动分区。

0x01BF

BYTE

0x01

开始磁头(StartingHead)

0x01C0

6位

0x01

开始扇区(StartingSector)只用了0~5位。

后面的两位(第6位和第7位)被开始柱面字段所使用

0x01C1

10位

0x00

开始柱面(StartingCylinder)  除了开始扇区字段的最后两位外,还使用了1位来组成该柱面值。

开始柱面是一个10位数,最大值为1023

0x01C2

BYTE

0x07

系统ID(SystemID)定义了分区的类型,详细定义,请参阅图4

0x01C3

BYTE

0xFE

结束磁头(EndingHead)

0x01C4

6位

0xFF

结束扇区(EndingSector)    只使用了0~5位。

最后两位(第6、7位)被结束柱面字段所使用

0x01C5

10位

0x7B

结束柱面(EndingCylinder)除了结束扇区字段最后的两位外,还使用了1位,以组成该柱面值。

结束柱面是一个10位的数,最大值为1023

0x01C6

DWORD

0x0000003F

相对扇区数(RelativeSectors)从该磁盘的开始到该分区的开始的位移量,以扇区来计算

0x01CA

DWORD

0x00DAA83D

总扇区数(TotalSectors)该分区中的扇区总数

注:

上表中的超过1字节的数据都以实际数据显示,就是按高位到低位的方式显示。

存储时是按低位到高位存储的。

两者表现不同,请仔细看清楚。

以后出现的表,图均同。

也可以在winhex中看到这些参数的意义:

图3

说明:

每个分区表项占用16个字节,假定偏移地址从0开始。

如图3的分区表项3。

分区表项4同分区表项3。

1、0H偏移为活动分区是否标志,只能选00H和80H。

80H为活动,00H为非活动。

其余值对microsoft而言为非法值。

2、重新说明一下(这个非常重要):

大于1个字节的数被以低字节在前的存储格式格式(littleendianformat)或称反字节顺序保存下来。

低字节在前的格式是一种保存数的方法,这样,最低位的字节最先出现在十六进制数符号中。

例如,相对扇区数字段的值0x3F000000的低字节在前表示为0x0000003F。

这个低字节在前的格式数的十进制数为63。

3、系统在分区时,各分区都不允许跨柱面,即均以柱面为单位,这就是通常所说的分区粒度。

有时候我们分区是输入分区的大小为7000M,分出来却是6997M,就是这个原因。

偏移2H和偏移6H的扇区和柱面参数中,扇区占6位(bit),柱面占10位(bit),以偏移6H为例,其低6位用作扇区数的二进制表示。

其高两位做柱面数10位中的高两位,偏移7H组成的8位做柱面数10位中的低8位。

由此可知,实际上用这种方式表示的分区容量是有限的,柱面和磁头从0开始编号,扇区从1开始编号,所以最多只能表示1024个柱面×63个扇区×256个磁头×512byte=8455716864byte。

即通常的8.4GB(实际上应该是7.8GB左右)限制。

实际上磁头数通常只用到255个(由汇编语言的寻址寄存器决定),即使把这3个字节按线性寻址,依然力不从心。

在后来的操作系统中,超过8.4GB的分区其实已经不通过C/H/S的方式寻址了。

而是通过偏移CH~偏移FH共4个字节32位线性扇区地址来表示分区所占用的扇区总数。

可知通过4个字节可以表示2^32个扇区,即2TB=2048GB,目前对于大多数计算机而言,这已经是个天文数字了。

在未超过8.4GB的分区上,C/H/S的表示方法和线性扇区的表示方法所表示的分区大小是一致的。

也就是说,两种表示方法是协调的。

即使不协调,也以线性寻址为准。

(可能在某些系统中会提示出错)。

超过8.4GB的分区结束C/H/S一般填充为FEHFFHFFH。

即C/H/S所能表示的最大值。

有时候也会用柱面对1024的模来填充。

不过这几个字节是什么其实都无关紧要了。

虽然现在的系统均采用线性寻址的方式来处理分区的大小。

但不可跨柱面的原则依然没变。

本分区的扇区总数加上与前一分区之间的保留扇区数目依然必须是柱面容量的整数倍。

(保留扇区中的第一个扇区就是存放分区表的MBR或虚拟MBR的扇区,分区的扇区总数在线性表示方式上是不计入保留扇区的。

如果是第一个分区,保留扇区是本分区前的所有扇区。

3.2扩展分区

扩展分区中的每个逻辑驱动器都存在一个类似于MBR的扩展引导记录(ExtendedBootRecord,EBR),也有人称之为虚拟mbr或扩展mbr,意思是一样的。

扩展引导记录包括一个扩展分区表和该扇区的标签。

扩展引导记录将记录只包含扩展分区中每个逻辑驱动器的第一个柱面的第一面的信息。

一个逻辑驱动器中的引导扇区一般位于相对扇区32或63。

但是,如果磁盘上没有扩展分区,那么就不会有扩展引导记录和逻辑驱动器。

第一个逻辑驱动器的扩展分区表中的第一项指向它自身的引导扇区。

第二项指向下一个逻辑驱动器的EBR。

如果不存在进一步的逻辑驱动器,第二项就不会使用,而且被记录成一系列零。

如果有附加的逻辑驱动器,那么第二个逻辑驱动器的扩展分区表的第一项会指向它本身的引导扇区。

第二个逻辑驱动器的扩展分区表的第二项指向下一个逻辑驱动器的EBR。

扩展分区表的第三项和第四项永远都不会被使用。

通过一幅4分区的磁盘结构图可以看到磁盘的大致组织形式。

如图5:

关于扩展分区,如图6所示,扩展分区中逻辑驱动器的扩展引导记录是一个连接表。

该图显示了一个扩展分区上的三个逻辑驱动器,说明了前面的逻辑驱动器和最后一个逻辑驱动器之间在扩展分区表中的差异。

除了扩展分区上最后一个逻辑驱动器外,表2中所描述的扩展分区表的格式在每个逻辑驱动器中都是重复的:

第一个项标识了逻辑驱动器本身的引导扇区,第二个项标识了下一个逻辑驱动器的EBR。

最后一个逻辑驱动器的扩展分区表只会列出它本身的分区项。

最后一个扩展分区表的第二个项到第四个项被使用。

  表2 扩展分区表项的内容

扩展分区表项

分区表项的内容

第一个项

包括数据的开始地址在内的与扩展分区中当前逻辑驱动器有关的信息

第二个项

有关扩展分区中的下一个逻辑驱动器的信息,包括包含下一个逻辑驱动器的EBR的扇区的地址。

如果不存在进一步的逻辑驱动器的话,该字段不会被使用

第三个项

未用

第四个项

未用

扩展分区表项中的相对扇区数字段所显示的是从扩展分区开始到逻辑驱动器中第一个扇区的位移的字节数。

总扇区数字段中的数是指组成该逻辑驱动器的扇区数目。

总扇区数字段的值等于从扩展分区表项所定义的引导扇区到逻辑驱动器末尾的扇区数。

有时候在磁盘的末尾会有剩余空间,剩余空间是什么呢?

我们前面说到,分区是以1柱面的容量为分区粒度的,那么如果磁盘总空间不是整数个柱面的话,不够一个柱面的剩下的空间就是剩余空间了,这部分空间并不参与分区,所以一般无法利用。

照道理说,磁盘的物理模式决定了磁盘的总容量就应该是整数个柱面的容量,为什么会有不够一个柱面的空间呢。

在我的理解看来,本来现在的磁盘为了更大的利用空间,一般在物理上并不是按照外围的扇区大于里圈的扇区这种管理方式,只是为了与操作系统兼容而抽象出来CHS。

可能其实际空间容量不一定正好为整数个柱面的容量吧。

 

第四章FAT分区原理

先来一幅结构图:

现在我们着重研究FAT格式分区内数据是如何存储的。

FAT分区格式是MICROSOFT最早支持的分区格式,依据FAT表中每个簇链的所占位数(有关概念,后面会讲到)分为fat16、fat32两种种格式,但其基本存储方式是相似的。

仔细研究图7中的fat16和fat32分区的组成结构。

下面依次解释DBR、FAT1、FAT2、根目录、数据区、剩余扇区的概念。

提到的地址如无特别提示均为分区内部偏移。

4.1操作系统引导记录区

DBR区(DOSBOOTRECORD)即操作系统引导记录区的意思,通常占用分区的第0扇区共512个字节(特殊情况也要占用其它保留扇区,我们先说第0扇)。

在这512个字节中,其实又是由跳转指令,厂商标志和操作系统版本号,BPB(BIOSParameterBlock),扩展BPB,os引导程序,结束标志几部分组成。

以用的最多的FAT32为例说明分区DBR各字节的含义。

见图8。

图8的对应解释见表3

   表3  FAT32分区上DBR中各部分的位置划分   

字节位移

字段长度

字段名

对应图8颜色

0x00

3个字节

跳转指令

 

0x03

8个字节

厂商标志和os版本号

 

0x0B

53个字节

BPB

 

0x40

26个字节

扩展BPB

 

0x5A

420个字节

引导程序代码

 

0x01FE

2个字节

有效结束标志

 

图9给出了winhex对图8DBR的相关参数解释:

根据上边图例,我们来讨论DBR各字节的参数意义。

MBR将CPU执行转移给引导扇区,因此,引导扇区的前三个字节必须是合法的可执行的基于x86的CPU指令。

这通常是一条跳转指令,该指令负责跳过接下来的几个不可执行的字节(BPB和扩展BPB),跳到操作系统引导代码部分。

跳转指令之后是8字节长的OEMID,它是一个字符串,OEMID标识了格式化该分区的操作系统的名称和版本号。

为了保留与MS-DOS的兼容性,Windows98格式化的磁盘上OEMID字段出现“MSWIN4.1”。

接下来的从偏移0x0B开始的是一段描述能够使可执行引导代码找到相关参数的信息。

通常称之为BPB(BIOSParameterBlock),BPB一般开始于相同的位移量,因此,标准的参数都处于一个已知的位置。

磁盘容量和几何结构变量都被封在BPB之中。

由于引导扇区的第一部分是一个x86跳转指令。

因此,将来通过在BPB末端附加新的信息,可以对BPB进行扩展。

只需要对该跳转指令作一个小的调整就可以适应BPB的变化。

图9已经列出了项目的名称和取值,为了系统的研究,针对图8,将FAT32分区格式的BPB含义和扩展BPB含义释义为表格,见表4和表5。

表4 FAT32分区的BPB字段     

字节位移

字段长度(字节)

图8对应取值

名称和定义

0x0B

2

0x0200

扇区字节数(BytesPerSector)硬件扇区的大小。

本字段合法的十进制值有512、1024、2048和4096。

对大多数磁盘来说,本字段的值为512

0x0D

1

0x08

每簇扇区数(SectorsPerCluster),一簇中的扇区数。

由于FAT32文件系统只能跟踪有限个簇(最多为429

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 其它语言学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1