当前位置:首页 >> IT/计算机 >>

硬盘格式化数据恢复技术研究与实现


四川师范大学 硕士学位论文 硬盘格式化数据恢复技术研究与实现 姓名:鲁恩铭 申请学位级别:硕士 专业:计算机应用技术 指导教师:袁丁 20090405

硬盘格式化数据恢复技术研究与实现
计算机应用技术专业

研究生:鲁恩铭

指导教师:袁丁

摘要:随着全球信息化的快速发展,信息已成为社会发展的重要资源,围绕这 一资源所展开的全球性的竞争日趋激烈。“电脑有价,数据无价"是信息时代 对电脑数据重要性的认可,信息社会的发展使信息资源成为宝贵的财富。由此,
灾难恢复成为一门新的学科,系统与数据恢复技术应运而生,成为一门新的技 术,也是目前一个新的研究课题。硬盘格式化数据恢复是属于数据恢复技术的

“软恢复"方面,它是数据恢复中经常遇见的方面,也是数据恢复中较为棘手 的方面。它能对个人,企业甚至国家产生深远影响。所以开发一款专门针对硬 盘格式化数据恢复的软件显得尤为重要。
本文首先阐述了硬盘格式化数据恢复的重要意义,分析了国内外研究的现 状,深入分析和研究了硬盘数据的存储结构,包括Windows下的FAT32、NTFS

结构和Linux下的EXT3结构。然后着重设计和实现了硬盘格式化数据恢复系
统,主要从分区表恢复,Wi ndows下格式化数据恢复和Linux下格式化数据恢

复的方案设计与实现三个方面进行详细的阐述。最后就实验结果和现在流行的 软件进行了对比分析。具体包括以下几个方面: 对分区表恢复方案设计与实现部分来说,主要阐述了初始化过程,获得每
个分区结点所在物理扇区号以及通过物理扇区号恢复分区表的方案设计及具

体实现过程。 对Windows下格式化数据恢复方案设计与实现部分来说,主要阐述了
Windows

FAT32下格式化数据恢复和Windows NTFS格式化数据恢复的方案设

计及具体实现过程。 对Linux下格式化数据恢复方案设计与实现部分来说,主要是阐述了在 Linux下四种数据恢复方案的设计,并着重阐述了“RAW"文件恢复的具体实

现过程。
最后,文章对硬盘格式化数据恢复系统进行了测试分析和总结,并对后续 系统的开发提出了新的要求。

关键字:格式化,NTFS,FAT32,EXT3,

“RAW”文件,引导扇区,分区表



Research and Implementation of Technology in Hard Disk Formatted Data Recove

Major:Computer

Application Technology

Graduate Student:Lu Enming

Tutor:Yuan Ding

Abstract:As the fast development of information globalization,information has become fierce
aLs
all

important resource,and the global competition has become increasingly


well.”Computer has price,but data is priceless.”is

kind of recognition

of the importance of computer data in the

information

era.The development of

information

society has made the

information resources


become valuable assets,

therefore disaster recovery has been made to be

new

subject nowadays.System


and data recovery technology come into being and become
at

heated issue for study

present.Data loss is quite common
to
on

and is also very complex.Hard disk

Formatted data recovery belongs

the“soft recovery'’.The recovery individuals,businesses

technology
the whole
recovery

Can

bring far-reaching influence

and

even

country.So,it is very important to develop hard disk software. This article fn,st introduces the relative researches at home hard disk

formatted data

significance

of the

study,and

analyzes the

and

abroad.An in—depth analysis and research of the

data

storage structure is given in this part,including FAT32,NTFS file

system

structure under

Windows and

EXT3 file system structure under Linux.

What

is followed is the focus,that is,the

design and implementation

of the hard

disk formatted data recovery

data recovery system,including
Windows

partition table recovery,formatted


on

and Linux three aspects in detail.Finally

comparison

III

is made between this scheme and other popular formatted data recovery software according to the experimental results,which
call

be listed

as

follows:

In terms of the design and the implementation of partition table recovery,this thesis mainly presents the initialization process,obtains physical sector number of each partition node,as well
as

recovery the partition table using physical sector

number in detail.
In terms of the design

and implementation design

of formatted data recovery of formatted
on

on on

windows,this thesis mainly presents the

data recovery

Windows

FAT32

and formatted data recovery

Windows

NTFS.Their

implementation is given in details. In terms of the

design and

implementation of

formaaed

data recovery
on

on

Linux,

this thesis mainly presents the focus
on

design

of four data recovery schemes

Linux,and

the implementation

of”RAW”file recovery.

Finally,the analysis of hard disk formatted data recovery system is

made.The

thesis also summarizes the design and its implementation,and puts forward new requirements for the follow-up system development.

Keywords:Format,NTFS,FAT32,EXT3,“RAW”file,Boot Sector,Partition
Table

IV

四川师范大学学位论文独创性及
使用授权声明

本人声明:所呈交学位论文,是本人在导师

躯j

V/

指导下,独

立进行研究工作所取得的成果。除文中已经注明引用的内容外,本论文不含任

何其他个人或集体已经发表或撰写过的作品或成果。对本文的研究做出重要贡 献的个人和集体,均已在文中以明确方式标明。本声明的法律结果由本人承担。
本人承诺:已提交的学位论文电子版与论文纸本的内容一致。如因不符而

引起的学术声誉上的损失由本人自负。 本人同意所撰写学位论文的使用授权遵照学校的管理规定: 学校作为申请学位的条件之一,学位论文著作权拥有者须授权所在大学拥 有学位论文的部分使用权,即:1)已获学位的研究生必须按学校规定提交印 刷版和电子版学位论文,可以将学位论文的全部或部分内容编入有关数据库供 检索;2)为教学、科研和学术交流目的,学校可以将公开的学位论文或解密 后的学位论文作为资料在图书馆、资料室等场所或在有关网络上供阅读、浏览。

本人授权中国科学技术信息研究所将本学位论文收录到《中国学位论文全 文数据库》,并通过网络向社会公众提供信息服务。 (保密的学位论文在解密后适用本授权书)

学位敝储签名霈旦、铂

’’

导师签名:

签字日期:3。习年y月罗D日


签字嗍中朋扣日

网川师范大学硕士学位论文

第一章引言
1.1研究的背景与意义
随着信息技术的不断发展,计算机越来越多地应用到人们的工作与生活中, 在社会和生活中扮演着日益重要的角色。计算机的应用已经渗透到政府、军事、 文教与日常生活的各个方面。它们都通过计算机来获取信息、处理信息,同时将 自己最重要的信息以数据文件的形式保存在计算机中。建立、处理、存储、保护、
使用和销毁这些数据,即信息的全生命周期运动,构成了信息时代社会信息流的

大动脉。伴随着观念和技术的进步,有关安全的概念也经历了计算机安全、信息 安全和全面的信息保障,并成为国家战略安全的重要组成部分。“电脑有价,数
据无价"是信息时代对计算机数据重要性的认可,信息社会的发展使信息资源成 为宝贵的财富。

数据的价值非常重要,一旦数据受到破坏,其后果令人无法想象。从1998 年轰动全球的“CIH病毒事件”,91l事件,美加停电事件,日本航空系统故障, 到花旗银行丢失390万客户信息的“数据门事件",这些意外不仅给个人、商业 机构乃至政府造成了巨大生命财产损失,也对信息化时代各类组织机构的生存与 运转以毁灭性打击。据IDC的统计,美国在2000年以前的lO年间,发生过灾难 的公司中,有55%当时倒闭,在剩下的45%中,因为数据丢失,有29%也在两年
之内倒闭,生存下来的仅占16%t11。

造成数据丢失的原因是多方面的,既有客观的自然规律,也有人为的因素。
客观的自然规律包括:阵列卡失效或阵列信息丢失;NAS或SAN系统故障或失

败;存储网络信息混乱;存储系统故障;硬盘子系统故障;电源故障导致数据损 坏;系统软件故障;文件系统混乱;文件损坏;硬件失效;自然灾害如:火灾、 洪水、地震等。 人为因素包括误操作和有意破坏,如:人为误操作;非正常插拔设备导致无
法访问;硬件如硬盘失手摔坏;病毒;忘记密码;盗窃或蓄意破坏;木马;黑客;

工业间谍;其他如国家之间的信息战等等。数据丢失原因分析【2】如图1.1所示:

图1-l数据丢失原因分析

遭遇上述这些窘境之时,几乎所有的用户都会想尽一切方法、不惜一切代价 找回数据,因此数据恢复技术与市场一直非常热。数据恢复是指从被损坏的数据 载体,如磁盘、磁带、光盘和半导体存储器等,以及被损坏或被删除的文件中获 得有用的数据1”。根据1DC的统计数据,目前全球每年的数据恢复市场价值大约 在千亿美元,国内也至少达到十几亿人民币。国外经验丰富的数据恢复工程师的 年薪普遍在30万美元以上,而国内资深数据恢复工程师的年薪也不下10万元人
民币【4】。

很显然,数据恢复技术的一个最大应用就是在数据出现问题时快速进行恢 复。毕竟,信息的复制虽然很容易,但信息的重建却非常的困难,无论是重建时 间,还是重建费用,都让人无法忍受,而有些信息甚至根本就不可能重建。 根据3M公司对8000名网络微机用户的调查发现,硬盘的每次失效将造成5 天以上的无效工作日。而在一个典型的商业应用中,重建1000MB的数据,平均 要耗时3.5个月,费用为95000美元巧j。由此可见,信息存储对最终用户来说是 何等的重要,可以说,它是信息时代的数字财富。 硬盘是计算机存取数据的核心部件,一般情况下,硬盘被分成多个分区,几 乎所有重要的数据都存储在硬盘各个分区之中。一旦我们电脑的分区被误格式 化,分区中的数据也就随之丢失,如果所有分区都被格式化,就会导致硬盘中的 所有数据全部丢失。如何能够迅速而正确地进行数据恢复也就成为了至关重要的 问题。

pnq川师范大学硕上学位论文

由于国内数据恢复技术的研究比较晚,硬盘格式化数据恢复技术的研究与国 外相比,还有一定的差距。在这种背景下,为推动国家的信息化进程,捍卫国家 信息数据安全,开发一种费用低廉,使用方便,安全可靠的硬盘格式化数据恢复 系统具有较大的经济意义和社会意义。 随着信息化进程的不断推进,随着人类对信息资源的依赖程度的不断增长, 随着信息设备的普及应用,随着淘汰、损坏设备的增多,随着信息毁损和窃取手 段的增多,硬盘格式化数据恢复技术将同益显示出其重要性,它对于个人、企业 和政府都具有极其重要的应用价值和实用价值。

1.2国内外现状分析
从数据丢失产生的原因分类,数据恢复技术的基本分类【61如下所示:

数据恢复技术t软恢复(逻辑㈣-E嚣豁
广硬恢复(硬件问题) 目前国内在“软恢复”方面研究与国外专业公司相比,还存在差距,其中覆
盖数据恢复技术差距最大,有资料17】显示美国军方可以恢复覆盖6"----9次的数据,

俄罗斯可以恢复覆盖3-'-'4次的数据,IBM自己耗资6亿美元的研究成果是可以 恢复覆盖2~3次的数据,由于这些都涉及到国家核心机密,具体的细节和可靠
性都尚不可知。

硬盘格式化数据恢复技术属于数据恢复技术的“软恢复"方面,而所谓“软 恢复"是指存储系统,或操作系统,或文件系统层次上的数据丢失。这种丢失是
多方面的,如系统软硬件故障、死机、病毒破坏、黑客攻击、木马破坏、误操作、 阵列数据丢失等等:这种数据丢失也是常见的。

在国外,很多计算机集成商和存储设备生产厂商都有从事数据修复服务的部 门,专业的数据恢复公司也很多。以美国为例,截至2004年初,专业的数据恢
复公司有400多家,一年的数据修复市场营业额为1.5亿美金,且每年以50%的 速度递增【8】。

在国内,早在1998年,北京中关村就出现了数据恢复的招牌。从真正意义 上讲,那时候的主要业务还是硬盘维修,在修好硬盘的电路后,把硬盘的数据及
时备份出来。

四川师范大学硕士学位论文

到2004年9月,数据恢复市场环境日渐成熟,市场容量大大增加。就在2004
年前三季度,全国数据恢复公司如雨后春笋。具不完全统计,仅北京一地新注册

的数据恢复公司就有10多家,广州、上海、深圳、成都、西安等地也都出现了 多家专门从事数据恢复的公司。截止2004年9月,全国从事数据恢复的公司已 经超过100家。2004年第四季度,数据恢复市场发生了巨大变化。各大公司开始 重拳出击,纷纷在全国跑马圈地,推动数据恢复市场的资源整合,品牌意识大大 增强f9】o 最近,国家发展改革委员会批准了国家信息中心申请的《国家高技术产业化 项目、自主可控的信息安全专业化服务项目、存储介质数据恢复服务项目》,项 目总投资2100万元,国家补助资金800万元I101。 “存储介质数据恢复服务项目”旨在国家信息中心信息安全研究与服务中心现 有数据恢复业务的基础上,在三年内,扩充设备、设施和技术能力,形成可恢复
多种存储介质、各种操作系统和数据结构的数据恢复专业化服务平台;实现数据

恢复设施专业化,管理规范化,自主知识产权的专业工具、软件和技术的升级、 改造和完善,服务规模化;制定数据恢复技术标准和管理规范,促进数据恢复服 务行业技术实施和管理的标准化和规范化;在有条件和需求的省市建立数据恢复 服务分中心,初步形成自主可控的覆盖全国的普通数据恢复、涉密数据恢复、特 殊数据恢复及电子数据司法鉴定等专业化数据恢复服务体系【引。可见,目前国家 对存储介质数据恢复服务项目非常重视。
目前流行的支持格式化数据恢复的软件有:DiskRecovery、EasyRecovery、
File Rescue Plus,File Scavenger,FinalData、FinalRecovery,FormatRecovery, Handy Recovery、R—Studio、RecoverMyFiles、Search and

Recover、易我数据

恢复向导等,比较好的数据恢复公司有:飞客、达思、Ontrack(美国)等数据恢 复公司。每款支持格式化数据恢复软件的性能如下…】:
l、DiskRecovery技术版

可以对不同文件系统和已格式化的分区进行扫描,恢复能力非常强。扫描结 果以文件格式分类显示和恢复,而且重新格式化命名,对于普通用户来说比较不
方便。删除分区后恢复出的文件大部分有错误。
2、EasyRecovery

扫描速度比较慢,但是效果不错,而且能够修复已经损坏的Word和Zip等


四川师范人学硕上学位论文

文件。扫描后的结果以单独目录方式显示和恢复(就是目录套目录时,会把所有 目录平行的显示和恢复),不能做到深层目录的直接恢复。
3、 File Rescue Plus

速度还可以,但扫描结果是以全部文件的方式显示,不能恢复目录结构。对 中文Word文档支持不好,打开后为乱码。
4、File Scavenger

速度不错,但扫描结果可以以全部文件的方式显示,也可以以目录方式显示。 扫描结果以文件类型方式分类,不支持原始目录结构恢复。
5、FinalData Enterprise 2.0

速度非常的慢,扫描结果以文件类型方式以及全部方式两种方式显示,不支 持原始目录结构显示及恢复。有特色的是支持常见格式的图片和文本等文件的预
览。
6、 FinalRecovery 2.0.3.1

速度非常快,扫描结果以目录方式显示,支持原始目录结构恢复。它会把所
有目录都显示出来,即下级目录和上级目录都平行显示。
7、 FormatRecovery

不支持中文目录及文件名,中文目录下的文件不能够扫描到,不能恢复中文
格式的文件。


8、Handy Recovery

扫描速度一般,扫描结果文件以格式归类显示,扫描结果格式化改名。不支
持目录结构恢复。有查找分区的功能,可以找到被删除的分区。
9、 R-Studio

速度和效果都不错,而且有图形化显示目标分区的状况(类似于磁盘整理时 的显示)。扫描结果按照可识别文件和未识别文件分类,可恢复完整目录结构。
1 0、RecoverMyFiles

深度扫描速度比较慢,但扫描效果相当好。支持图片、声音、文本、HTML
等文件的预览。以格式分类,不支持目录显示和恢复。
11、Search and Recover 3

深度扫描速度非常慢,但扫描效果还可以。支持图片、声音的预览。无分类, 所有文件统一显示,不支持目录恢复。特色功能是支持目录扫描,可以直接扫描




四川师范人学硕士学位论文

某个目录内的文件。另外还可以按照时间、属性、大小等条件进行扫描。
12、易我数据恢复向导V2.0 支持IDE/ATA、SATA、SCSI、USB、IEEEl394种类的硬盘或软盘、数码相

机、数码摄像机和USB种类的存储盘。速度和效果都不错,支持目录结构恢复。

1.3论文主要工作



本文在学习大量的数据恢复技术和多种文件系统的相关知识的基础上,深入 研究了硬盘格式化数据恢复技术,提出、设计并实现了Windows和Linux下的格
式化数据恢复系统。该系统支持Widows下和Linux下分区的查找和分区表的恢

复,支持Windows FAT32、NTFS下和Linux下格式化数据恢复,支持目录结构 的恢复,支持长文件名的恢复,支持IDE/ATA、S触队、SCSI、USB、IEEEl394 种类的硬盘,同样支持软盘、数码相机、数码摄像机和USB种类的存储盘。该系 统高效、移植性强,数据恢复成功率高。较目前流行的一些数据恢复软件,如
Diskgen,Partition Table Doctor,EasyRecovery,File Scavenger, FinalData,

DiskRecovery、FormatRecovery等,具有一定的优越性。

本文的工作主要包括以下几个方面: 1、硬盘数据存储结构部分,深入研究硬盘数据存储结构,并进行大量的实 验和测试。具体工作主要体现在以下几个方面: (1)Windows和Linux分区链表结构的分析;
(2)FAT32目录项结构的分析; (3)FA=r32和NTFS长文件名的分析; (4)NTFS文件属性的分析; (5)Linux文件系统数据存储结构分析。

2、分区表恢复部分,主要是针对分区表遭到破坏后分区表恢复研究和设计, 并进行相关的程序实现,具体工作主要体现在以下几个方面:
(1)初始化过程,因为Windows和Linux的主引导扇区中的分区表项各不

相同,并且开始进行搜索的起始扇区号也会因为分区表遭到破坏程度不同而不
同。这些差异需要在初始化过程中完成; (2)获得每个分区结点所在物理扇区号,包括分区链表信息的搜索,引导

扇区的搜索和分区大小备份的搜索;


四川师范大学硕上学位论文

(3)通过分区结点所在物理扇区号恢复分区表,包括每个分区的起始扇区、 分区大小、下一个分区的起始扇区、分区大小、激活标志、C/H/S参数的精确确
定。 3、Windows FAT32下格式化数据恢复部分,主要针对FAT32分区误格式化

后数据恢复研究和设计,并进行相关的程序实现,具体工作主要体现在以下几个
方面:

(1)目录区的起始位置的获取,从而找到待恢复文件的起始位置;
(2)FAT32下文件名和相对应的数据的获取: (3)FAT32下长文件名的解决;

(4)FAT32下目录结点的生成;
(5)FAT32下目录树的重构。 4、Windows NTFS下格式化数据恢复部分,主要针对NTFS分区误格式化后

数据恢复研究和设计,并进行相关的程序实现,具体工作主要体现在以下几个方
面: (1)MFT区域起始位置的获取; (2)NTFS下文件名和相对应数据的获取; (3)NTFS下长文件名的解决; (4)NTFS下目录结点的生成; (5)NTFS下目录树的重构。

5、Linux下格式化数据恢复部分,主要利用Linux分区格式化后本身留下的 文件内容入手,对一些重要文件的文件头和文件脚进行实验研究以及对某些文件 中的关键字进行搜索等方法,设计格式化数据恢复的方案,并进行相关的程序实
现。

1.4论文结构
本文根据理论和实际相结合的原理,总共安排七个章节分别对硬盘数据存储 结构、分区表恢复方案设计与实现、Windows下格式化数据恢复方案设计与实现、 Linux下格式化数据恢复方案设计与实现、测试分析、总结和展望做了详细的阐 述。具体各章节的内容分布如表1.1所示:



四川师范大学硕士学位论文

表1.1本文的结构安排 章节 章节题目 章节内容 介绍系统的研究背景的与意义;对国内外 第一章 引言 现状进行分析;对系统总体设计进行介 绍;列出本文的研究工作。 第二章 硬盘数据存储结构 研究硬盘数据存储结构,并结合实例进行 详细的分析。 第三章 分区表恢复方案设计与 实现 对分区表的恢复进行详细的设计,提出具 体解决方案并实现其方案。 对Windows FAT32和NTFS下格式化数据 第四章 Windows下格式化数据 恢复方案设计与实现 恢复进行详细的设计,提出具体解决方案 并实现其方案。 第五章 Linux下格式化数据恢 复方案设计与实现 对Linux下格式化数据恢复进行详细的 设计,提出具体解决方案并实现其方案。 对本文提出的硬盘格式化数据恢复方法 第六章 测试与分析 进行性能测试,并和当今流行的软件进行 对比分析。 第七章 总结与展望 总结在具体操作过程中应该注意的问题, 对后续系统开发提出要求。


1.5小结
在当今信息技术高速发展的时代,信息资源已经成为宝贵的财富。信息安全 事关个人利益;事关部门、公司、企业甚至国家的政治和经济利益;事关国家安 全和经济发展。信息安全已成为国家战略安全的重要组成部分。数据恢复是信息 安全的最后一道屏障,数据恢复正在作为一种产业快速发展,硬盘格式化数据恢
复是数据恢复的“软恢复”方面,它是数据恢复中经常遇见的方面,也是数据恢

复中较为棘手的方面。它是抵抗误格式化导致灾难的有效解决方案;是数据失而 复得,起死回生的良医;是个人、部门、企业、国家不可或缺的信息技术手段。 硬盘格式化数据恢复技术对于个人,企业和政府具有较大的经济意义和社会意 义,并具有极其重要的应用价值和实用价值。


四川师范大学硕士学位论文

第二章硬盘数据存储结构
硬盘是计算机存取数据的核心部件,为了使用和管理方便,这些数据是以文 件的形式存储在硬盘上。操作系统管理着各自的文件,不同的操作系统都有自己 的文件管理系统,不同的文件系统又有各自不同的逻辑组织方式。Windows下有 FAT32和NTFS等文件系统格式,Linux下有EXT3、JFS、XFS等文件系统格式,
本文主要阐述Windows和Linux下硬盘数据的存储结构。

2.1引导扇区


一般情况下,硬盘被分成多个分区,硬盘的分区形式一般有三种,即主分区、 扩展分区和非DOS分区。非DOS分区(Non.DOS Partition)是一种特殊的分区 形式,它是将硬盘中的一块区域单独划分出来供另一个操作系统使用,如Linux 和UNIX等。对Windows操作系统来讲,非DOS分区是一块被划分出去的存储 空间。只有非DOS分区内的操作系统才能管理和使用这块存储区域,非DOS分 区之外的系统一般不能对该分区内的数据进行访问。所以Windows操作系统一般
不能访问Linux分区内的数据,但Linux操作系统能访问Windows分区内的数据。 主分区中有一个主引导扇区,它是一个特殊而重要的扇区,也叫MBR扇区。

它位于该硬盘的第一个扇区中,即位于0扇区。而逻辑分区中有一个虚拟主引导 扇区,也叫DBR扇区,位于上一个分区最后扇区的下一个扇区。 主引导扇区由主引导程序、硬盘分区表(DPT)和结束标志组成,主引导程 序占用前面的446个字节,构成操作系统的引导代码,接着是64个字节的主分 区表,它分为四个分区项,每个分区项占用16个字节,最后是占用2个字节结 束标志,值为55HAAH。虚拟主引导扇区跟主引导扇区结构差不多,只是引导程
序部分全为0。

用WinHex查看一块装好Windows

XP

SP2操作系的希捷160GB硬盘的

MBR,如图2.1所示,查看其中一个分区的DBR,如图2.2所示。查看一块装好
Redhat 12.0

LINUX操作系统的希捷160GB硬盘的MBR,如图2.3所示,查看其

中一个分区的DBR,如图2-4所示:



四川师范大学硕上学位论文

0 0 O0 O0 0 O 0 0 00 OO 0 O 0 0 O0 00 7 00

0ff8et

0ff8et 0DF8F90000 ODF8F90010 0DF8F90020

O 0 O0 0O OO 00 0O OO 0O 00 00 O0 0O O0 00 0O 0 0 O 0 O0 O0 0 0 O O O 0



4 00 O0 O O OO 00 O0 O O

5 O0 O0 O0 00 O0 00 00 00 0O 00 00 00

6 O 0 O O 0 0 0 a0 0 0 O 0 0 0


00

C ^0 O0
00 00 00 0O 00 00 00 00 O0 00 0O 00 O0 00 0O 00 0O 0O O 0

F 0 吕0 O 0 OO 00 O0 00 00 00 00 0O 0O O0 O0 0O 00 O0 O0 0 0 00 0O 00 0 0 00 O0 0O O 0 00 O O 00 0O O 0 0

0000000000
0000000010

0O 0 0 0 0 OO 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0O

00
00 00 00 O0 00 00 O0 00 00 00 O0 00 00 00 O0 00 00 00

O0
O0 O 0



0000000020
OO00000030

0 O 0 0 O 0 0 0 0 0 0 0 0 0 O 0 0 O 0 O

g叮M加;2

0DF8F90030 0DF8F90040 0DF8F90060 ODFSF90060 ODF81'90070 oDF81'90030 0DFSF90090

0000000040
0000000060

O O 0

0西00
0O

0000000060
0000000070





OO
00 00 0O 00 O0 00 0O 0O O0 O0 00

0 0 0 O O 0 0 0 0 0 OO 0 O O 0 0 O O0 O O 00 00 00 O0 00 0 0 OO OO 00 01 O0 OO

0000000030
0000000090

O0 O0 O 0 0O

OO
0O 0 0 O 0 0O 0O O0 0 0 0 O OO 00 O0 0 0

00000000AO
0000000080 00000000C0 00000000DO 00000000E0 00000000F0 0000000100 0000000110 0000000120 0000000130 0000000140

4芘卯∞似住∞M:;}西踞n

oDF8F900A0 ODF81'90080

0DF韶900c0
0DF8F900D0 ODF8F90dE0 ODF8F900FO oE旷8F90100 0DFSF90110

O0
0 0 00 0O

0 O O0 0 O 00 00 00 0 0 00 O0 00 O0 OO 0 0 O0 O0

0O
OO 00 00 O0 O0 00 00 00

O0
O 0 O O 0 O O 0 0 0 0 O 0 O O0 O0 0 0 O 0 0O 0O

O0
0 0 O0 00

ODF8F90120

00
00 OO O0

0卵8F90130
叩f3F90140
ODF8F90i50

OO

O0
O0 00 00

00 O0
OO 00 O0 OO 0O 0O 00 O 7 0 O^O O0

O0
O0 00 0O 00 00

0000000150
0000000160 0000000170 0000000180 00000001 90 00000001AO

,∞ ∞ ∞ ∞ ∞
00

0O 00

00 00 00 00

oDF8F90160
0nF3F90170

00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

0DF3F90130
0DF8F90190 0DF8F901^0

00 00 00 00 00 00

00
00

00 00

00 00 7B
00

OO
00

00
00

0O
0 O O0 O0 0O

00000001BO
0000000lC0

0DF卵90180
0DF8F901C0 ODF3FgOIDO

CI盯OB FE”阡31'00
C1

C0
42 OO

D2
D2 OO

00000001bO 00000001EO 00000001FO

rF
00 00

06

FE FF 00 00

FF FF 00

0DF8F901E0

00
00

00
00

00 00 00 00

o髟肌船邪阳旺∞骺虻盯躬触孙:};”钍咀弛虻铊盯皓H∞ 咀n

,∞强蔑}虻加仡虬舛M”丌鲁}∞记“Hw印∞ "

2匏∞”犯船帆掌}髓昭驺罢3眈∞弘钒如钳皓盯乏}∞虻时

3∞亿的 飓¨∞踞陀船"虬M}f;加∞伯曲盯 弛盹∞ m龉2; 船”盯眈∞伯蛞晤∞ ∞ "盯∞

5∞的俘曲虬犸队略K他;s∞队弱%踞缸他 罢2∞ 荭阡即∞

6佗踮婚弘盼丛加∞从址罢3驺弘从她¨”他H"伯∞驵卵 7阽吡∞叶盹脑髓仉卯队阻协:j;佰盯∞髓他M ∞

g∞略似帕凹牡嘧珏n:s船他∞偈”:宝的他旺H∞ 酞∞ M如巧∞ 飓孔罢:托吼∞M鼹缸札M∞毪j钉晒∞ 托∞窨} ∞ ^∞眩加皂}北诏仡∞簪;髓船驵踞口触札弛∞虻盯 ∞n虬

B"即M:8∞他 如盯鳃北以似从m∞%盯 卵∞ 托约缸∞

c虻醣∞叮如蛎们帖弘”罢j鲁诣M%毫}的皂j札乃伯∞ 弘o∞

D腿叮墙M髓∞窨!;宕H强眩阽弛M墨∞盯皂j¨他晖∞ 睨加∞ E坩M踞叮陀∞昕弘 H;:亿M%¨∞竹他 ∞ 弱

F佗舛;2邸昭 肪柚};陀: 佗弘∞钒吼缸乏}似乱∞ 吡∞从

ODFSF901FO

00 00

9∞ ∞ ∞ 弘∞

OO

B∞ ∞ ∞ ∞ 嚣略∞

00

D∞ ∞ ∞ ∞ 晒惦∞

5 5

0^0^

图2.1 WindowsMBR结构
0ffset D

图2.2 Windows DBR结构
Offset 0 I 2 00 00 3 00 00 00 00 00 00 4 00 00 00 00 00 5 00 00 6 00 00 7 00 00 00 00 3 00 00 00 00 00 00 9^B 00 00 00 00 00 00 00 00 00 00 C


00 00

E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

F 00

0000000000
0000000010 0000000020 0000000030 0000000040

07690F4000
;07A90F4010

00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

00 00 00

00
00 00 00 00 00 00 00 00 00 00 00 00 00 00

.07AgOF4020

00

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

00
00 00

00

M叮塘M

07A90F4030 :07690F4040

00 00

00 00 00 00 00 00 00 00

00 00
00 00 00 00

00
00

00
00

00
00 00 00

0000000050 0000000060
0000000070 0000000080 0000000090 0000000060 0000000080 00000000CO

:07A90F4050
07A90F4060

00
00 00 00 00 00 00

00 00 00 00 00

00
00 OO 00

00
00 00 00 00 00 00 00 00 00

00 00 00 00 00 00 OO 00

07A90F4070 ‘07A90F4030
07A90F4090 07A90F40A0 —07A90F4080 07A90F40C0 +07A90F40D0 07A90F40ir0

00
00 00

00

00 00 00 00 00 00

00 00 00 00

00 00

00
00 00 00 00

00 00 00 00

00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00 00 00 00 00

00
00 00 00 00 00 00 00 00 00 00

00
00 00 00 00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00

00000000DO
00000000E0 00000000F0 0000000100 0000000110 0000000120 0000000130 0000000140 0000000150 0000000160 00000001 70 0000000180

07A90F401'0 ;07A90F4100
07A90F4110 ;07A90F4120 ;07A90F4130 07A90F4140 07A90F41SO

00 00 00 00

00 00

00
00

00

00

00 00 00 00

00
00

OO 00
00 00

00 00 00 00 00 00 00 00

00 00

00
00 00 00 00 00

00 00
00 00 00 00 00 00 00 00

00 00 00 00 oo 00
00 00 00 00 00 00 00 00 00 61 00 00 00 00 00 00 00 00 00 00 00 00

00 00 00 00

00
00

00 00 00

00 00 00 00 00 00 OO

00 00
00

;07A90F4160
:07A90F4170

00

00
00 00

00 00

00 00 00

00 oo

00 00

:07A90F4180∞∞00
07A90F4190 00 00 00 00

00 00 00 00 00 00 00

00∞OO
00 00 00 00 00 00

00 0D 00
00 00 00

00∞
00 00 FE

0000000190
00000001A0 0000000180 00000001C0 00000001D0 00000001EO 00000001F0

00 00 00 00 00 33 00

OO
00

00 00 00 00 00 03 00 00

;07A90F41A0 ;07A90F4180 ;07A90F41C0
07A90F41E0

00 00

00 00

00 87
00 00

00
00

00 00

00 00

FF FF
00 00 00 00

FE YF
FF 00 00 00

FF 31'00 FF^0 00 00 00

87
00

D4 DF

FE
00 00

07A90F41D0即PF 0■卵黯∞佰髓鸵%∞”驰跳铋疆腿船∞亿s{雎∞虹"阡~ ●鳙墙毪j∞ 加强他n邸∞M姚阡醅阻¨m∞叮隹j巧%叽∞M盯一 2∞嘶如£:飑叮的叽墟凹蛇¨∞髓£!弘昭罟最j器%蛇锯∞踞驼晒~ 3∞卯w的 肿M虬H蛆姐∞£l诣窖}:2仲∞ 皿m 弘∞盹n弛飓

05 FE 00 00

D4 03 00 00 00 00

B8 65 00 00

02 00 00 00 00

00



4虻卯∞M卵队们£}邸盯佗坞孔28的札∞叱”髓眈皂}丌即"阡 5∞聃两掬们的代∞嚣{宕他汀∞骀阻弛弘仡陌们∞盯诣”"

§佗踮”嚣:;佗∞M从踞叫伯皓姐船昌8∞弘丛n跖札加∞孵M们

7髓m船∞盯H俘虻加:宕髓队肌心舡”∞M虻盼肪皇j卵“肛∞5:船盯一

8∞”他M驰加孔∞们“似 K毫}∞ 舛弘孙驰~

9叮M加;2∞孤吃n们蛊i凹∞伯聃趵亿∞跎距”踞伯∞ 阽 吡∞一

^趵∞眩们队黯邸n惦“神的¨%船;宝坫弘既鲳蛞幅舛踮虻阳殂~

B”叻阳酷5:托£j从佗亿眈“仍∞蛆孔H弘伯佃"∞孤乱他M陆竹匝∞~ cK腿∞叮5}眈踞驰∞舡弘皇i孔窨}∞虻啦佗札船他∞似蛆旺四~ M旺蛊j∞¨诣昭晒孔∞%啦∞"鼹髓钮舒∞ 眈咂。 一弱∞他n珏墟孔飓“盯韶:全亿的g佰坞什∞;£船nE

E佗∞陌宅;盯仍弘皓毗蹭“坞{3昭肋弘叱n雎的蛇髓们“∞m飓陋醚

;07^90F41F0

00 00

00 00

55从

图2-3 RedhatMBR结构

图24

Redhat

DBR结构

10

四川师范大学硕士学位论文

2.2硬盘分区链表结构
Windows和Linux操作系统主分区表之间存在差异,但它们的逻辑分区表是 一致的。在Windows操作系统下,主分区表中有两个有效的分区表项,第一个分 区项为本分区的分区信息,第二个分区表项为扩展分区的分区信息。在Linux操
作系统下,前三个分区表项为boot分区、swap分区和Root分区的分区信息,第

四个分区表项为扩展分区的分区信息。逻辑分区表的第二个分区表项定义了下一 个逻辑分区的起始扇区和扇区大小以及及其它分区属性,这些用以描述分区表位 置的分区表项形成了分区链表,通过这个分区链表,就可以描述所有的分区。系 统在启动时正是按照分区链表的链接顺序查找分区,直至找出所有分区。对于不 是最后一个逻辑分区,分区表里有两个有效的分区表项,第一个分区表项为该逻 辑分区的分区信息,第二个分区表项为下一个逻辑分区的分区信息。对于最后一 个逻辑分区,分区表里只有一个有效的分区表项。即本逻辑分区的分区信息。分
区表项1 6个字节的具体含义如表2.1所示:
表2.1硬盘分区表描述 偏移
00H 01H 02H 03H





偏移
05H 06H 07H 08H’0BH





引导标志,00H:不能引导, 80H:引导。 起始磁头号H 起始扇区号S 起始柱面号C 系统标志,0BH为FAT32分

终止磁头号H 终l卜扇区号S 终止柱面号C 在线性寻址方式下的分区的扇区 起始地址 以扇区为单位的该分区的大小

04H

区,05H或者0FH为扩展分 区,07H为NTFS分区

0CH、0FH

一块20GB装有Windows xp操作系统的硬盘,分成5个分区。分区情况如图
2.5所示:

图2.5 Windows分区情况(20GB)

每个分区的分区表项具体内容如表2.2所示,Windows分区链表结构分析如
表2.3所示:
ll

plj川师范大学硕上学位论文

表2-2每个分区的分区表项 分区
C 0 80 00 00 00 00 00 00 00 00 00 1 01 00 01 00 OI 00 01 00 01 00 2 01 C1 C1 C1 CI C1 C1 C1 C1 00 3 00 FF FF FF FF FF FF FF FF 00 4 07 OF OB 05 07 05 OB 05 07 00 5 FE FE FE FE FE FE FE FE FE 00 6 FF FF FF FF FF FF FF FF FF 00 7 FF FF FF FF FF FF FF FF FF 00 8 3F 7E 3F BB 3F FA 3F 39 3F 00 9 00 04 00 2A 00 AC 00 2F 00 00 A 00 7D 00 19 00 57 00 96 00 00 B 00 00 00 01 00 01 00 01 00 00 C 3F C3 7C 3F 00 3F 00 8A 4B 00 D 04 63 2A 82 82 82 82 34 34 00 E 7D D7 19 3E 3E 3E 3E 41 41 00 F 00 01 01 00 00 00 00 00 00 00















表2.3 Windows分区链表结构分析 分


起始扇区 十六进制
0000003F

分区大小 十六进制
007D043F

十进制
63

十进制
8193087

起始扇区分析 D盘起始扇区:63+8193087=8193150 扩展分区起始扇区:8193150 未分区空间起始扇区:
8193 150+30892995=39086145





007D047E

8193150

01D763C3

30892995

0000003F D

63

01 192A7C

18426492

E盘起始扇区:
8193150+18426492+63=26619705

E盘起始扇区:
8193150+18426555=26619705 01192ABB 18426555 003E823F 4096575



F盘起始扇区:
8193150+18426555+4096575=30716280 0000003F E 63 003E8200 4096512

F盘起始扇区:
26619705+4096512+63=30716280

F盘起始扇区:
8193150+22523130=30716280 0157ACFA 22523 130 003E823F 4096575



G盘起始扇区:
8 1 93 1 50+22523 1 30+4096575=348 1 2855

12

四川师范大学硕十学位论文




起始扇区 十六进制
0000003F

分区大小 十六进制
003E8200

十进制
63

十进制
4096512

起始扇区分析 G盘起始扇区:
307 l 6280+40965 1 2+63=348 1 2855



G盘起始扇区:
01962F39 266 19705 0041348A 4273290 8193150+26619705=34812855



未分区空间起始扇区:
8193150+26619705+4273290=39086145 G 0000003F 63 004 1344B 4273227

未分区空间起始扇区:
348 l 2855+40965 12+63=39086 1 45



分析结果如图2-6所示:

C盘 0扇区819: ;150


D盘
2661 9705


E盘
3071 6280



F盘
348一 2855



G盘
390∈ 6145


主引导扇区

_

l虚拟主引导扇区l



未分区窄问起始扇区

图2--6 Windows分区链表结构分析

一块160GB的装有Redhat

ENTERPRISE 12.0

Linux操作系统的硬盘,分成8

个分区,硬盘分区总体结构如图2.7所示,主分区表的结构如图2.8所示,Linux 主分区表链表结构分析如表24所示:
蓑示boot分区表示一q分区表示矗oot分区寰示ho-?分区衰示t-p分区 表示Ⅵr分区衰示,F分区衰示1_分区

{3∞四

;状态蠢好鳓£状瘩麟睐艇ij袄态良好湘啦

{}5∞印

‘2l惦曲

l,加“∞

『状态良好睬知分区 状态良好GI掬扮僵’状态良好保知分区}状态良好侏知分区…扶态良好昧知郴

f:22∞∞

;22∞国

:{22∞四

lll8镗锄

图2.7 Linux磁盘分区总体结构

Offset 00000001BO 00000001CO 00000001DO 00000001EO 00000001FO







4 00 7F F F F F

6 0O 0 7。0 3F 0 0 F4 90 B0 28





B D5 90 97 S E





F’ 01 00: FE: FE

O O 0 0 00 0 1 0 0 83 41 F4 82

94 D5 0 7 00 O0

0 O 80 0 O 00 0 0 00 0 2 00

FF F F 83 FF F F 05

2 0^6 0 1 D4 03

0∞孢弛飓盹

F F

0∞:2盯

AO 8 7

^钮脑比阳殂

03

c∞他蛆皇j∞

0E

55从i

图2-8 Linux主分区表

四川师范人学硕士学位论文

表2.4 Linux主分区表链表结构分析 起始扇区 十八进制
0000003F

分区大小 十八进制
007A9085

十进制
63

十进制
8032437

起始扇区分析 Swap分区起始扇区:63+8032437=8032500 Swap分区起始扇区:8032500 Root分区起始扇区:
8032500+I 1245500=19278000

007A90F4

8032500

OOAB97BC

1 1245500

Root分区起始扇区:19278000
01262880 19278000 02AE5EF0 44982000

扩展分区起始扇区:
19278000+44982000=64260000

扩展分区起始扇区:64260000
03D487A0 64260000 0ECD032 1 2483 16705

未分区空间起始扇区:
64260000+2483 1 6705=3 1 2576705

2.3 W i

ndows文件系统数据存储结构

微软的文件系统主要有FAT和NTFS,FAT文件系统有FATl2、FATl6、FAT32 三种类型。因为FATl2,FATl6文件系统不支持大于2GB的分区,而FAT32文
件系统能够支持大于2GB的分区,所以,在FAT文件系统中,FAT32文件系统

是目前使用得最多的一种文件系统,而其它两种文件系统很少使用。FAT32文件
系统可以支持的单个文件大小可达到4GB。 NTFS是“新技术文件系统’’的英文缩写。NTFS文件系统是随着WindowsNT

操作系统而产生的,并随着Windows NT 4.0跨入主力分区格式的行列,它的优点
是安全性和稳定性极其出色,在使用中不易产生碎片,同时它还提供了容错结构

日志。NTFS可以支持的文件大小可以达到64GB,远远大于FAT32下的4GB。

2.3.1

FAT32文件系统结构

FAT32文件系统的总体结构如表2.5所示:

14

四川师范大学硕士学位论文

表2.5 FAT32文件系统的总体结构 名
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18



备 占用1个扇区空间 占用62个扇区空间 占用1个扇区空间



主引导扇区 保留扇区 第1个分区的引导扇区 保留扇区 第1个分区的FATl 第1个分区的FAT2 第1个分区的根目录区 第1个分区的数据区 保留扇区 扩展土引导扇区 保留扇区 第2个分区的引导扇区 保留扇区 第2个分区的FATl 第2个分区的FAT2 第2个分区的根目录区 第2个分区的数据区 保留扇区

一般占用32个扇区空间 占用空间由磁盘大小和FAT类型决定 大小同FATl

占63个扇『又‘空间 只有存在扩展分区时该扇区才存在 占62个扇阪窄间 只有第2个分区时该扇区才存在

占63个扇区空间

2.3.1.1

FAT32引导扇区

引导扇区是系统格式化分区时产生的,其中偏移OOH~23H为BPB(BIOS参

数块)参数信息,偏移24H~59H为FAT32区段,偏移1FEH~1FFH为结束标志,
标志值为55H AAH,引导扇区在系统引导时起着非常重要的作用。

2.3.1.2磁盘文件分配表(FAT) 簇是文件数据区被划分成的具有大小相等的区域,用于磁盘文件的计量分配
15

四川师范人学硕十学位论文

单位。一般情况下,FAT32中每簇为4KB(占8个扇区),FAT区中被逻辑地划 分成若干FAT项,每个FAT项有一个逻辑编号,FAT32结构的分区中每个FAT 项占用32位,这个编号对应了数据区中的若干个簇,系统在建立文件时,在目 录项目中的特定位置记录了FAT链的首簇号,在FAT区中该簇对应的FAT项中 记录着该文件占用的下一个簇的簇号,在该簇对应的FAT项中又记录着该文件占 用的下一个簇的簇号,一直到下一个簇号对应的FAT项中的内容是特定的结束标 志为止,这个FAT链才算结束。它以FSH FFH
2.3.1.3目录项结构
FFH

0FH开始FAT表。

根目录区,又称ROOT区,紧跟在FAT2的下一个扇区,长度为32个扇区, 根目录区有许多目录项(FDT,文件目录表),目录项并非根目录才有,在磁盘数 据区中一样有目录项,根目录是许多这样的目录项的集合。Windows系统采用的
是树型目录结构,从某个盘符的根目录开始。在FATl6系统下的文件名最多只能

有8个字符(或4个汉字),扩展名最多有3个字符,不能用一些特殊字符等。
那么FAT32如何解决长文件名的,下面通过一个例子加以说明。 创建一个名为yingpangeshihuashujuhuifujishuyanjiuyushixian20090305.txt的文

件,通过Winl-Iex观察其目录,发现该文件的目录项在磁盘中占用了6个以32B
为单位的目录项。如图2-9所示:

图2-9一个长文件名的目录项

其中前5个目录小项用来描述长文件名,最后】个目录项是该长文件名的短
文件名的兼容项,也就是说每个FAT32的长文件名在它的长文件名目录项结束后 都会紧接一个短文件名兼容项。长文件名目录小项结构如表2-8所示:

16

四川师范大学硕f:学位论文

表2-6长文件名目录小项结构 偏移 字节(B) 数据含义 长文件目录小项的序号;其中B6为1表示此项为最后一个目录 小项,B0、B5表示此长文件名的目录小项的序号。如果此长文件
00H 1

名描述目录项只用到了1个目录项,则此值为41H,如果此值为 E5H,代表此文件已被删除。
01H OBH 0CH 0DH 0EH 1AH 1CH 10 1 1 1 12 2 4

存放Unicode编码的长文件名 其值总为0FH,长文件名目录项标志 种类 校验和,同一个长文件目录的不同目录项中,该值总是相同的 存放Unicode编码的长文件名 其值总为00H
00It

存放Unicode编码的长文件名

如果文件名的ASCII码在一个目录项还未写完,则会接到下一个目录项中同 样的位置继续写;如果已经写完,则系统会在最后一个ASCII码后写00H,最多
写3个00H;如果3个00H写完后,目录项还有空余位置,则系统会把这些位置 全部写上FFH。 长文件名的目录小项的排列顺序为倒序,即长文件名最后一个目录小项在扇

区的低字节处,长文件名第一个目录小项在扇区的高字节处。文件名最长不能超
过255个字符,每一个字符按照Unicode编码进行存储。Windows系统使用的是 树型目录结构,下面举例说明FAT32下树型目录结构的实现: 假设在I盘根目录中有一个TYH文件夹,在这个文件夹中有一个名为

TⅦ1.txt文件和TYH的文件夹。在这个TYH子目录中又有一个名为TYH2.tat 文件。根目录中TⅧ的目录项如图2.10所示:
其中属性字段为10H,05位为1,表示子目录,偏移14H~15H文件起始蔟号
高16位为00H 00H,偏移1AH~1BH文件起始蔟号低16位为03H 00H,也就是

文件起始蔟号为00000003H,即第3蔟,然后转到第3簇,就会看到根目录下的子 目录TYH中的目录项了,如图2.11所示:
17

网川师范人学硕士学位论文

TYHl.txt中文件属性是20H,B5位为l,为归档文件,而TYH中属性字段 为10H,134位为1,表示子目录,偏移14H~15H文件起始蔟号高16位为00H
00H,

偏移1AH~1BH文件起始蔟号低16位为05H 00H,也就是文件起始蔟号为 00000005H,即第5蔟,然后转到第5簇,就会看到子目录TYH下的文件TYH2.txt 的目录项了,如图2.12所示:

TYH2.txt中文件属性是20H,06位为1,为归档文件,偏移14H~15H文件 起始蔟号高16位为00H 00H,偏移1AH~1BH文件起始蔟号低16位为06H
00H,

也就是文件起始蔟号为00000006H,即第6蔟,然后转到第6簇,就到TYH2.txt
的数据区了,如图2.13所示:

£…Offs*t
{000FB000 {000FB010











4 20


20



7多9
20 20


20






28



54 59 413

48 20

20 20

10 00

72^4订H

F..。二j亟●._.
..(r【 KTK7..g

37 4B 37

00 00 73 M

4B 37 03 00 00 00 oo 00

7……

图2.10目录TYH目录项
offset 6 7


54

9 58







000FB440 000FB450
000FB460

20 20
20 20

38 72 A4
00

眦n盯.srr
K7K7..涛J7..0…
兀1I
K7K7..s ..Rr[

。£l鞫i 2。.1

9c^D“37 0阻驻孔强 ●的卯的盯 2昭蛆驵啦 3孔研∞贸 4加∞ ∞ 5加∞ ∞ 73 A4
20 20 4B 37

00 00
00 00

52 72 A4

000FB470

^驰叫∞晒

B加∞均∞

e加∞ ∞

00

7……

图2.11子目录TYH目录项
!Offset ’~

一…”’~“+~”——。…一一一‘——
0 i













000FBC40

54

59

48

32 20 37 00

20 00

20

20

oooFBC50

o 37 4B

AF^D

9 A B C D~E 58 54 20 10 62 72^4 4A 37 06 00 48 00 00 00 54



F—■囊点j二0…。
1Ⅵ瑶n(r.brl
KTK7..J7..H.,

图2.12文件TYH2.tXt 目录项
Offset 000FC000 000FC010 000FC020 000FC030 000FC040 000FC050 0 —7 1~3 ~6 aD n


6 6 6 4—1 73 6 aD 0





7 73








6D一6





—■一釉l





66 61

73 7 3

64 7 3

7 3 64

貉ffafasssdsffsc
£..sf4ssf..Sa££t

6 4 7 3 73 73 66 6

66 aD 0A 73 66 6 4 7 3 0D 64 6 6 7 3 6 6 0O 0O 00 00 0O O 0 O 0 0 0

66 6 6 64 66 7 3 64 73 6 6 64 00 0 0 00

6 6 6 2—6^4 7 O

s扎.Sfdfds..fs<
fsdsaf..afg£把f‘

6 4 7 3 6 6^4 6 6 a D a 7 3 6 4 6 6 6 6 6 6 64^4

..gdfff也…….

m∞祁∞∞∞

0 3^0 0 0 0 0 O 0 0 0 0 O 00

C。%钮睢叫∞

0O O O 00

图2.13文件TyH2.txt数据区

2.3.2

NTFS文件系统结构

当用户将硬盘的一个分区格式化为NTFS分区时,就建立了一个NTFS文件 系统结构。NTFS文件系统与其他的文件系统一样,也是以簇为基本单位对磁盘 空间和文件存储进行管理的。NTFS文件系统是以卷为基础的,而卷是建立在磁
18

四川师范大学硕十学位论文

盘分区上的。NTFS分区也被称为NTFS卷,卷上簇的大小,又称为卷因子,簇 的大小一定是扇区大小的整数倍。当用户将一个分区格式化为NTFS分区时,就 建立了一个NTFS卷。能最大限度地优化系统对文件的访问速度和最大限度地减
少磁盘空间的浪费是确定簇大小的主要因素。

NTFS文件系统使用逻辑簇号(Logical

Cluser

Number,LCN)和虚拟蔟号

(xrLraJal Cluster Number,VCN)对卷进行管理。其中LCN是对卷的第1个蔟到

最后一个簇进行编号,只要知道LCN号和簇的大小及NTFS卷在物理磁盘中的起

始扇区(绝对扇区)就可以对对簇进行定位,而这些信息在NTFS卷的引导扇区 中可以找到(BPB参数),找到簇在磁盘的物理位置的计算公式是: 每簇扇区数枣簇号+卷的隐含扇区数(卷之前的扇区总数)=簇的绝对扇区号Il NTFS文件系统的总体结构如图2.14所示:
2J

图2.14 NTFS文件系统总体结构

2.3.2.1

NTFS引导扇区

NTFS分区的引导扇区位于BOOT区的第一个扇区,它在操作系统的引导过 程中起着非常重要的作用。它和FAT32分区的结构类似,也包括跳转指令、OEM
版本号、BPB参数、引导代码和结束标志。BPB参数从偏移0BH开始,到偏移

53H结束,记录着NTFS分区的许多重要信息。
2.3.2.2

NTFS主控文件表与元数据文件

主控文件表(MFT)是NTFS卷结构的核心,系统通过MFT确定文件在磁 盘上的位置以及文件的所有属性。MFT是一个与文件相对应的文件属性数据库, 它记录了除文件数据外的所有属性,甚至有些小文件的数据本身也包含在MFT 当中。在NTFS分区中每个文件至少有一个MFT。
19

主控文件表(MFT)由2部

网川师范大学硕士学位论文

分构成,~部分是主控文件表头,又称为文件记录头;另一部分是属性列表,MFT
头结构如表2.7所示:

MFT是以文件数组来实现的,每个文件记录占用两个扇区。文件记录在MFT 文件记录数组中物理上是连续的,从0开始编号。为了保证其连续性,在它周围 保留了一个缓冲区,这个缓冲区的大小是可调的,可以是磁盘空间的12.5%、25%、 37.5%或50%。每当其余空间变满时,缓冲区大小减半。
表2.7 MFT头结构 偏移
00H 04H 06H 08H 10H 12H 】4H

长度(B)


含 MFT标志,一定为FILE 更新序列号(Update
Sequence



2 2 8 2 2 2

Number,USN)的偏移

更新序列号的人小与数组,包括第一个字节 日志文件序列号(SLog File
Sequence Number,LSN)

序列号(Sequence Number,SN) 硬链接数(Hard Link Count)即有多少个目录指向该文件 第一个属性的偏移地址 标志(Flags),00H表示文件被删除,01H表示记录正在

16H



使用,02H表示该记录为目录
18H lCH 20H 28H 2AH 2CH


记录头和属性的总长度,即文件记录的实际长度 总共分配给记录的长度 基本文件记录中的文件索引号 下一属性lD Windows XP中使用,边界 WindowsXP中使用,MFT记录编号(从0号开始)

4 8 2 2 4

MFT区域的前16个文件属于系统文件,也称为元文件,用来存放系统的元
数据。这16个文件是NTFS文件系统中唯一在MFT表中具有固定地址的文件。

元数据文件及它们的作用如表2.8所示。

四川师范人学硕上学位论文

表2-8 NTFS元数据文件列表 序号
O 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

元数据文件
¥MFT ¥MFTMin" ¥LogFile ¥Volume ¥AttrDef ¥Root ¥Bitmap ¥Boot
¥BadClus





主控文件表本身,是每个文件的索引 主控文件表的部分镜像 事物型日志文件 卷文件,记录序列号、开发时间等 属性定义列表文件 根目录 位图文件,记录分区中簇的使用情况 引导文件,记录用于系统引导的数据情况 坏簇列表文件 安全文件 大小写字符转换表文件 扩展元数据日录 重解析点文件 加密日志文件 配额管理文件 对象ID文件

¥Secure ¥UpCase ¥Extend me.dam directory ¥ExtendkSReparse ¥Extend\¥UsnJrnl ¥ExtendkSQIuota

¥Extend\¥Obj lD

2.3.2.3

NTFS文件属性

每个文件记录中都有多个属性,它们相对独立,各自有各自的类型和名称,
从一个属性的偏移OOH~03H处的4个字节,为该属性的类型标志,不同的属性

其结构和含义各不相同。
每一个属性可以分为两个部分:属性头和属性值。另外属性还有常驻与非常

驻之分,当一个文件很小时,其所有属性都放在MFT的文件记录中,该属性就 称为常驻属性。标准信息属性和根索引总是常驻属性。 如果一个属性的属性值太大而不能存放在只有1KB大小的MFT文件记录中, 那么,系统将从MFT之外为之分配区域。这些区域通常称为Data Run,他们用 来存储属性值。如果属性值是不连续的,NTFS将会分配多个Data Run,以便用 来管理不连续的数据。这种将属性值存储在Data Run中而不是在MFT文件记录
2l

四川师范火学硕士学位论文

中的属性称为非常驻属性。

在格式化数据恢复中,10H(标准信息)属性、30H(文件名)属性、80H(数
据)属性起着非常重要的作用,下面以这3个属性的属性值为例来对属性值进行分 析。

(1)10H(标准信息)属性的属性值 标准信息属性记录着该文件的一些基本信息,如文件的创建时间、最后修改 时间、硬链接数,该属性是常驻的。属性值的含义如表2-9所示:
表2-9 10H(标准信息)属性值的含义 偏移 长度(B) 操作系统 属性头
00H 08H 10H 18H 20H 24H 28H 2CH 8 8 8 8






文件创建时间 文件最后修改时间 MFT修改时间 文件最后访问时间 传统文件属性 最大版本数:为0表示版本没有 版本数:如果偏移24H处为0则此处也为0 分类ID(一个双向的类索引) 所有者lD:表示文件的所有者,是访问文件

4 4


30H



Windows

2000

配额¥Quota中¥O和¥Q索引的关键字,为0表示 没有设置配额 安全ID:文件¥Secure中¥Sll索引和¥SDS数据

34H



Windows 2000

流的关键字,不要与安全标识相混淆


38H

Windows

配额管理:配额占用情况,它是文件所有流所
2000

,与用的总字节数,为0表示未使用磁盘配额 偏移 长度(B) 操作系统 描 述

更新序列号(USN):文件最后的更新序列号,
40H 8

Windows

2000

它是进入元数据文ft|:¥UsnJml直接的索引,如 果为0,表示没有USN日志

pnq川师范大学硕上学位论文

(2)30H(文件名)属性的属性值
文件名且P¥FILE NAME属性,该属性用于存储文件名,总是常驻属性。30H (文件名)属性值的含义如表2.10所示,
表2.10 30H(文件名)属性值的含义 偏移 大小(B) 属性头
00H 08H 10H 18H 20H 28H 30H 38H 3CH 40H 41H 42H 8 8 8 8 8 8 8 4






父目录的文件参考号 文件创建时间 文件修改时间 MFT修改时间 文件最后访问时间 文件分配大小 文件实际大小 标志,如目录、压缩、隐藏等 EAs(扩展属性)和Reparse(重解析点)使用 文件名长度(字符数L) 文件命名空间(Filename Namespace) Unicode码记录的文件名

L L 2L

在文件名中都有一个标志指出这个文件的文件名属于哪一种名字空间,可能
的文件命名空间如下f13】: 1)该字节值为0:POSIX 允许除空字符(00H)和“/’’以外所有的Unicode字符集。


2)该字节值为l:Win32 Win32是POSIX命名空间的一个子集,它使用除‘‘’’?/:<>?I"之外的所有 Unicode字符集。
.3)该字节值为2:DOS

DOS是Win32命名空间的一个子集,只允许用大写字符,不能用空格,而且 排除‘‘’’木+,/:;<.>?I"等作为文件名,其文件名一定是l~8个字符的文件名,
然后是~个点“.",最后是0 ̄3个字符的扩展名。

四川师范大学硕上学位论文

3)该字节值为3:Win32&DOS 表示Win32和DOS文件名都是一样的(也就是说该文件只有一个符合DOS

命名方式的文件名),因此这种文件名只有这一个文件名记录。
为了兼容旧的文件系统,NTFS系统分配了一个短的DOS兼容文件名给每个

具有非DOS兼容文件名的文件。下面通过一个例子加以说明。
创建一个名为yingpangeshihuashujuhuifujishuyanjiuyushixian20090305.txt的文

件,通过WinHex观察其DOS兼容文件名和Win32文件名,如图2.14所示:
Offset 0(70008C80 0C0008C90 0 l 2 3








8 00 30 5A 3c 3c 00















00 00 00 00 4 00 0 69 5 12 0 02

00 00 00 00 00 00 00 oo 4D 77 00 00

10 Ol 00 00

00 00 00 00

00 00 00 00 00 00 6F 22 6F 22 20 00 00 00 68

00 00 00 78 00 18

00 00 00 00 00 00 00 01 00 01 01

0(7000跏

………0..1…
S…….<。’旃盼
.ilw注7(o”l套b々

……..Z……。

0C0008CBO OC0008CC0 0(70008cD0 0C0008(=E0 OC0008cF0 OC0008D00 OC0008D10 0(70008D20 OC00081)30 OC00081)40 0c0008D50 0C0008D60 OC0008D70 OC0008D80 OC0008D90 OC0008B^0 0(70008DB0 0(70008Dc0 OC0008DD0 0(70008DE0

78 E7|112 e9 78 E7 A2 C9 00 00 00 00 00 75

C舒 22 78

00 00 00 00 00 00 5l 00

<o’x纰?…….
々………….
..7.I.N.G.P.点_t

∞町酊∞ ∞舵舵∞ ∞∞∞∞ ∞以m∞

20

00

l…T.墨T.h‰&

0…7……….
<o’x纰7.ilW注’

00 00 {m 22

00 00

o嘎 00 0i 01

?……¥…….

77 D7 A2 C9 78 E7 A2 C9 00 00 00 69 00 73 00 T5 00 6A 6A 00 78

‘o。战々<o”x纰?
g.p.也rL

M∞∞∞ ∞印研幻 ∞拢娩∞ ∞他%∞ 擂耵酊∞ ∞舷地∞ m∞∞∞ ∞以以∞
00 00 00 00 OO OO 00 70 00 61 68 00 68 00 75 00 75 79 00 75 6E 00 32 35 00 2E 00 00 48 00 00 00 00 00 6E 00 61 00 69 00 00 73 00 00

键∞∞%
67 73 66 6l 68 78 01

00 79 65 68 75 69

00 00 00 00 6E 00 00 68 00 00 6A 00 00 69 00 00 69 00 00 69 00 33 00 00 00 00 04 00

…….々……
…….9.y.i.札
g.e.s.|L i.h LLa

75 00

00 68

00 79

6E 00

s.1Luj. uhui.£tLj.i. s.b-lL y.扎rLj.i.
u弘u s.b-i.“i. &札2-o.0.9.0.3.

30∞30

39∞30 ∞ 舒心照∞ ∞ ∞ ∞
74 00 00 00

00 74

00100 00

0。5.…t五t…..
g-..IL……….

00 00

图2.14 DOS兼容文件名和Win32文件名属性

通过观察图2.14,发现DOS文件名长度有OCH个字符长,文件名为 YINGPA-1.TXT,而Win32文件名长度有39H个字符长,文件名为
yingpangeshihuashujuhuifujishuyanjiuyushixian20090305.txt,DOS兼容文件名的命

名空间值为02H,Win32文件名的命名空间值为01H,Win32文件名属性紧接在
DOS兼容文件名属性的后面。

(3)常驻80H(数据)属性的属性值
数据属性即¥DAl除属性,该属性存放着文件的数据,该属性没有最大最小限

制,最小情况是该属性为常驻属性,可以不占用文件记录以外的空间。常驻80H
(数据)属性的例子如图2.15所示:

24

四川I师范大学硕士学位论文

0i:fset 0C0002880 0C00028C0 0C00028D0 0C00028EO 0C00028F0 OC0002900 0C000291 0 0C0002920 0C0002930 0C0002940 0C0002950 0C0002960 0C0002970 0C0002980 0C0002990

0 1 2 3 4 5 6 7 8 9^B C D E F 05 00 00 00 00 00 05∞筠E5 8^3A E3 2^c9 01, 36 E5鼢 3^E3 2^ C9匿悻皿E5 8^3A E3 2^C9 Ol

36 E5 8^ 3^E3 2^
00 07 00 02 0HD 00 55 00 00 03 2唾 00

c9柄。÷万oo
OO

OO

02 00 00 00 00 00 06 00 00∞∞00 00 00
43 01 00 6l 00 40 00 00 73 00 00 OO 65 00 01

70 00

客0 00 00 OO 48 00 00 00

o--Cl

QQ QQ 111F 00 00 00 00 00 00 00 00 00 00 OO 00 00 00 00 02 00 00 00 00 0
00 02 20 00 00 5D 92 01 00 00 00 00 E0 02 00 00 00 00 02 00 00 00 00 00 00 00:

D2盟

00∞}FF阡FF阡oo
3c 77 00 00 BE 04 3E 00 32 05 15 20 00 00

25^F 00 00

47{
00}
00

00
00 00

000l属荏值0000
00 00



0000

0000 00

4080 00

0000 00

0000 00

M∞叮" 吡吆∞∞ ∞∞的∞ ∞∞∞∞

00}
00

00

唾0 00 00

图2.15常驻80H (数据)属性的属性值

(4)非常驻80H(数据)属性的属性值

非常驻数据属性,由Data Run来记录其属性值即文件数据的具体位置。非常
驻80H(数据)属性的例子如图2.16所示:
Data

Run中的数据是一个压缩的数据,图2.20所示的例子此处的十六进制值
04H,32H表示Data Run所占用的簇数在该压缩数据中

为32H

70H 0DH 00H 00H

占用2个字节,值为0DTOH;Dam Run的起始簇号在这个压缩数据中占用3个

字节,值为040000H。这个压缩数据表示的是该文件的数据流在磁盘占用的位置
从簇号为040000H的簇开始的连续的OD70H个簇。
Offset 5D2E53080 5D2E530c0 0 1 2 3 4

O5

O0 O 0 O O OO

6 5 7 0 0 5 oo 3 C8

















96强97

79 70 73 c8 0l

9 6 FA 9 T 7 9 7 O
OO 4O O O
— 一

51)2E530D0

9 6 FA 9 7 7 9 7 O O了7 3 C8

5D盟530E0
5D2E530F0

9007 7009 0070 7003 C008 0001 O O O O 0 O O O oo I 06 00 oo 00 00 00 00 oo 00 54 00 OO 00 00 OO 00 OO — — —
01 00 40 00 00 oo 01

属芒头F4Ao

5D2E531 00

O一8 4—0 0—0 3—0 2—0 4—0 O—O O一0 4—4 D一8 O一0 0—0 4—0 6—0 00
0O O0 00 OO 00 00 00

ooi
00 00 00 00

5£『缆53110
5D2E53120
5D2E531 30 5D2E531 40 5D2E53150

00|同r叩飞矿顶几而可矿丽1网
00 00 D7 00 00 00 00 00 00 00 00 00

Q!嫂里!塑嫂塑
32 70 oD 00 00 04

00 00

塑旦!Q望QQ塑
00 00 00 00 00 00 48 00 00 00

00
OO

砸■∞T00
00 00 00,B8

5D雹53160
5D2E531 70 5I)2E53180 5D2E53190

I 40 00 oo 00 OO 00 00 00
06 00 00 00 00 oo 00 00 00 00 00 00 00

∞∞船盯 ∞加%盯 ∞抛盯

I协” ∞胁∞

oo属性值01 F1r胛03
∞∞∞∞
00 00 40 00 00 00 00

图2.16非常驻80H (数据)属性的属性值

2.4 L i

flUX文件系统数据存储结构

四川师范人学硕上学位论文

——————_.———一整个磁盘——————卜————一

7I

// \
//一
MBR

l—\一\
根目录

引导块

超级块

自由空间

i节点表

文件和目录

引导程序可以被安装到其他位置。 (如果引导程序小在MBR,贝fJBIOS通过MBR:去找启动分区)

图2.17 Linux文件系统结构

Linux中的文件系统相当于DOS中的分区。一个独立的文件系统拥有独立的

文件表(i.节点表),一个磁盘中,可以分割成一个以上的文件系统。但在逻辑上 而言,在一个UNIX系统中,仅有一个文件系统,即一个Linux操作系统中仅有 一个“根目录",一切文件结构均依此根目录,向下发展。Linux文件系统结构如
图2.17所示1141。

2.4.1引导块(Boot BIock) 引导块位于文件卷最开始的第~扇区。这512B是文件系统的引导代码,为 根文件系统所持有,其它文件系统这512B为空。

2.4.2超级块(Super BIock)

一个文件系统总是由它的超级块来定义的,所以创建文件系统的同时超级块
也被创建。它包含了文件系统的一些基本参数,如文件系统的数据块(Data Blocks)

数和最大文件数等。超级块中包含了一些临界数据,以便于进行灾难性的恢复。 默认的超级块总是固定地位于文件系统文件系统所在磁盘分区的开始处。超级块
还有~个备份叫做冗余超级块,就像DOS中的文件分配表的副本。冗余超级块

和默认的超级块不一样,它被分散地保存在磁盘分区上。 超级块位于文件系统第二扇区,紧跟引导块之后,用于描述文件系统的结构。 如i.节点长度、文件系统大小等,其结构存放于/usr/include/filsys.h中,具体结构
如下[15】:
26

四川师范火学硕}学位论文

structfilsys


ushort


isize;净磁盘索弓|节点区瞬占用的数据块数’} s少ize;净整个文件系统的数据块数粤}
nfree;净在空闲块登录表中当前登记的空闲块数g’,


daddr t short


daddr__t short
ino—t


free[NICFREE];净空闲块登记表鼻I

ninode:净空闲索弓l节点数★? inode[NICINOD];净空闲节点登记表★}



char char char char time short



floc砑净加锁标志位★f ilock;净节点加锁标志位★} fmod:净超级块修改标志’f time;净超级块上次修改的时间懈}





sronly;净文件系统只读标志’f
tS

sdinfo[4];/嚆设备信融}
tS

daddr
ino t S

ffree;净空闲块总数|f

tinode;净空阕节点总数★l

char char

s_fnamel61:p文件系统名称唾,
s_.fpack[6];

long s

till[131:净填空位|}

long s_magic;净指示文件系统的幻数★f long s_type;净颓文件系统类銎jI|

}:

2,4.3

i节点表

i节点表存放在超级块之后,其长度是由超级块中的S isize字段决定的,其 作用是用来描述文件的属性、长度、属主、属组、数据块表等,其数据结构在
/usr/include/sys/ino.h中,如下【13】:
struct dinode


ushort di modg;
27

四川师范人学硕十学位论文

short di_nlink; ushort di uid; ushort di__gid,"

ofi



di_size;

char

di_addr[40]i

time r di_atime,"

timer di mtime;
time tdi ctime;

2.4.4目录结构

UNIX所有文件均存放于目录中,目录本身也是一个文件。目录存放文件的 机制如下:首先,目录文件本身也象普通文件一样,占用一个索引节点,其次, 由这个索引节点得到目录内容的存放位置,再次,从其内容中取出一个个的文件
名和它对应的节点号,从而访问一个文件。目录结构如下113J:

索引节点号(2字钧.(本8录)(14字韵 索引节点号(2字韵..(父g录)(14字韵 索引节点号(2字前文件名(14字韵 索引节点号(2字韵文件名(14字韵 索引节点号(2字韵文件名(14字韵
由上可知文件名是依靠目录来描述的,文件的内容和其他信息则由索引节点 来描述。 Linux是以文件卷作为其文件系统存储格式的,而不同的Linux系统,文件 卷格式是有差异的,甚至同一Linux操作系统的不同版本,其文件系统未必相同。 虚拟文件系统(VFS:Virtual
File

System)使得Linux可以支持多个不同的

文件系统。Linux的虚拟文件系统允许用户同时能透明地安装许多不同的文件系 统。虚拟文件系统是为Linux用户提供快速且高效的文件访问服务而设计的。 目前Linux系统核心可以支持十多种文件系统类型:JFS、
ReiserFS、ext、

ext2、ext3、IS09660、XFS、Minx、MSDOS、UMSDOS、VFⅪ、NTFS、HPFS、
NFS、SMB、SysV、PROC等。但不管其文件系统有多大差异,只要是Linux系
28

plj川师范大学硕士学位论文

统,其文件卷的基本结构是一致的,而各个文件系统存在的差异并不影响其数据
恢复的策略。

2.5小结
本章首先结合实例详细分析了Windows和Linux分区链表结构,然后深入剖 析了Windows文件系统的数据存储结构,包括FAT32目录项结构的分析、FAT32 长文件名的分析、NTFS长文件名的分析和NTFS文件属性的分析等,最后阐述
了Linux文件系统数据存储结构。

四川师范大学硕十学位论文

第三章分区表恢复方案设计与实现
无论是Windows操作系统还是Linux操作系统,硬盘分区表对于计算机系统
都十分重要,它是支持硬盘正常工作的骨架。分区表内有每个分区的起始扇区、

结束扇区、硬盘分区大小以及分区格式等重要信息。操作系统正是通过分区表把 硬盘划分为若干个分区,然后在每个分区内创建文件系统。一旦由于病毒感染、
错误操作或者其它意外情况导致分区表被破坏,系统就会因此而无法识别分区,

从而造成计算机无法进入操作系统或某些盘符的丢失,甚至造成整个硬盘数据的
丢失,因此及时地恢复被破坏的分区表就显得尤为重要。

由此可见,分区表在计算机系统中扮演着非常重要的角色,分区表的恢复在
硬盘格式化数据的恢复中起着非常重要的作用。 因为Windows和Linux操作系统逻辑分区表是一致的,而主分区表之间的差

异仅在于分区表项的数量不相同,所以它们分区表的实现方法基本相同。 目前,Windows操作系统在个人桌面系统中占有很大分量。它的友好的界面 深受大家欢迎,但有时候需要恢复Windows下不能识别的文件系统,如EXT3文 件系统,如何在友好的Windows界面下实现Linux文件系统的数据恢复。实际上
可以搜索分区表,从而确定Linux分区的位置,进而恢复Linux的分区。因为

Window操作系统和Linux操作系统分区表的格式基本是一致的,从而能够在 Windows操作系统环境中,确定Linux操作系统的分区情况。

3.1分区表恢复方案设计
本文经过对硬盘分区链表结构的分析,结合文献16,提出了一套较为全面的 恢复分区表的规则,可以按照这些规则搜索每个分区结点所在的物理扇区号,并
通过每个分区结点所在的物理扇区号,实现分区表的恢复。恢复分区表的规则如 下:

(1)任何一分区的引导扇区位于该分区的逻辑O扇区,也位于该分区中主
引导扇区(对于基本分区来说)的逻辑63扇区或者是虚拟主引导扇区(对于扩展分 区来说)的逻辑63扇区。 (2)任何一分区所占用的扇区数,如果是FAT32分区,在其所对应的逻辑零

扇区的偏移地址20H都有备份,如果是NTFS分区,在其所对应的逻辑零扇区的 偏移地址28H都有备份,即对结点分区信息中的前一表项的第二个数据项进行的
30

四川师范人学硕J:学位论文

备份【16】; (3)扩展分区的起始扇区号,即第一个虚拟引导扇区所在的物理扇区号为

每一结点逻辑分区信息后一分区表项第一个数据项与该扇区号之和减去该结点
逻辑分区信息前一分区表项的两个数据项之和; (4)每一结点分区信息中前一分区表项中的隐含扇区数为0000003FH,后一

分区表项中的隐含扇区数分为两种情况:在扩展分区中该部分内容为活动分区大
小加上隐含的63个扇区;在逻辑分区中该部分内容为前一结点信息中后一表项

的两个数据项之和【1卅; (5)下一个结点虚拟引导扇区所在的物理扇区号为该结点分区信息中的前
一表项的两个数据项之和再加上扩展分区的起始扇区号;

(6)下下一个结点虚拟引导扇区所在的物理扇区号为该结点分区信息中的 后一表项的两个数据项之和再加上扩展分区的起始扇区号; (7)每一结点逻辑分区信息后一分区表项的最后四个字节内容为下一结点前
一分区表项的隐含扇区数与该分区所占扇区数之和【161;

(8)倒数第二个结点分区信息中的后一表项的两个数据项之和等于扩展分区
所占用的总扇区数【161;

(9)未分区空间的起始扇区号等于主引导扇区分区信息中的后一表项的两 个数据项的和或等于最后一个结点分区信息中的前一表项的两个数据项的和再 加上此结点所在的物理扇区号或者为最后一个结点分区信息中的前一表项的两
个数据项之和再加上扩展分区的起始扇区号; (10)对于FAT32分区,主分区信息表中类型标志分别为0BH和0FH,在后

续逻辑分区信息表中分别为0BH和05H;(针对FAT32位),对于NTFS分区,主 分区信息表中类型标志分别为07H和0FH,在后续逻辑分区信息表中分别为07H
和05Hfl6】;

(11)任一结点逻辑分区信息所对应的逻辑零扇区的入口地址等于该逻辑分 区入口地址加上该分区所隐含的扇区数3FH/16】。

3.1.1初始化方案

一般情况下面,Windows操作系统中的MBR中的基本分区表中用到两个分 区表项。一个是基本分区的分区表项,一个是扩展分区的分区表项。而Linux操
3l

四川师范大学硕士学位论文

作系统中的MBR中的基本分区表中则用到四个分区表项。三个是基本分区的分 区表项,一个是扩展分区的分区表项。当进行初始化时,需分两种情况讨论。在 Windows操作系统中,只要获取第一个基本分区的扇区大小,就能确定扩展分区 的起始扇区号。在Linux操作系统中,只有获取三个基本分区的扇区大小,才能 确定扩展分区的起始扇区的位置。stack堆栈存放虚拟主引导扇区的物理扇区号,
start是读取扇区的物理扇区号,当0扇区(即主引导扇区)没被破坏或者63扇

区分区大小没被破坏时,就可计算出扩展分区的起始扇区号stack[1】,否则从 16065扇区开始一个一个搜索虚拟主引导扇区的位置。如果既不是Windows操作
系统,也不是Linux操作系统,则程序结束。初始化过程如图3.1所示:

图3-1初始化过程

3.1.2获得每个分区结点所在物理扇区号方案

32

四川师范人学硕上学位论文

读Start扇区

<蘧堡堡眵

匝堕


产醚型灼Y
Stan=smck[t。p-2]1
Starl--stack[top-I]


L<=盈瓤函i藕


丫N

J薷辫
、、可■
三个虚拟主引导扇区


63扇区破坏

—丁
一个虚拟主引导扇 ————————————————一
●Y

stack[top++】----Start一下一个分区的起始扇弓 +63+本分区的扇区大小

些p_2】壁塑呈≥ —、、、—,,一

stack[top++]=63+本分区的扇区大小

丫N





付展分区的起始扇区号

+St本ac分k区[to的p+扇+]区=S大ta小r什63卜.【三三三互至;j!!:三至 I’L=:::::!::::=::=:
+本分区的扇区大小

stack[top抖1=扩展分区的起始扇区号+下一
个分区的起始扇区+下一个分区的扇区大小

程序结束

图3.2获得每个分区结点所在物理扇区号方案

实际上只要确定了每个逻辑分区的虚拟主引导扇区所在的物理扇区号和未
分区空间的起始扇区号,就可确定每个分区的大小,此时可根据虚拟主引导扇区

的特点来对此扇区进行搜索,从而获得此扇区的物理扇区号。因为分区的粒度是 以一个柱面为单位,而一个柱面是63*255=16065个扇区,所以虚拟引导扇区所
在的扇区位置一定是16065个扇区的整数倍,而虚拟引导扇区的结束位置是55H

AAH,引导标志为OOH,起始磁头所在的字节为01H,此时以16065扇区为起始 扇区,16065为步长,可以搜索到此扇区的位置,即获得分区结点所在物理扇区 号,还可通过规则(2)得到分区结点所在物理扇区号,从而获得每个分区结点
33

四川师范人学硕十学位论文

所在物理扇区号。 首先读取Start扇区,判断此扇区是否是虚拟引导扇区,如果是,然后判断是
否为最后一个虚拟主引导扇区,如果是则得到非分区空间的起始扇区,程序结束。

否则如果是第一个虚拟引导扇区,则算出扩展分区的起始扇区,下一个逻辑分区
的起始扇区和下下一个逻辑分区的起始扇区(有可能是非分区空间的起始扇区)。

如果此虚拟引导扇区号是由前两个虚拟引导扇区得到,则由第二个分区表项得到
下一个分区的起始扇区号,否则此虚拟引导扇区是由前一个虚拟引导扇区得到或 者由搜索虚拟引导扇区得到,所以由此引导扇区中的分区表项得到下一个逻辑分

区的起始扇区和下下一个逻辑分区的起始扇区(有可能是非分区空间的起始扇
区)。然后转到stack[top.1】扇区,开始搜索虚拟主引导扇区。

如果Start扇区不是虚拟主引导扇区,则判断此扇区的扇区号是否为 stack[top.11扇区,如不是,则从以前得到的最后一个虚拟引导扇区号与16065的
和开始搜索虚拟主引导扇区。如果是,则判断逻辑63扇区中是否有本逻辑分区

大小的备份,如果没有,则回溯到以前得到的倒数第二个扇区号的位置。如果有
本分区大小的备份,则得到下一个分区的起始扇区号,则从下一个分区的起始扇

区开始搜索虚拟主引导扇区。获得每个分区结点所在物理扇区号方案如图3.2所
示:

3.1.3通过分区结点所在物理扇区号恢复分区表方案



首先判断是否为主引导扇区,如果是,则算出基本分区的大小,扩展分区的
起始扇区号和扩展分区的大小,如果是最后一个虚拟引导扇区,算出最后逻辑分

区的扇区大小,而下一个逻辑分区的起始扇区和扇区大小都为0;而其它虚拟主 引导扇区,则算出本逻辑分区的扇区大小,下一个逻辑分区的起始扇区号和下~ 个逻辑分区的扇区大小。而本分区的起始扇区恒为0000003FH,基本分区的激活 标志为80H,逻辑分区的激活标志为00H, NTFS分区标志为07H,FAT32分区

标志为0BH,Redhat Linux分区中交换分区的标志为82H,Redhat Linux其它分

区的标志为83H,扩展分区的分区标志为05H或0FH,Windows下基本分区的 C/H/S参数为010100H,逻辑分区的C/H/S参数为01C1FFH,扩展分区的C/H/S 参数为00C1FFH,Linux基本分区的C/H/S参数为010100H,交换分区的C/H/S
参数为0041F4H,逻辑分区的C/H/S参数为F1FFFFH,扩展分区的C/H/S参数为
34

四川师范大学硕十学位论文

F1FFFFH。此时可以利用这些参数实现分区表的完全恢复。通过分区结点所在物 理扇区号恢复分区表方案如图3.3所示:
虚拟引导扇区编号num=0,堆栈stack[top]存放
每个分区结点所在的物理扇区号,top足栈顶



五dows操作系 、—、 一,



1rY


基本分区的分区大d、=stack[0卜63 扩展分区的起始扇区=stack[0] 扩展分区的扇区大d、--stackt[top]-stack[0]



num=top

_氐
最后逻辑分区的扇区大小=stack[top]一stack[top一1]-63 下一个分区的起始扇区=0,下一个分区的扇区大小=O

基本分区I的分区大d,=stack[O卜63

程序结束
本逻辑分区的分区大小=stack[top]一stack[top-1]一63 下一个逻辑分区的嗣区大tJ、=stackIntnn+1]-start[num]

而dows操作系l

~弋厂
下一个逻辑分区的起始扇区=stack[num]-start[0] 下一个逻辑分区的起始扇区=stack[num]-start[2]

基本分区2的起始扇区为stack[0] 基本分区2的分区大tJ,=stack[1]-stack[ol

基本分区3的起始扇区为stack[1] 基本分区3的分区大tJ,=stack[2J-stack[1] 扩展分区的起始扇区=stack[2]

扩展分区的扇区大dx=stackt Etop]一stack[2]

图3—3通过分区结点所在物理扇区号恢复分区表方案

3.2分区表恢复方案实现
3.2.1初始化过程

初始化时,stack堆栈存放虚拟主引导扇区的物理扇区号,start为扫描扇区的 物理扇区号,当0扇区(即主引导扇区)或者引导扇区分区中分区所占用的扇区
35

四川师范人学硕{:学位论文

数未被破坏,就可计算出扩展分区的起始扇区号stack[O]和未分区空问的起始扇 区号,否则从16065扇区开始以一个柱面为步长逐个搜索虚拟主引导扇区的位置,
以下是初始化过程:
DWORD64 stack[3000]:ff存放每个分区结点所在物理扇区号的堆栈

讥top=off栈顶.代表矗拟主引导赢区编号


CreateFtle?f打开物理磁盘
start=O//At零霸区开始扫描

讥此扇区满足主翻导扇区条傅嫂&是Windows/钐1MBR)


根据第一个或者第二个分区表项得劲扩展分区的起始赢区号 根据第二个分区表项得翻未分区空间的起始扇区号


else讯此痢区满足主甬导痢区条件&&是Windows {

MBR)

根据第一个分区表项得蓟第二基本个分区的起始扇区号 根据第二个分区表项褥勤第三个基本分区的起始痢区号 根据第三个分区表项得翻扩襞分区的起始扇区号
根据第匹l令分区表项得劲未分区空间的起始赢区号 ,

else



SetFilePointer(start+63);f强b萌导扇区

讯此痢区满足萌导扇区条件I


if(NTFS分区)
由偏移28H开始的四个字节得翻下一个结点的物理寓区号放入堆栈
else

if(FAr32分区)

由偏移20H开始的匹个字节得韵下一个结点的物理赢区号放入堆栈 Start=stack栈项数值

36

四川师范人学硕上学位论文

else

st甜t=l∞6s:÷I如果是0和63赢区被破坏.勋从16065南区开始搜索 }

3.2.2获得每个分区结点所在物理扇区号

要获得分区结点所在的物理扇区号,可以通过上一个分区结点的信息和上上 一个分区结点的信息得到,也可通过上一个结点的逻辑63扇区(引导扇区)的 分区所占用的扇区数的备份信息得到,还可通过逐个柱面(即16065个扇区)对 虚拟主引导扇区进行搜索得到,以下是获得每个分区结点所在物理扇区号的过
程:

while(当未搜索最后一个扇区嘞
{SetFilePointer(starO;}}定位勤start扇区

嘏此赢区满足虚拟主萌导赢区条彳牛)
{嘏此南区不是最后一个虚拟主弓l导赢区l


if(J'鳓jstack为空)
{根据分区表项得到扩展分区的起始南区号放入堆栈stack 根据第一、或第二个分区表项得飘下一个结点的物理赢区号
堪(褥虱的物理扇区号未放入堆栈stack)

将此物理扇区号放入堆栈stack
根据第二个分区表项得韵未分区空间的起始痢区号 }
else

{if(start回溯缛至由 l盘第二个分区表项得勃下一个结点的物理南区号 《(褥勤的物理赢区号未放入堆栈stack) 将屹物理扇区号放入堆栈stack }
else


if(start不是回溯得至呛 将start值放入堆栈stack
37

{if(start值未放入堆栈stQck)

四川师范大学硕上学位论文

根据第一或第二个分区表项褥至q下一结点的物理赢区号
罐(得劲的物理扇区号未放入堆栈吼口ck)

将此物理扇区号放入堆栈St∞k 根据第二个分区表项褥韵下下一个缝点的物理扇区号值
寸(得虱的物理扇区号未放入堆栈髓∞k)

将屹物理痢区号放入堆栈stack
夕 } start=栈项数据 }

else讯此赢区是最后一个虚拟主弓|导痢区1


讯此扇区是第一个遵拟萌导扇区) Start为扩震扇区号.放入堆栈 根据第二个分区表项得虱未分区空阃的起始赢区 谚(得蓟的物理扇区号未放入堆栈stack)

将此物理赢区号放入J]蛾stack
else

start=栈顼数据的下一个柱恧



else承如果不是虚拟引导赢区1 {

if(start为栈硕匐


SetFilePointer(start+63);f强{l飘导扇区 嘏此扇区满足弓|导赢区条彳牛) { ifOVTFS分区) 由偏移28H处的4个字节得劲下一结点的物理南区号放入堆栈
else

If(FAT32分区、

由偏移20H:P.奎/ffJ4个字节得到下一结点的物理扇区号放入堆栈 Start=stack栈项数值 }
3R

四川师范大学硕十学位论文

else嘏堆栈中有一个以上的数褊
start=stack堆栈栈项减l的对匣的数据埘茬行回溯。
else

start=stack栈预数据的T一个柱面的囊区号


dse?f否鼬一个柱面一个柱面的开始搜索


谚(堆栈为空1
start=1 6065+1 6065木m Number; else



start=stack栈顶数心16065"m
m■tlmber++:
} 1 } j

Number;

玳未分区空间的起始赢区号大于栈顶缅
将屹物理赢区号放入堆栈

3.2.3通过分区结点所在物理扇区号恢复分区表
首先算出主引导扇区和虚拟主引导扇区的分区表项值,然后确定激活标志、

C/H/S参数、分区标志等参数,最后把这些值填入到相应的分区表项中,从而实
。现分区表的恢复。

计算主引导扇区和虚拟主引导分区表项的值的关键代码如下:
{formum=O;numr<=top;hum++)



ifmum==o)

{嘏是Windows操作系缅
{AreaSize[num]=stack[O]一63:}f基本分区扇区大小 ExtentStart[num]=stack[O]:ff扩展分区起始赢区

ExtentSize[num]--stack[toN—stack[O]:f7扩展分区扇区大小
39

四川师范大学硕上学位论文



else//,是Linux操作系统


ArealSize[numl=stack[O].63:ff基本分区l扇区大小 Area2Start[numJ=stack[O];//基本分区2起始扇区 Area2Size[num]=stack[1]-stack[O];//基本分区2癞区大小
Area3Start[numl=stack【l 1:力基本分区3起始痢区

Area3Size[numl=stack[2]-stacklll:ff基本分区3赢区大小
ExtentStart[num]=stack[2]:ff扩展分区起始嘲区
Extentsize fn¨m)=s搬ckflop】一stnckl2):力扩展分区扇区大小 Num=2;

} }
else

if(hum==top)

{AreaSize[numl=stack[num]-stackInure.11.63:?f本分区扇区大小 NextStart[num]=o;//T一分区起始赢区

NextSize[n州=0;//T~分区扇区大小

else

t AreaSize[numl=stack Inure]一stack[nu n.11—63;?i本分区扇区大小 NextSize[nurn]=stack[num+11一stack[hum];//下一分区癞区大小 ,

讯是Windows操作系缡
NextStart[numl=stack Inure]一stack∞1:??下一分区起始扇区

else//是Linux操作系统 NextStart[num]=stack[num]-stack【21:f『]‘一分区起始扇区

3.3小结
本章设计了分区表恢复的具体解决方案并实现了其方案。首先提出了一套较
40

四川师范人学硕+学位论文

为全面的恢复分区表的规则,然后介绍了分区表恢复方案的设计,包括初始化方
案、获得每个分区结点所在物理扇区号方案、通过分区结点所在物理扇区号恢复

分区表的方案的设计,最后介绍了分区表恢复方案的实现过程。

41

四川师范大学硕上学位论文

第四章W i ndows下格式化数据恢复方案设计与实现
目前,Windows操作系统在个人桌面系统中占有很大分量,而FAT32和NTFS

文件系统是Windows操作系统主要使用的文件系统,也是硬盘误格式化数据丢失 最常见的两种文件系统。本章从FAT32和NTFS下格式化数据恢复方案设计与实 现两方面来进行阐述。

4.1 W i ndows
4.1.1 W i ndows

FAT32下格式化数据,恢复方案设计与实现
FAT32下格式化数据恢复方案设计

当用户高级格式化一个FAT32卷时,格式化程序只是把其FAT与根目录区清
零,其数据区的数据是仍然存在的。要恢复它们,可以搜索该分区中的所有目录 项,根据目录项所在簇的簇号和其目录项里面的内容,比如其父目录的簇号等信 息来建立目录层次,实现格式化数据的恢复。

但如果用户低级格式化一个FAT32卷时,格式化程序在格式化时就会用某个 数字对该卷的数据区从头到尾进行填充,因此,此时就不能恢复其分区中的数据。 但在目前广泛使用的Windows操作系统中对分区进行格式化时,不管是否进行快 速格式化,都是采用的高级格式化的方法。基于此,本文提出和实现了Window FAT32下格式化数据恢复方案。文件名属性、数据属性、目录树结构对于FAT32 下格式化数据恢复至关重要,主要从这几个方面进行阐述:
4.1.1.1

FAT32下获取文件名属性和数据属性方案

根目录区,又称ROOT区,紧跟在FAT32的下一个扇区,长度为32个扇区, 根目录区有许多目录项(FDT,文件目录表),目录项并非根目录才有,在磁盘数 据区中一样有目录项;根目录是许多这样的目录项的集合。当FAT32卷被格式化 时,根目录区中的目录项被清零,但其它目录项仍然存在。目录项占32个字节, 目录项中有文件名,文件大小和文件的起始簇等信息,所以只要找到了每一个目 录项,就可以获取其文件名属性和数据属性等,FAT32下获取文件名和数据属性
方案如图4.1所示:

42

四川师范人学硕上学位论文

图4.1FAT32下获取文件名和数据属性方案

4.1.1.2获取FAT32目录区起始位置方案 其实每一个目录区的第1个和第2个目录项总是“."和“*o’’9“.”代表当前 目录;“..’’代表上级目录,其ASCII值为“2EH”和“2EH 2EH"。而FDT的文 件目录项中,第O一7字节为文件名,若有剩余字节则用空白符20H填充。所以, 目录区的第1个和第2个目录项的0—7字节总是“2EH
20H"和“2EH
2EH 20H 20H 20H 20H 20H 20H 20H 20H 20H 20H 20H

20H”。也就是,如果一个扇区是目录
20H 20H 20H 20H 20H 20H

区的起始扇区,此扇区一定满足O一7字节是“2EH
43

四川师范大学硕上学位论文

20H”,32—39字节是“2EH

2EH 20H 20H 20H 20H 20H

20H"。并且因为目录区

起始位置总是位于一个簇的起始扇区,而FAT32文件系统中1簇占用8个扇区,
所以目录区总是位于以8为倍数的扇区的位置。通过上述这些特点,就可以获取

目录区的起始位置。
4.1.1.3

FAT32下获取长文件名方案

在获取文件名属性和数据属性方案中,涉及到获取长文件名的问题,那么如 何获取长文件名呢?其实系统在存储长文件名时,总是先按倒序填充长文件名目
录项,然后紧跟其对应的短文件名。目录项偏移0BH为长文件名标志,长文件名

的目录项中,除偏移00H、0BH一0DH、1AH~1BH处作为特殊使用的字节外,其 余26个字节均用来表示长文件名unicode码。而短文件名目录项存储对应文件的
文件开始簇、文件大小、各种时间和日期属性。所以只要找到长文件名对应的短

文件名位置,然后找到长文件名目录项位置,再依照长文件名目录项倒序填充长
文件名的相应字节,就可以获取其长文件名。

4.1.1.4

FAT32下目录结点生成方案

Windows系统使用的是树型目录结构,系统在访问文件时,总是从某个盘符 的根目录开始,根目录中有许多目录项,当目录项偏移地址0B处的第04位为1 时,表示这个目录项是一个子目录,这个目录项中所指向数据区的起始簇中的内 容又是一个目录项的集合,在这个集合中又有可能某个或者几个目录项的偏移地 址0B处的第04位为1,也就是它或者它们是子目录,如此循环,从而形成树型 目录结构。那么如何获取一个文件或文件夹对应的目录结点呢? 如果有一个目录A是某个目录B的子目录, 那么B目录项的文件的起始簇

号应该和目录项A的当前簇号一致,而目录项的文件的起始簇号可由偏移 14H~15H和1AH-1BH求得,目录项的当前簇号可一簇一簇的搜索磁盘分区求得。 不断利用这种关系,就可以依次找到其对应的目录结点。如果没有找到相关的目

录,根目录作为它的父目录,目录名为DIR形式,FAT32下目录结点生成方案如
图4.2所示:

四川师范大学硕士学位论文

图4-2 FAT32下目录结点生成方案

4.1.1.5

F/iT32下目录树重构方案

FAT32文件系统中采用的目录结构方式为B+树型目录结构,因为父目录的起 始簇号和子目录的当前簇号一致,可以利用此种关系,进而重构目录树,采用递
归算法实现,FAT32下目录树重构方案如图4.3所示:

45

四JII师范大学硕.L学位论文

图4-3 FAT32下目录树重构方案

4.1.2 W i ndows

FAT32下格式化数据恢复方案实现 4.1.2.1主要数据结构
1、目录项的结构

lypedefstruct DIRITEM{
DIRITEMTYPE
char char

Type;//B录项类型

ShortName[1 41:f}短文{孛名 LongName[2571: l?文件或g录名

DWORD
D WORD

Ftlesize:力文侔大小
CurDirStartCluster;//当蓑g录项的起始簇 SubDirStartCluster;//8录的起始簇

DWORD
BOOL

lsDeleted:??该目录项是否被剿除
46

四川师范大学硕士学位论文

BOOL BOOL Cstring

HaveLongName,'//1-访a录项是否具有长文件名 blsChecked;//,是否选中该项。在恢复文件时使用

R眦:ff文件勘建8期

}DIRITEM,’PDIRn’EM:
2、DBR的结构 typedefstruct FAT32_DBR{
BYTE

LogDriver:}f逻辑磁盘亭号A.B.c…分韵甬1.2.3…表示 BytesPerSector;/!每赢区字节数

WORD

啪雹SectorsPerCluster;//每簇扇区数 WORD FATStartSector;?}踯开始崮区
BYTE BYTE

FatNumbers;-//FAT个数 MediaDescriptor:÷f磁介质描述符 Headers:ff逻辑磁头数
TotalSectors:?f逻辑磁盘总扇区数

WORD

DWORD DWORD DWORD DWORD DWORD
DWoRD BYTE

FatSize:7f踟所占扇区数
BakupDBR;//备份戮导赢区.偏移地址为32H

DBRSize;//DBR占的寓区数?偏移地址为30H
RootDirStartCluster;//i媚f]录起始簇 RootDirStartSector;//t绍g录起始寓区

FileSystem[8]:ff文件系统

}眦329BR;
typedefenum
FileSystem

3、磁盘文件系统结构 {Fs
FAl32 Fs NTFS,FS


UNKNOWN}FILESYSTEM;弧磁盘文件系统

4、逻辑磁盘盘符结构 typedefstruct drivitem{//存放逻辑磁盘盘符的结构

讥n队:?7磁盘序号.从c开始算起为起始
FILESYSTEM FileSys;
CString strDrv:蠊兹盘字符串

}DR VITEM;
47

四川师范大学硕上学位论文

4.1.2.2关键代码
1、GetDisklnfo()函数

该函数读取DBR扇区,获取文件系统,每扇区字节数,每簇扇区数,介质 描述,扇区总数,FAT所占扇区数,根目录起始簇。
2、GetDirStratSector()函数

该函数从根目录开始搜索目录项,找到有目录项的位置,并返回磁盘分区中
目录区的个数。

D形㈣GetDirStratSector(DWORDRootDirSector,DWORD StartSectors[])
{for(dwSectorOffset=O;RootDirSector<EndSector;RootDirSector+=Z {if(dwSectorOffset==10240) {memset(DirSectors,O,5幸1048576);

dwSectorOffset+=刀

dwSectorOffset=D?
ReadSectors(RootDirSector,1 0240,DirSectors))

?f一次性读取5M字节数据
} {f((DWORD)('(LPDWORD)(DirSectors+dwSectorOffset卑512)) --Ox2020202E&&(DWORD)《|(LPDWORD)(DirSectors+dwSectorOffset’512+
3 2))==o)c20202E2E)

{StartSectors[DirNumbers]=RootDirSector;//B录项位置

D讲《姗响e_rs七七:?f g录项个数加l
} }
return

DirNumbers;

} 3、GetLongName()函数

该函数用来获取长文件名,lpDirltems为长文件名对应的短文件名目录项, nDirltems为长文件名目录项个数,长文件名存放在Dirltem中。
void

GetLongName(DIRITEM&Dirltem,LPBYTE lpDirltems,int nDirltems)
4R

四川师范大学硕十学位论文

曲r(inti=nDirltems;i>o:i--)
{lpltemPos——=32; memcpy((LPBYTE)(1pNamePos).(LPBYTE)(1pltemPos+1).1 o): memcpy((LPBYTE)cTpNamePos+10).(LPBYTE)(1pItemPos+14).12): memcpy((LPBYTE)以pNamePos+22)。(LPBYTE)(1pltemPos+28)。4):
IpNamePos+=26;



WideCharToMultiByte(1.o.(LPCWSTR)wNameBuf,?1.(char*)cNameBuf,1024,NU
LL,NULL);

//宽字符串转换戒等价的多字节字符串
memcpy(Dirltem.LongName,cNameBuf,strlen((char*)cNameBuj'));


GetDirItemFromFDT()函数

该函数用来获取目录项的文件名属性和数据孺性,结果存放在tmpD狰hem中,
DIRITEM GetDirltemFromFDT(LPBYTE&lpDirltem) {DIRITEM tmpDirltem;
lptemp=lpDirltem;

while(1ptemp[11J==OxOF) {lptemp+=32; } GetShortName(tmpDirltem,lptemp):?7获取短文件名
tmpDirltem.HaveLongName=FALSE;

if∥ptemp,=lpDirltem) {tmpDirltem.HaveLongName=TRUE; GetLongName(tmpDirltem,lptemp,OnO以ptemp—lpDirltem)/32)?

f?获取长文件名
} if(1ptemp[11J&Oxl∞ {mpDirltem.Type=FAT32~IS—DIR;
tmpDirltem.FileSize=o:
49

四川师范大学硕L学位论文



else{tmpDirltem.Type=FA T32一IS—FILE; tmpDirltem.FileSize=?(LPDWORD)(1ptemp+28)? ’ tmpDirltem.SubDirStartCluster=GetSubDirStartCluster(1ptemp);

?}获取文件的起始簇号
tmpDirltem.Time=GetFileCreateTime(1ptemp); lpDirltem=(LPBYTE)(1ptemp+32)i
return

tmpDirltem;

) 4、RecoveryFiles()函数 该函数用来遍历TreeCtrl,恢复m—arrDeletedFileltems中被选定(bCheck标志

为TRUE)的所有文件。
4.2 W i ndows
4.2.1 W i ndows

NTFS下格式化数据恢复方案设计与实现
NTFS下格式化数据恢复方案设计

当用户高级格式化一个NTFS卷时,格式化程序清空Bitmap元数据中的内容, 清空根目录中的索引。但其MFT与数据以及除根目录外的索引并没有被清空, 而NTFS的MFT记载着所有有关该文件的信息,如文件名、存储所有簇的簇号、 文件的创建时间等。因此只要数据没有被覆盖,在NTFS下恢复被格式化的分区
的可能性应该是100%。

但如果用户低级格式化一个NTFS卷时,格式化程序在格式化时就会用某个 数字对该卷的数据区从头到尾进行填充,因此,此时就不能恢复其分区中的数据。
但在目前广泛使用的Window操作系统中对分区进行格式化时,不管是否进行快

速格式化,都是采用的高级格式化的方法。基于此,本文提出和实现了Window NTFS下格式化数据恢复方案。文件名属性、数据属性、MFT区域、目录树结构 对于NTFS下格式化数据恢复至关重要,主要从这几个方面进行阐述:
4.2.1.1

NTFS下获取文件名属性和数据属性方案

主控文件表MFT是NTFS卷结构的核心,MFT记录了文件在磁盘上的位置

四川师范大学硕士学位论文

以及文件的所有属性。所有文件的MFT都集中存放在一个称之为MFT区域的空

间里,并且NTFS文件系统为MFT区域分配大约12%的磁盘空间。因此只要找 到MFT区域的起始位置,就能找到所有文件的MFT,也就能获取所有文件的文 件名属性和数据属性。
在格式化NTFS卷后,如果仍为NTFS文件系统,可根据BPB参数马上找到 MFT区域的起始位置。但如果格式化NTFS卷后,文件系统发生了变化,譬如格 式化成FAT32文件系统,此时DBR遭到破坏,即BPB参数遭到破坏,就不能直 接根据BPB参数找到MFT区域的起始位置。此时可从16扇区开始扫描MFT的

起始位置。 在进行文件名的恢复时,因为只有长文件名对数据恢复才起作用,而短文件 名无效。而在文件名中,为了兼容旧的文件系统,NTFS分配了一个短的DOS兼
容文件名给每个具有非DOS兼容文件名的文件。也就是说,如果是长文件名, 那么它有2个30H属性。所以在判断30H属性时需要判断是否为DOS文件名, 如果不是DOS文件名,直接获取其文件名即可,如果是DOS文件名,就要找到

对应的长文件名。而在这种情况下,NTFS中第1个30H属性即为此文件名对应
的DOS文件名属性,紧跟在此DOS文件名属性之后,即第2个30H属性,就是

此文件名对应的长文件名属性。所以如果碰到一个30H属性是DOS文件名,首
先避开其DOS文件名,再继续搜索30H属性即可获得长文件名,NTFS下获取文 件名和数据属性方案如图4.5所示:

四川师范大学硕上学位论文

图4.5 NTFS下获取文件名和数据属性方案

4.2.1.2获取MFT区域起始位置方案
在获取文件名属性和数据属性方案中,涉及到从16扇区获取MFT区域起始

位置的问题,那么如何获取其起始位置呢? 其实MFT的前16项是16个元数据文件,16项之后是用户建立的文件和文 件央的MFT,并且MFT元数据文件总是以“FILE”开头,通过此特点,可以获取 MFT区域的起始位置,获取MFT区域起始位置方案如图4.6所示:

52

四川师范人学硕十学位论文

图4-6获取MFT区域起始位置方案

4.2.1.3

NTFS下目录结点生成方案

图4.7 NTFS下目录结点生成方案

53

四川师范大学硕士学位论文

对每一个文件,找到其相关的所有目录。因为每~个MFT项中,偏移2CH
处,有本文件或文件夹的MFT记录编号,30H属性中,偏移18H处有父目录的

文件参考号。利用这种关系,可以找到相关的目录。如果没有找到相关的目录,
根目录作为它的父目录,目录名为DIR形式,NTFS下目录结点生成方案如图4.7 所示。

4.2.1.4

NTFS下目录树重构方案

图4-8 NTFS下目录树重构方案

NTFS文件系统中采用的目录结构方式为B+树型目录结构,

AOH属性一索

引分配属性,存储着组成索引的B+树目录所有子节点的定位信息。很明显,索引 分配属性实现目录树的重构。但是因为每一个MFT项中,偏移2CH处有本文件

四J11咖1i范大学硕士学位论文

或文件夹的MFT记录编号,30H属性中偏移18H处有父目录的文件参考号。可 以利用MFT记录编号和父目录的文件参考号两者的关系,更简单便捷的找到每

一个文件相关的目录,进而重构目录树,采用递归算法实现,NTFS下目录树重
构方案如图4.8所示:

4.2.1.5

NTFS下数据恢复方案

选择要恢复的文件,新建对应路径上的文件和目录,读出其文件记录的物理 地址,分析文件记录的数据流属性,判断该属性是否为常驻属性:若为常驻属性, 得到文件数据,直接写入到新文件中;若为非常驻属性,从第一个运行开始,得 到每一个运行的数据,依次写入到新文件中,进而实现数据的恢复,NTFS下数
据恢复方案如图4.9所示:


图4-9 NTFS下数据恢复方案

4.2.2 W i ndows

NTFS下格式化数据恢复方案实现

4.2.2.1主要数据结构
1、DBR的结构 typedefstruct NTFS_DBR{
BYTE

LogDriver;ff逻辑磁盘亭号。A。B?c.D。E…分韵甬.2.3.4 75…表示 BytesPerSector;?f每寓区字节数
SectorsPerCluster;//每簇南区数

WORD

BYTE

四川师范大学硕士学位论文

BYTE

MediaDescriptor;//磁介质描述符
TotalSectors:7f逻辑磁盘总赢区数

LARGE INTEGER

LARGE LARGE
LARGE

1N EGER INTEGER

MFTStartQuSt盯:?携Mn的起始逻辑簇号
MFTMirrStartCluster,"

f掩MFTM浒的起始逻辑簇号

INTEGER MFTStartSector;//MFT开始崮区
INTEGER INTEGER

乙蛾GE
乙澄GE

MFTEndSector;?fM飘结京赢区
MFTSize; //MFT大小。簇总数 //每MFT记录簇数

DWORD DWORD

ClustersPerMFT;

ClustersPerlndex;?f每索现簇数

BYTE FileSystem[8]:?f文件系统
}NTFS_DBR;

2、文件MFT项的存储结构
typedefstruct FileMFTltem{
DWORD FilelndexNum;/文{学记录编号 DWORD

ParentDirlndexNum:?f父g录的文件记录编号 Flag:,,区分文件和文件夹标记

FILE FOLDER TYPE BYTE

FileName[25q:??文件名称

LARGE INTEGER BOOL

F诖estze:?,文件大小

IsSmallFile:÷?是否是小文件的标志

vector<BYTE>噼rF谴eco眦ems:f『,j、文件的内容

vector<DATARUN>QrrDmn融nS:力文件运行记录数组
BOOL

bCheck;f?翔断文件是否被选中。在文件恢复时使甬

}FILEMFTⅡEM.★P FILEMFTrIEM: 3、文件存储链中一项的结构 typedefstruct DataRun{
DWORD

ClusterNums:?f数据运行所占的簇数 StartCluster:??数据运行的起始簇

LARGE 1NTEGER

}DATAR UN

4.2.2.2关键代码
56

四川师范大学硕上学位论文

1、GetDiskInfo()函数 该函数读取DBR扇区,获取文件系统,每扇区字节数,每簇扇区数,介质

描述,扇区总数,¥MFT的起始逻辑扇区,¥MFTMirr的起始逻辑扇区,每MFT 记录簇号,每索引簇数。
2、GetFileltemFromMFT()函数

该函数从缓冲区Buff中提取硬盘上文件夹的MFT项和文件的MFT项,分别
存放在CNTFS类成员m arrFolderItems和m arrFormatFileItems中。
void GetFaeltemFromMFT l(B

YTE鸯B哟{

dwOffset=(DWORD)(*(LPWORD)(B蛹≮20)):
dwAttrib=(DWORD)(毒(LPDWORD)(B瑚≮dwOffset)):
while(dwAttrib!=0xFFFFFFFF) if(dwAttrib==Ox3∞

tff如果找勤X30H属性。则从中取出文件名字 {if(byFileNameSpace

l=嗍2、桃镪果byFileNameSpace为x02.表明是短文件
==

名.此处要找长文件名:{ 矿(Fileltem.Flag
NTFS IS NTFS IS

DELETE_FOLDERI IFileltem.Flag

==

FOLDER){

{}找勤文件夹名.直接返回.因为文件夹无嗽oH羁性;
m_arrFolderltems.push_back(Fileltem):%每储MFT结构
return;


} ’

if(dwAttrib=:嗽Q1t{f如果找韵x80H属性.氐从中取出文件的内容或者文件
内容所在位置信息

if(*(LPBYTE)(B毋dwOffset+8)==Ox01)llOx80H为非常驻属性。从中取出数
据运行
else

if(*(LPBYTE)但咿dwOffset+8)==OxOO)

ff呶80H为常驻属性.直接获取文件内容

57

四川I师范大学硕士学位论文

if(FoundThreeAttrib&&FoundEightAttrib){ ?f文件的谴OH霭性和x30H属性都找翻.程亭返回;
m_arrDeletedFileltems.push_back(Fileltem);
return;



dwOffset+=(DWORD)(*(LPDWORD)(B盼dwOffset+4))://dwOffset递增
至下一弱性的偏移量:

dwAttrib=(DWORD)(*(LPDWORD)(B心dwOffseO):
?{获取T一属性:



3、ReRebuildTreeO函数 该函数用来递归重构目录结点。
Vr0/d

ReRebuildjrreefPFILEMFTlTEM

ParentNode.vector<FILEMFTITEM>

&甜rFotders,HTREE疆EM hAem.CTreeCtrl&TreeCtrl) {for(it=arrFolders.beginO;n!=arrFolders.endO;++il)

÷}扶第一个结点开始


if(ParentNode一>FilelndexNum==it->ParentDirlndexNum) //MFT记录编号和n的父目录文件参考号相等l 把娃结点作为ParenNode的子强录结点: 获取予目录结点的文件名,MFT记录编号。父s录的文件参考号等: 形成子s录结点:
ReRebuildTree(ChildNode[ChildNodeNum],m_arrDeletedFileTree,hTreeNode

。TreeCtrl):?,递归调用函数,重构g录结点
ChildNodeNtlm++:

夕 1 ) 4、RecoveryFiles()函数
58

网川师范大学硕士学位论文

该函数用来遍历TreeCtrl,恢复m—arrDeletedFileltems中被选定(bCheck标志 为TRUE)的所有文件。

4.3,J、结
本章设计并实现了Windows下格式化数据恢复方案,包括Windows
FAT32

下格式化数据恢复方案和Windows NTFS下格式化数据恢复方案的设计与实现。

首先介绍了Windows FAT32下格式化数据恢复方案的设计,包括FAT32下获取文
件名属性和数据属性方案、获取FAT32目录区起始位置方案、FAT32获取长文件 名方案、FAT32下目录结点生成方案和FAT32下目录树重构方案,然后介绍了 Windows FAT32下格式化数据恢复的实现过程。接着介绍了Windows NTFS下格

式化数据恢复方案的设计,包括NTFS下获取文件名属性和数据属性方案、获取
MFT区域起始位置方案、NTFS下目录结点生成方案、NTFS下目录树重构方案 和NTFS下数据恢复方案,最后介绍了Windows NTFS下格式化数据恢复的实现 过程。


59

四川师范大学硕上学位论文

第五章L i nux下格式化数据恢复方案设计与实现
与DOS/Windows不同,Linux分区格式化后很难恢复,这是由Linux独特的

文件系统结构决定的。Linux文件目录不像DOS/Windows那样,格式化之后,仍 保存有完整的文件名、文件长度、始簇号等重要信息;相反,Linux系统中的每 个文件都被赋予一个唯一的数值,这个数值称做i.节点。i.节点存储在一个称作
i.节点表(inode table)中,该表在磁盘格式化时被分配。每个实际的磁盘或分区

都有其自己的i.节点表。一个i.节点包含文件的所有信息,包括磁盘上数据的地 址和文件类型。文件类型包括如普通文件、目录和特殊文件这样的信息。如果
Linux系统中的分区被格式化,那么分区中对应的i.节点表被重新分配。因此要

想直接从i.节点表出发恢复被格式化的文件内容是非常困难的。

5.1

Li

nux下格式化数据,恢复方案设计

由于Linux独特的文件系统结构,如果直接从文件系统结构入手恢复文件, 几乎是不可能的。那么如何恢复Linux分区格式化后的文件呢?实际上可以从 Linux分区格式化后本身留下的文件内容入手,下面从四个方面进行阐述:

5.1.1关键字搜索法方案设计 如果知道某个文件内容中若干字节的内容,而且该文件长度不超过一个磁盘 块,那么首先可以申请一个i.节点,然后在整个文件系统中搜索这一字符串,得 出这个文件所在的数据块,最后将数据块的块号填入申请的i.节点,进而恢复文
件。

5.1.2精确长度搜索法方案设计 如果知道某个文件的精确长度(字节数),那么可根据一个数据块的大小, 计算出文件的最后一个数据块中数据的精确长度,该数据块中其它字节必然是全 0。根据这一条件,通过搜索整个文件系统,找出符合条件的数据块,进而恢复
文件。

5.1.3内容关联法方案设计 如果知道文件内容中存在某种可实现的关联,如文件的校验和,或者文
60

四川师范人学硕士学位论文

件内容的某种上下关系,那么也可通过搜索整个文件系统,反复尝试寻找符合关 联条件的磁盘数据块,进而恢复文件。

5.1.4“RAW"文件恢复方案设计 很多专用的文件都有一个特定的字符串写在文件的开始和结尾。在文件开始 处的特定的字符串通常叫做文件头(Header)。存储在文件结尾处的特定字符串通 常被叫做文件脚(Footer)。不同的操作系统以及不同的操作系统版本,文件头和 文件脚会有所差异,以Windows
文件脚如表3.1所示:
表3.1文件的文件头和文件脚 扩展名 文件头(十六进制)
DO CF 11 E0 A1 Bl 1A E1 DOC 6D 65 6E 74 2E DO CF 11 E0 Al B1 1A El XLS 6D 65 6E 74 2E 6F 00 72 00 6B 00 62 00 6F 00 6F 00 6B 00 50 00 6F 00 77 00 65 00 72 00 50 00 6F D0 CF 11 E0 A1 Bl 1A E1 PPT 6D 65 6E 74 2E 00 63 00 75 00 6D 00 65 OO 6E 00 74 ZIP 50 4B 03 04 14 FF D8 FF E0 00 10 4A 46 JPG
49 46 00 Ol 0l

XP

SP2为例,不同文件类型的文件的文件头和

文件脚(十六进制)
57 6F 72 64 2E 44 6F 63 75

FE FF FF FF 00 00 00 OO 00 00 OO 00 57 00

00 69 00 6E 00 74 00 20 00 44 OO 6F

50 4B 05 06 00

D9(不好判断)

GIF PDF

47 49 46 38 39 61 20 03 25 50 44 46 2F 31 2E

21 00 00 3B 00 25 25 45 4F 46

通过扫描一些特定文件按类型的文件头和文件脚,然后将这些文件的文件头 和文件脚之间的数据保存到一个文件,从而对这些文件进行恢复。因为是使用特

殊文件的“RAW"结构恢复数据,所以这种数据恢复方法称为“RAW"文件恢
复。

“RAW”文件恢复不能恢复文件名,但可以对文件内容进行完全的恢复。
6l

阳川师范人学硕士学位论文

“RAW"文件恢复不受操作系统和文件系统本身的限制,它不仅可以恢复 Windows下的FAT32和NTFS文件系统的文件,而且可以恢复Linux下的EXT2、
EXT3、JFS、

ReiserFS、XFS等文件系统的文件。

“RAW’’文件恢复特别适合恢复Linux下的文件,因为格式化一个Linux分 区,如EXT3分区,或者删除一个Linux系统下的文件,Linux文件系统遭到破 坏,如i.节点表遭到破坏等,从而造成“不可恢复性”。如果要恢复此种类型的文

件,就可以使用“RAW’’文件恢复。此种方法简单、方便、成功率高,并且能恢
复许多类型的文件。“RAW"文件恢复方案如图5.1所示: 众所周知,Windows下的编程较Linux下的编程简单,方便。而Linux下的 分区在Windows环境中是不能识别的。我们能否让Windows识别Linux的分区, 从而在Windows下编程实现Linux分区格式化的数据恢复。其实,在Windows 环境中,Linux的分区表信息还是可以读到的,通过函数CreateFile打开Linux
物理磁盘,然后分析其分区表信息,最后得到Linux下的每个分区的起始扇区和

结束扇区,从而在Windows环境中完成Linux文件系统分区格式化的数据恢复。

网川师范大学硕士学位论文

图5.1“RAW”文件恢复方案
63

四川师范大学硕士学位论文

5.2 L i

nux下格式化数据恢复方案实现

5.2.1关键字搜索法方案实现

5.2.1.1关键代码
l、Allocatelnode()函数

该函数申请一个i.节点,即向系统申请创建一个新文件名而不写入任何内容。
2、GetFileBlockNunl()函数

该函数搜索在整个文件系统中搜索某个文件的一特殊字符串,并最终返回该 文件所在的数据块号。
long

GetFileBlockNum(char*fsname,char*KeyString)

{//fsname设备文侔名。KeyS护ing关键字符串
char

b坝10241:,7存放数据块中内容的缓存
sl钾tBlock;∥数据块号

long

for(StartBlock=O;StartBlock<EndBlock;StartBlock+■ {

if(!ReadSectors(StartBlock,1024,buffsname))
{ TRACECRead
return-l: BLoCK Fnlled!”):



if(compare(buf酗踟in妫if检查是否符合条件
return StartBlock;

]}
return—l:



5.2.2“RAW”文件恢复方案实现 5.2.2.1主要数据结构 “RAW"’文件结构:
typedefstruct {
Raw_File_Attribute

四川师范大学硕十学位论文

char F娃e

j设131:ff"Raw 8文彳牛文件类型

DWORD64 DWORD64

FileStartSectors;//"Raw∞文件起始扇区
FileEndSectors;//aRaw舶文件结束扇区

}砌WjlLE_ATTRIBUTE,*PRA W_FILE_ATTRIBUTE;
5.2.2.2关键代码
1、ScanSysPationTable()函数


该函数扫描硬盘的分区情况,针对用户需要格式化数据恢复的具体一个分
区,用以确定用户需要进行“RAW’’文件恢复的起始扇区和结束扇区。 2、ScanDiskFile(DWORD64 StartSector,DWORD64 EndSector)函数

参数StartSector,进行“RAW”文件恢复的起始扇区;

参数EndSector,进行“RAW"文件恢复的结束扇区
该函数扫描硬盘StartSector和EndSector扇区之间的所有的“RAW"文件,
结果保存在Raw
File

Attribute结构体数组中。

因为DOC,XLS和PPT文件的文件头相同,所以他们共享一个文件头,并
统称为O衢ce文件。
ScanDiskFite(DWORD64 st口rtsector.DWoRD64 EndSector)

{CreateFilei'//打开物理磁盘 for(StartSector;StartSector<=EndSector;StartSector++)
{SetFilePointer:?f定位勤StartSector赢区 for Ont j=o;i<=63:i七+) {Raw_Header__l=(DWORD)(’(LPDWORD)(8★i+StartSector ?f文件头l。4个字节长 Raw_Header2=(DWoRD)(噜《LPDWORD)(4+8★tJr StartSector★512)): f?文件头2。4个-Tz节长 if(((Raw_Header l==OxEOllCFDO)&&(Raw_Header_2==OxEllABlA 1))&&
15 l

2)):

&t.OfficeHeadFlag) 。l{}是Doc文件头或者XLS文件头或者PPl文件头且这些文件头未找勃 OfficeFile.FileStartSectors=StartSector;//留文件的起始位置 G惯ceHe口dFlng=frue:∥文件头找到
65

网川师范人学硕士学位论文

{ if(OfficeHeadFlag)

踟r(tntj=80<=15-j++)
{if((BYTE)(*(LPBYTE)(8★t+j+StartSector★512))==Ox57)

[RawFooterj=(DWORD)(*(LPDWORD)(j+l+8’i七StartSector奄5 1 2)):
Rawjooter_2=(DWORD)(*(LPDWORD)G+5+8’i+StartSector'512)):
if(((Raw_Footerl==Ox2E64726F)&&(Raw Footer_2==Ox75636F44))) {?}是DOC文件的文件脚 memcpy((OfficeFile.File_Fix),t'doc”.3、:,,保存后缀名

OfficeFile。FileEndSectors=StartSector;//保存结京痢区

Raw_file.Add(OfficeFile);//糟:OfficeFile添加蓟Raw_file结构体数组中
OfficeHeadFlag=false; continue:岫甓出此次循环
} } l

} if(OfficeHeadFlag)
go,-Ontj=8;j<=15;j++)

{if((BYTE)(*(LPBYTE)(8木fo+StartSector幸51驯==OxFE)
{Raw_Footer_l=(DWORD)(*(LPDWORD)(j+1+8★i+StartSector粤5 l 2)):
Raw_Footer

2=《DWORD)(*(LPDWORD)U+5+8鲁i+StartSector’5 1 2)):

if(((Raw_Footerl==OxOoFFFFFF)&&(Raw_Footer_2==Ox00000000)))

{//是xLs文件的文件嘞

memcpy((OfficeFile.me_Fzx).、'xls”.3、:f』保存后缀名
OfficeFile。FileEndSectors=StartSector;//保存结束赢区

Raw file.Add(OfficeFile);//4t孚:OfficeFile添加孰Raw_file结构钵数组中
OfficeHeadFlag=false;
continue;//flJ¥dHYd次循环

66

四川I师范大学硕士学位论文

} }


if(OfficeHeadFlag)

洳r(im j=8:j<=l 5’j++)
{if((BrTE)(*(LPBYTE)(8奄i+j+StartSector’5 l 2))==Ox50) {Raw_Footer l=(DWORD)(嗨(LPDWORD)(j+l+8★i+StartSector奄512)):

Rawjooter 2=(DWORD)(*(LPDWORD)G+5+8★i+StartSector聿5 l 2)):
if(((Raw_Footer_1==Ox77006FOO)&&(Raw_Footer 2===Ox72006500)))

{//是XLs文件的文件晦 memcpy((OfficeFile.File_Fix).I'ppt”.酰ff保存后缀名
OfficeFile.FileEndSectors=StartSector;//保存结束搦区

Raw_file.Add(OfficeFile);//4等OfficeFile添加至b
OfficeHeadFlag=false;

Raw

file结构体数组中

contt眦e:7/跳出此次循环 }
) } }

if(((Raw_Header_l==:0x3846494 7)&&!GifHeadFlag) t}f是G弩文件头头且此文件头未找蓟
GifFile.FileStartSectors=StartSector;//{祭留文件的起始位置

G谚HendFldg=lrtle:,/文件头找到
, if(GifHeadFlag)

洳r(intj=8.j<=l 5.j++) {if((BYTE)(噜(LPBYTE)(8?t+j+StartSector’5 l 2))==Ox2D
{Raw_Footerl=(DWORD)(*(LPDWORD)G+l+8卑i七StartSector?51 2)): if(Raw_Footer_l==Ox00380000)

{l/X:GlF文件的文件脚
67

网川师范人学硕十学位论文

memcpy((GifFile.File_Fix).H酣“.3):?l保存后缀名
GifFile.FileEndSectors=StartSector;//保存结束扇区

Raw_file.Add(GifFile):柏晦GifFile添加虱Raw_file结构体数组中
GifHeadFlag=false; continue:7荡I出此次循环
} ' } 夕 if(((Raw_tteader_1==Ox04034850)&&!ZipHeadFlag)

{//是=Zip文件头头且此文件头未找韵 ZipFile.FileStartSectors=StartSector;//[绍留文件的起始位置 ZipHeQdFlng=trtle:∥文件头找到
} if(ZipHeadFlag) {for(intj=8:1<=l 5:j七七1 {识(BYTE)(*(LPBYTE)(8奄i+j+StartSector?512))==OxSO)

{Raw_Footerl=(D WORD)(*(LPDWORD)(jjr l+8?i七StartSector’5 l 2)):
if(Raw_Footer_l==OxO006054B)

{//娼ZIP文件的文件脚
memcpy((ZipFile.File j埘.t'zip“。3):f}保存后缀名 ZipFile.FileEndSectors=StartSector;//保存结束南区

Raw_file.Add(ZipFile);//搿d:ZipFile添加勤Raw_file结构体数组中
ZipHeadFlag=false;

continue:?博b出此次循环
} , ' 夕 if(((Raw_Header l==0x46445025)&&t.PdfHeadFlag)
6R

四川师范人学硕十学位论文

{?f是Pdj文件头头且此文件头未找勤 eafFite.FilestQrtsect叫铲st田tsector:『7保留文件的起始位置

P妒_leQdFlng_钾ue:,/文件头找到
} if(PdfHeadFlag) {for(intj=8;j<=15;j++) {if((BYTE)(*(LPBYTE)(8★i+j+StartSector毒5 l 2))==0x25)

{Raw_Footer_l=(D WORD)(|(LPDWORD)G+l+8膏i+StartSector’5 l 2)): if(Raw_Footer_l==Ox464F4525)
tff是P田文件的文件晦

memcpy((PdfFile.File_Fix).、'zipn。”:f}保存后缀名 PdfFile.FileEndSectors=StartSector;//锯-存结束扇区
Raw

file。Add(PdfFile);//:/CfPdfFile添加蓟Raw_file结构体数维中

PdfHeadFlag=false;

comin妣:m钝出此次循环
} ’ 夕 } )}} 3、WriteFileData()函数

该函数创建文件“RAW”文件,并从结构体数组Raw File中找到要创建的 文件的大小、起始扇区和结束扇区,读出文件内容信息,写入创建的“RAW"文
件之中。

5.3小结
本章设计并实现了Linux下格式化数据恢复方案,其中主要介绍了关键字搜

索法方案设计、精确长度搜素法方案设计、内容关联法方案设计和“RAW"文件
恢复方案设计,并着重介绍了“RAW"文件恢复方案的实现过程。

四川师范大学硕士学位论文

第六章测试与分析 6.1分区表恢复测试与分析
测试环境:CPU:InteI(R)Pentium(R)Dual E2140@1.60GHZ,1.61GHZ;内存: 2GB;操作系统:Windows
XP

SP2;硬盘大小:160GB;分区情况:分成4个分

区,其中1个基本分区(C盘,大小:5GB),3个扩展分区(D盘,大小:5GB; E盘,大小:5GB;F盘,大小:139GB);F盘作为备份盘,重要数据都存储于
F盘。

实验:用Windows
XP

XP SP2

GHOST电脑公司装机特别版对操作系统Windows

SP2进行还原,装完操作系统后发现整个磁盘变成一个分区,硬盘上所有的数

据丢失。此时出现分区表丢失,分区中的数据全部丢失的严重后果。用Diskgen
v2.0,Partition Table Doctor

v3.0等进行分区表重建,仍无力回天。本文设计并实

现了专门针对分区表恢复的工具PartiRecovery,它首先通过获取分区结点所在物 理扇区号,然后将分区信息写入相对应的分区表的方法,恢复分区表。实验结果 表明:分区表得到完整的恢复,C盘和D盘的数据遭到部分破坏,E盘和F盘的 数据得到完整恢复。有效数据恢复成功率达到95%以上。 分析:经过实验表明,采用本文提出的分区表恢复方法,分区表恢复成功率 和数据恢复成功率都较高。较Diskgen
v2.0,Partition Table Doctor

v3.0等分区表

恢复软件在恢复成功率上具有优越性。采用此方法,如果所有的分区表均被破坏, 但只要引导扇区保持完好(即分区占用的扇区数的备份信息未被破坏),就能对每 个分区表进行完全恢复;如果分区表和引导扇区均被部分破坏,但只要能正确得 到分区链表中的每个分区结点所在物理扇区号,也能够完全恢复每个分区表。

6.2 W i
6.2.1

ndows下格式化数据恢复测试与分析
FAT32下格式化数据恢复测试与分析

W i ndows

测试环境:CPU:InteI(R)Pentium(R)Dual E2140@1.60GHZ,1.61GHZ;内存: 2GB;操作系统:Windows XP SP2;硬盘分区大小:1.94GB;文件系统:FAT32; 目录数:9个;文件数:473个;文件类型:mp3、WITIa和jpg文件;占用空间:
l。56GB;剩余空间:390MB。

实验:本文设计并实现了专门针对格式化数据恢复的工具FmatRevovery,将 其与目前市场上流行的数据恢复软件FinalData
70

Enterprise v2.0,EasyRecovery

四川师范人学碗}学位论文

Professional v6

12汉化版等做测试对比,FAT32格式化后FmatRevovery扫描到的

文件如图6-1所示,EasyRevovery扫描到的文件如图6-2所示.FinalData扫描到

的文件如图6-3所示,实验结果分析如表6-1所示:

l;!i警㈣地舯蛐蚺怕慨4悄蛸1雌8蚋髓4椰池胂种
口J 3 口J D1R口 日J DI“ 日Jta 目JI* 日Ji 自J十{i 自J自t}

日J圃
日Jm‘

¥m

Em厂i=i—1

图6-1 FAT32格式化后FmatRecovery扫描结果

。!笋黧垂薰L
图6-2 FAT32格式化后EasyRecovery扫描结果

叫川帅范人学顺l‘学位论史

图6-3 FAT32格式化后FinalData扫描结果

表6-1 FAT32格式化数据恢复实验结果分析 {j描时 软州名称
间/s
95 】48 273

有效口
录/个
5 5 5

口录恢复 成功牢
55 56% 55 56% 55 56%

竹效文 什/个
J68 167 167

文仆恢复 成功率
35 52% 3S 31% 35 3】%

‘FmatRecovery EasyRecovcrv F112a1Data

分析:从图表中可以看出采用本文提出的FAT32格式化数掘恢复方案,在执
行效率和恢复成功率上较EasyRecovery和FinalData优越。

6 2

2 windows

NTFS下格式化数据恢复测试与分析
60GHZ,I

测试环境:CPU:Intel(R)Pentium(R)Dual E2140@1 2GB:操作系统:Windows
XP

61GHZ;内存

SP2i硬盘分区大小:1.95GB;文件系统:NTFS

旧川师范^学碗1’学位论文

目录数:8个:文件数:437个;文件类型:mp3和wma文件;占用空间:1 剩余空间:332MB。

61GB;

实验:奉文设计的格式化数据恢复的工其FmatRevovery,将其与日前市场t 流行的数据恢复软件FinalData 化版等做测试对比。 NTFS格式化后仍为NTFS文件系统FmatRevovery扫描到的文件如罔6-4所
示,EasyRevovery扫捕到的文件如图6-5所示,FinalData扫描到的文件如图6-6
Enterprise v2 0,EasyRecovery Professional v6

12汉

所示,格式化后为NTFS文件系统的实验结果分析如表6-2所示,NTFS格式化后
小为NTFS文什系统FmatRevovery扫描到的文件如图6—7所示,EasyRevovery扫 描到的文件如图6-8所示,FinalData扫描到的文件如图6-9所示,格式化后为不 NTFS文件系统的实骑结果分析如表6-3所示:

图6-4 NTFS格式化后仍为NTFS文件系统Fm atRevovery扫描结果

叫川帅范大学颤}:学位论史

I?ilIlP’”神H删8雌1.。。。H‘5薯.‘鼎噌…。Ⅲ。’
+口o…m’ {口^‘■i{±懈n■聃.】】?日
lo,…


案紫…㈣瓣…
目j■#∞

黼瓣#B/2w
Ӭ8

.塞纛点蒜:‘i黧麓羞.。 1鳖’‘m州d?日 o【■镕#女#^《{H1呲’口
自J

日Jm■㈣黜幢t#自m}*}Ⅲ"】 日J∞黼z矩】日删,月^∞?¨

獬溉i "”…
…}


7 j

日J“^…竹i%i日目^《…n日tq‘"

1‘1_日

2…,1… o,l,… o,…

:/872”1
l I



㈦岫i|

图6、5 NTFS格式化后仍为NTFS文件系统EasyRevovery扫描结果

图6-6 NTFS格式化后仍为NTFS文件系统FinalData扫描结果

四川师范人学硕j。学位论文

表6.2格式化后为NTFS文件系统分析 扫描 软什名称 时间/s hatRecovery
EasyRecov@Ty F1 nalData 13 】97 793

有效目 录/个
7 6 0

El录恢复 成功率
87 50% 75 00%

有效文 件/个
435 434 421

文什恢复 成功率
99 54% 99 3l% 96 34%

0%

图6-7 NTFS格式化后不为NTFS文件系统FmatRevovery扫描结果

四川师范人学顾J学位论文

1————一压啊鲤盟艇—矗穗盛嘲舞穗f

豢豢枣3鎏}
图6-8 NTFS格式化后不为NTFS文件系统EasyRecoveu,扫描结果

2:鼍冀蔓气毒1i墨”:‘专2:翟…”…
≥&!彗

图6-9 NTFS格式化后不为NTFS文件系统FinalData扫描结果

四川师范大学硕十学位论文

表6.3格式化后不为NTFS文件系统分析 软件名称 时间/s
FmatRecoVery EasyRecovery FinalData 41 197 251

扫描

有效目

目录恢复 成功率
87.50% 75.00% O%

有效文 谯{令
418 418


文件恢复 成功率
95.65% 95.65% 0%

泵{令
7 6 0

分析:从图表中可以看出采用本文提出的NTFS下格式化数据恢复方案,在

执行效率和数据恢复成功率上较EasyRecovery和FinalData优越。特别是当格式
化后不为NTFS文件系统时,FinalData根本就没有考虑到此种情况。

6.3 L i

nux下格式化数据恢复测试与分析

6.3.1“RAW”文件恢复测试与分析
测试环境:CPU:Intel(R)Pentium(R)Dual E2140@1.60GHZ,1.61GHZ;内存: 2GB;硬盘1大小:160GB、操作系统:Windows 操作系统:Redhat
Enterprise Linux XP

SP2;硬盘2大小:160GB、

12.0、硬盘分区描述:/dev/sda9、硬盘分区大

小:18.82GB、文件系统:EXT3。

实验:通过利用Linux分区表,特殊文件头和文件脚等信息,实现在Windows
环境下完成Linux分区格式化的数据恢复。在Windows下扫描Linux分区的情况 如图6.4所示,“RAW"文件恢复实验结果分析如表6.10所示:

明川师范大学倒l:学位论立

图6.10 Windows下获取Linux分医情况

表6-4“RAW”文件恢复实验结果分析 文什类型
DOC XLS PPT ZIP GlF PDF

原来文什 总数/个
197 22 46 10 466 316

成功恢复文 件总数/个
94
17

文件恢复 成功率
47 72% 77 27% 43 48% 60 00% 1 5 24% 36 71%

20 6 71 116

分析:从图表可以看出利用分区表结构和“RAW”文件特点,能够实现在 Windows环境中实现Linux r文件系统分区格式化的数据恢复。文件数据在磁盘 上的存储是否连续直接影响数据恢复成功率,只要文件数据在磁盘上的存储足连 续的,并且没被其它文件覆盖,恢复的成功率将是100%。“RAW”文件恢复的方 法不仅适合Linux下文件系统格式化的数据饿复,而且适合Windows下文件系统

四川师范大学硕十学位论文

格式化的数据恢复。“RAW”文件恢复特别适合在Linux文件系统格式化之后, 对某一类特殊文件的恢复。它是Linux文件系统格式化数据恢复最有效的途径。

6.4,J、结
本章首先对分区表恢复进行了实验测试和对比分析,然后对Windows下格式
化数据恢复进行了实验测试,包括Windows FAT32下格式化数据恢复进行了实验 测试和Windows NTFS下格式化数据恢复进行了实验测试,并和现在流行的软件

进行了对比分析,最后对Linux下格式化数据恢复进行了实验测试,主要是“RAW’’ 文件恢复的性能测试。从测试结果中可以看出,本文提出的格式化数据恢复方法 具有良好的性能和可行性,在执行效率和数据恢复成功率上较现在流行的格式化 数据恢复软件具有一定的优越性。

plj川师范大学硕士学位论文

第七章总结与展望
本文设计并实现了硬盘格式化数据恢复方案,具体包括分区表恢复、Windows NTFS下格式化数据恢复、Windows FAT32下格式化数据恢复和Linux下格式化 数据恢复的方案设计与实现。在实际应用当中,此方案中的一些模块可作为重用 模块,譬如Linux下的“RAW”文件恢复模块可以应用于Windows下格式化数据 恢复;Windows下的格式化数据恢复模块可重用在计算机操作监控系统中的数据 删除模块和数据恢复模块;再诸如嵌入时间属性模块等,从而为计算机取证技术 提供良好的技术支持。 所谓计算机取证就是利用计算机技术,按照合法的程序与规范对计算机犯罪 证据进行发现、固定、提取、分析和表达的过程【l‘丌。计算机取证技术是一个迅速
成长的研究领域,它在国家安全、消费者保护和犯罪调查方面有着重要的应用前

景。数据恢复可作为公安机关进行犯罪痕迹分析的依据,也可作为检察机关进行 作案时间分析的证据。这些都是数据恢复在计算机取证方面的应用。 在进行Windows下格式化数据恢复的时候,由于格式化后可能不为原来的文 件系统,磁盘分区的BPB参数遭到破坏,所以需要向客户了解一些分区的信息, 如每簇占用扇区数、分区大小等,再利用此方案,不断尝试,方可成功完成。在 这些方面,系统需进一步的完善,从而不断满足实际的需求。

四川师范大学硕十学位论文

参考文献
【1】EMC.Disk-Based
Data Protection The New Data Backup and Recovery

Imperative[DB/OL].2005.2. 【2】方成亮.数据恢复市场探寻.软件世界.2007.6. 【3】汪中夏,刘伟.数据恢复高级技术.北京:电子工业出版社,2005.3. 【4】太平洋电脑网:http://tech.watchstor.com/tech.16955.htm,2006.1. 【5】高万斌.浅谈计算机用户的数据安全策略.中国新技术新产品.2008.8. 【6】6靳慧云.电子数据恢复与犯罪侦查.铁道警官高等专科学校学报.2007.3 【7】戴士剑,张杰,郭久武.数据恢复技术综述(下).信息网络安全技术研究.2006. 【8】国家信息中心.大力发展我国的数据恢复产业.信息安全和通信保密.2004.8. 【9】李辉.天极网:http://news.chinabyte.com/149/1902149.shtml.2005.1. 【10】IT资讯.信息系统工程.2008.9
?

【1l】资讯-中国数据恢复急救门户网站:http://www.jsos.cn/html/48/n-148.html.2009.3 【12】张京生,汪中夏,刘伟.数据恢复方法及案例分析.。北京:电子工业出版社2008.7:57. 【13】郑平泰,磁盘数据安全技术与编程实例,北京:中国水利水电出版社2007.3:93—94. 【14】汪中夏,刘伟.数据恢复高级技术.北京:电子工业出版社,2005.3:192. 【15】ChinaUnix:http://www.chinaunix.net/jh/6/16699.html,2003.9. 【16】刘健,吴蕾.大容量硬盘分区信息链表研究.宜春学院学报(自然科学).2001年12月 第23卷第2期.


【171于淼,孙睿.计算机取证综述■匕京联合大学学报.自然科学版.2007.06月第21卷第 2期总68期. 【18】姚罡,李大军,梅顺良.硬盘分区链表结构分析与应用.微计算机信息.2006,22(3—3). 【19】黄国盛,梁平元,周小清.Windows环境中分区表结构剖析与安全修复.吉首大学学报 (自然科学版).2003,24(1). 【20】梁金千,张跃.NTFS文件系统的主要数据结构.计算机工程与应用.2003.8. 【21】邵志毅.文件恢复的可行性分析.陕西师范大学学报(自然科学版).2007.1 1. [22】杨泽明,许榕生,刘宝旭.文件删除的恢复与反恢复[J】.信息网络安全.2002(4):38—41. 【23】卢语丹,肖斓楠,赵波.恢复删除文件的一种方法【J】.云南师范大学学报(自然科学 版).1998,18(3):36—39. 【24】吉治钢,蔡利栋.基于EXT2文件系统的Linux文件恢复.暨南大学学报(自然科学
8l

碉川师范人学硕十学位论文

版).2004.10. 【25】Dave
Probert.Understanding the

Windows.北京:机械工业出版社,2004.

[26】王晓燕.浅析计算机数据恢复技术.太原大学学报.2007.9. 【27】戴士剑,涂彦晖.数据恢复技术(第2版.北京:电子工业出版社,2005.3. 【28】涂彦晖,戴士剑.数据安全与编程技术.北京:清华大学出版社,2005.8. 【29】郑平泰.磁盘数据安全技术与编程实例.北京:中国水利水电出版社,2007. 【30】王春海,朱书敏.数据恢复实用技术.北京:电子工业出版社,2008.1. 【31】扈新波.数据恢复技术与典型实例.北京:电子工业出版社,2007.5.

【32】尤晋元,史美林.Windows操作系统原理【M】.北京:机械工业出版社,2002.
【33】张树澍,陈代军,李新萌.修复和维护你的硬盘,北京:中国希望电子出版社. 【34】宋群生,宋亚琼.硬盘扇区读写技术一修复硬盘与恢复文件.北京:机械上业出版社. 【35】袁津生,郭敏哲.计算机网络与安全实用编程.北京:人民邮电出版社. 【36】托伊戈.灾难恢复规划.北京:电子工业出版社. 【37】Dave,Probert.Understanding the Windows.北京:机械工业出版社. 【381万金,陈乐.电脑故障急救与数据恢复.北京:清华大学出版社. 【39】郭玉东.Linux操作系统结构分析[MI.西安:西安电子科技大学出版社.

[40】赵双峰,费金龙,刘楠,武东英.Windows NTFS下数据恢复的研究与实现.计算机1=
程与设计.2008.1. 【41】包怀忠.EXT2文件系统分析.计算机工程与设计.2005.4. 【42】郭学理,韦智,潘松.Linux的Ext2文件系统.计算机应用研究.2001. 【43】涂彦晖.NTFS文件系统内核分析与数据安全.金山软件股份有限公司.2006.8. 【44】王玲,钱华林.计算机取证技术及其发展趋势.软件学报.2003,14(9):1635.1644.

【45】黄步根.数据恢复与计算机取证.计算机安全.2006,(6):79—80.
[46】黄步根.FAT系统文件操作痕迹特征分析.计算机工程与应用.2007,43(7):233.235. 【

相关文章:
关于恢复硬盘数据的探讨与实现.doc
关于恢复硬盘数据的探讨与实现 【摘要】当今时代,计算机数据成为工作生活离不开 ...此时通过硬 盘管理工具或恢复软件很容易恢复。 2.硬盘格式化情况下数据恢复 ...
浅析计算机数据恢复技术的原理与实现.doc
将就数据恢复技术的含义、类型以及数据恢复的理论基础和 实现原理进行详细地探讨。...在一些特殊情况下数据将很难被恢复,如数据被覆 盖、硬盘低级格式化清零、磁盘...
数据恢复技术硬盘分区与格式化_图文.ppt
数据恢复技术硬盘分区与格式化 - 硬盘分区与格式化 教学目标与行业要求相适应 ◆ 教学内容与就业创业相适应 一、任务描述与分析 ? BIOS只能表示当前硬盘能够被检测到...
数据恢复技术应用研究论文(06060320).doc
在深入分析 FAT 和 NTFS 格式的基础上,研究文件误删除,误格式化的 数据恢复; 4. 研究常用文档(office 文档/影音文档/压缩文档)等数据恢复技术; 5. 研究硬盘...
数据恢复技术原理与应用(吴克文).ppt
磁盘阵列 8. 数据恢复技术研究现状 1. 数据恢复的概念与范畴数据恢复,简单的说...文件误删、误格式化、分区表丢失、 BOOT区丢失 恢复方法:可以用常用的数据恢复...
希捷硬盘修复P表实现数据恢复的电子取证方法研究.doc
希捷硬盘修复P表实现数据恢复的电子取证方法研究_计算机硬件及网络_IT/计算机_...在硬盘低级格式化过程完成后,硬盘管 理系统会根据缺陷列表的内容,自动将存在缺陷...
误格式化硬盘数据恢复教程_图文.doc
格式化硬盘数据恢复教程 - 如果你不小心把硬盘、U盘分区给格式化了,可以尝试着使用格式化数据恢复工具软件进行恢复,比如全能数据恢复大师。
基于NTFS的数据恢复系统设计与实现_图文.pdf
李晓军西安高新技术研究所,陕西 西安 收稿日期:2017...实现过程,包括磁盘分析模块、分区扫描模块和数据恢复...产生的 原因主要有误操作,如误格式化或误删除;恶意...
硬盘格式化后的数据恢复_论文.pdf
硬盘格式化后的数据恢复 - 维普资讯 http://www.cqvip.com
硬盘损坏后恢复数据的几种方法nbsp误格式化硬盘数据的恢复.doc
硬盘损坏后恢复数据的几种方法nbsp误格式化硬盘数据恢复 - 硬盘损坏后恢复数据的几种方法 误格式化硬盘数据恢复 214 小游戏 http://www.214xyx.com/ ...
硬盘格式化后数据恢复怎么做?恢复硬盘文件的方法.doc
恢复硬盘文件的方法_计算机软件及应用_IT/计算机_专业资料。电脑硬盘格式化文件...强力数据恢复软件是上海互盾公司中技术雄厚的强大团队研发的一款操作便捷、 功能实...
硬盘高级格式化后如何恢复数据.doc
硬盘高级格式化后如何恢复数据 - 问题: 问题 推荐 ┊ 关注 ┊ 评论 紧急求助 9999 [新手] 硬盘高级格式化后如何恢复数据 回答:2 浏览:1872 10 分 提问时间:...
电脑的硬盘格式化数据怎样恢复.doc
电脑的硬盘格式化数据怎样恢复 - 电脑的硬盘格式化数据怎样恢复,电脑硬盘格式化恢复 使用电脑的朋友都知道, 我们的数据都是存放在电脑硬盘里的, 所以一旦遇到硬盘文件...
硬盘格式化后数据如何恢复.doc
硬盘格式化数据如何恢复 - 硬盘格式化数据如何恢复 今天工作上不不忙,正好想
Windows FAT32下格式化数据恢复方案设计与实现_图文.pdf
签名Applet机制的研究与实现[J].苏州大学学报,2004(8).[7]汪宏兵.基于J2EE...硬盘格式化数据恢复技术... 91页 1下载券 u盘格式化恢复免费软件,... 3...
Windows数据恢复技术的研究.doc
数据恢复,论文格式 基于Windows 平台的数据恢复技术...下顺序存储和离散存储的数据恢复算法,并编程实现;...文件进行恢复,还可以恢复物理损伤的磁盘数据,也可以 ...
硬盘格式化后如何数据恢复l硬盘格式化后怎么数据恢复.doc
硬盘格式化后如何数据恢复l硬盘格式化后怎么数据恢复_电脑基础知识_IT/计算机_专业资料。硬盘格式化后如何数据恢复 真是倒霉,电脑不知道怎么就中了毒。可能是我玩游戏...
移动硬盘格式化后数据能恢复吗?_图文.doc
移动硬盘格式化后数据能恢复吗? - 如果你不小心把硬盘、U盘分区给格式化了,可以尝试着使用格式化数据恢复工具软件进行恢复,比如全能数据恢复大师。
数据恢复基础知识_图文.ppt
数据恢复的概念与研究范围 1、数据: 不仅包括计算机...如误删除、 误格式化等。 2、物理问题:存储介质...磁头是硬盘技术中最重要和关键的一环,实际 上是...
硬盘格式化数据恢复.doc
硬盘格式化数据恢复 - 家用台式电脑硬盘格式化了,数据怎样恢复 日常生活中使用电脑时,难免会遇到因为误操作、分区提示格式化、硬盘分区有病毒等情况 格式化硬盘,那么...
更多相关标签: