CN112115002B - 从损坏或不可信机械硬盘恢复文件的方法及装置 - Google Patents

从损坏或不可信机械硬盘恢复文件的方法及装置 Download PDF

Info

Publication number
CN112115002B
CN112115002B CN202010999648.XA CN202010999648A CN112115002B CN 112115002 B CN112115002 B CN 112115002B CN 202010999648 A CN202010999648 A CN 202010999648A CN 112115002 B CN112115002 B CN 112115002B
Authority
CN
China
Prior art keywords
file
metadata
address
original image
restored
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010999648.XA
Other languages
English (en)
Other versions
CN112115002A (zh
Inventor
张帆
杨闰鹏
张聪
袁操
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan Polytechnic University
Original Assignee
Wuhan Polytechnic University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Wuhan Polytechnic University filed Critical Wuhan Polytechnic University
Priority to CN202010999648.XA priority Critical patent/CN112115002B/zh
Publication of CN112115002A publication Critical patent/CN112115002A/zh
Application granted granted Critical
Publication of CN112115002B publication Critical patent/CN112115002B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种从盘片损坏或不可信的机械硬盘恢复文件的方法,所述方法通过通过磁力显微镜从机械硬盘盘片获取原始映像;从所述原始映像中获取元数据;根据所述元数据获取待恢复文件的文件系统相关信息;根据所述文件的文件系统相关信息获得所述待恢复文件的目标全局扇区线性编址;根据所述目标全局扇区线性编址从所述原始映像中读取数据,并根据读取的数据恢复所述待恢复文件。本发明适用于各种文件系统,且独立于操作系统,仅仅依赖于原始映像,即可以恢复盘片损坏或者不可信的机械硬盘上的文件,不存在误报。

Description

从损坏或不可信机械硬盘恢复文件的方法及装置
技术领域
本发明涉及数据处理技术领域,尤其涉及一种从损坏或者不可信的机械硬盘进行文件恢复的方法及装置。
背景技术
文件系统是机密/隐私信息的重要来源,各种类型的机密/隐私信息(例如文档,音频,视频,图片等)存储在文件系统中。尽管已经充分考虑了文件系统的健壮性,但是仍然可能遇到文件系统损坏、硬件出现故障或者硬件不可信的情况。为了从发生故障或者不可信的硬件中拯救数据,便需要文件恢复技术。
一种流行的文件恢复方法是基于雕刻的文件恢复方法CFR(Carving-based FileRecovery),它利用语法签名,语义信息或启发式技术来“间接推断”哪些数据块属于要恢复的文件,从而实现文件恢复。另一种流行的方法是基于元数据的文件恢复方法MFR(Metadata-based File Recovery),它利用元数据信息来解析文件系统,进而实现文件恢复。
然而,上述方法都严重依赖于操作系统OS(Operating System)所提供的服务。具体地说,在利用现有的文件恢复方法恢复文件时,用户要么必须将硬盘挂载到另外一台计算机上以利用另一台计算机的OS,要么必须启动驻留在该硬盘自身的OS,否则文件恢复过程无法进行。但是,在实践中,经常遇到无法利用OS的情形(特别是由于硬件损坏而无法利用OS的情形),这使得现有依赖于OS的文件恢复方法变得不可行。
以下通过几例进行说明。(1)情形1:硬件故障。如硬盘盘片(被有意或者无意地)弯曲了。对于这种情形,即使盘片的变形很小,传统的机械硬盘也将无法正常工作,这使得该硬盘既无法挂载到其他机器上,也不能引导自身,从而无法利用OS所提供的服务。(2)情形2:硬件不可信。随着集成电路技术的发展,恶意硬件变得越来越普遍。攻击者很容易将不可信的芯片或者固件植入硬盘以实现恶意功能。在这种情况下,由于底层硬盘硬件不可信,那么上层OS只能接收(经过恶意硬件处理过的)不可信的输入信息,从而导致OS提供的服务是不可信的,进而现有依赖于OS的文件恢复方法也将无法正常工作。(3)情形3:硬件被安全净化/清除(sanitization)。美国联邦标准NIST 800-88是对存储介质进行安全净化的权威标准。NIST 800-88提供的安全净化方法包括;密码学意义上的文件删除、存储介质消磁、存储介质物理破坏等。显然,经过安全净化后的硬盘将无法再挂载到其他计算机,也不能启动自身操作系统。综上,寻求完全无需操作系统支持的文件恢复方法,是亟待解决的技术问题。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于提供一种从损坏或不可信机械硬盘恢复文件的方法,旨在解决现有技术中,在硬盘故障或者硬盘不可信的情况下独立于操作系统进行文件恢复的技术问题。
为实现上述目的,本发明提供一种从损坏或不可信机械硬盘恢复文件的方法,所述方法包括以下步骤:
通过磁力显微镜从机械硬盘盘片获取原始映像;
从所述原始映像中获取元数据;
根据所述元数据获取待恢复文件的文件信息;
根据所述文件信息获得所述待恢复文件的目标全局扇区线性编址;
根据所述目标全局扇区线性编址从所述原始映像中读取数据,并根据读取的数据恢复所述待恢复文件。
优选的,所述从所述原始映像中获取元数据,具体包括:
从所述原始映像中解析得到主引导信息;
根据所述主引导信息获得待恢复文件所在分区的分区全局扇区线性基址;
根据元数据在文件系统内的存储地址获取所述元数据距离所述文件系统所在分区首地址的第一偏移地址;
根据所述分区全局扇区线性基址和所述第一偏移地址获得第一全局扇区线性编址;
根据所述第一全局扇区线性编址和所述原始全局扇区线性编址从所述原始映像中获取元数据。
优选的,所述根据所述主引导信息获得待恢复文件所在分区的分区全局扇区线性基址,具体包括:
根据所述主引导信息获取分区起始扇区所在的柱面号、磁头号和扇区号;
根据所述柱面号、所述磁头号和所述扇区号获得所在分区的分区全局扇区线性基址。
优选的,所述根据所述元数据获取待恢复文件的文件信息,具体包括:
从所述原始映像中获取待恢复文件系统的根目录信息;
根据所述元数据对所述根目录信息进行遍历,获取文件系统内待恢复文件的文件和目录相关信息。
优选的,所述从所述原始映像中获取待恢复文件系统的根目录信息,具体包括:
根据所述根目录在文件系统中的存储地址获取所述根目录距离所述文件系统所在分区首地址的第二偏移地址;
根据所述分区全局扇区线性基址和所述第二偏移地址获取第二全局扇区线性编址;
根据所述第二全局扇区线性编址和所述原始全局扇区线性编址从所述原始映像中获取待恢复文件系统的根目录信息。
优选的,所述根据所述文件信息获得所述待恢复文件的目标全局扇区线性编址,具体包括:
根据所述文件信息获取所述待恢复文件的存储单元地址;
根据所述存储单元地址和所述元数据获取所述待恢复文件距离所述文件系统所在分区首地址的第三偏移地址;
根据所述分区全局扇区线性基址和所述第三偏移地址获取所述待恢复文件的目标全局扇区线性编址。
优选的,所述从损坏或不可信机械硬盘恢复文件的方法还包括:
根据所述待恢复文件的文件信息建立待恢复文件集合,所述待恢复文件集合包含所述待恢复文件对应的文件标识;
在所述待恢复文件恢复完成时,删除所述待恢复文件集合中已恢复文件所对应的文件标识;
在所述待恢复文件集合为空时,结束文件恢复。
此外,为实现上述目的,本发明还提供一种从损坏或不可信机械硬盘恢复文件的装置,所述装置包括:
原始映像获取模块,用于通过磁力显微镜从机械硬盘盘片获取原始映像;
元数据获取模块,用于从所述原始映像中获取元数据;
文件信息获取模块,用于根据所述元数据获取待恢复文件的文件信息;
编码模块,用于根据所述文件信息获得所述待恢复文件的目标全局扇区线性编址;
恢复模块,用于根据所述目标全局扇区线性编址从所述原始映像中读取数据,并根据读取的数据恢复所述待恢复文件。
此外,为实现上述目的,本发明还提供一种从损坏或不可信机械硬盘恢复文件的设备,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的文件恢复程序,所述文件恢复程序配置为实现如上述的从损坏或不可信机械硬盘恢复文件的方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有从损坏或不可信机械硬盘恢复文件的程序,所述文件恢复程序被处理器执行时实现如上述的从损坏或不可信机械硬盘恢复文件的方法的步骤。
本发明通过获取存储介质内的原始映像;从所述原始映像中获取元数据;根据所述元数据获取待恢复文件的文件信息;根据所述文件信息获得所述待恢复文件的目标全局扇区线性编址;根据所述目标全局扇区线性编址从所述原始映像中读取数据,并根据读取的数据恢复所述待恢复文件。本发明适用于各种文件系统,且独立于操作系统,仅仅依赖于原始映像,即可以恢复盘片损坏或者不可信的机械硬盘上的文件,不存在误报。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的用户设备结构示意图;
图2是本发明从损坏或不可信机械硬盘恢复文件的方法第一实施例的流程示意图;
图3是本发明从损坏或不可信机械硬盘恢复文件的方法第二实施例的流程示意图;
图4本发明从损坏或不可信机械硬盘恢复文件的装置的结构框图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
参照图1,图1为本发明实施例方案涉及的硬件运行环境的用户设备的结构示意图。
如图1所示,该用户设备可以包括:处理器1001,例如CPU,通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
需要说明的是,所述用户设备可为计算机、笔记本电脑或平板电脑等设备,本实施例对此不加以限制。
本领域技术人员可以理解,图1中示出的结构并不构成对用户设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及从损坏或不可信机械硬盘恢复文件的程序。
在图1所示的用户设备中,网络接口1004主要用于与外部网络进行数据通信;用户接口1003主要用于接收用户的输入指令;所述用户设备通过处理器1001调用存储器1005中存储的文件恢复程序,并执行以下操作:
通过磁力显微镜直接从硬盘盘片获取原始映像;
将所述原始映像输入并存储于存储介质内;
从所述存储介质中的所述原始映像中获取元数据;
根据所述元数据获取待恢复文件的文件信息;
根据所述文件信息获得所述待恢复文件的目标全局扇区线性编址;
根据所述目标全局扇区线性编址从所述原始映像中读取数据,并根据读取的数据恢复所述待恢复文件。
进一步地,处理器1001可以调用存储器1005中存储的从损坏或不可信机械硬盘恢复文件的程序,还执行以下操作:
从所述原始映像中解析得到主引导信息;
根据所述主引导信息获得待恢复文件所在分区的分区全局扇区线性基址;
根据元数据在文件系统内的存储地址获取所述元数据距离所述文件系统所在分区首地址的第一偏移地址;
根据所述分区全局扇区线性基址和所述第一偏移地址获得第一全局扇区线性编址;
根据所述第一全局扇区线性编址和所述原始全局扇区线性编址从所述原始映像中获取元数据。
进一步地,处理器1001可以调用存储器1005中存储的从损坏或不可信机械硬盘恢复文件的程序,还执行以下操作:
根据所述主引导信息获取分区起始扇区所在的柱面号、磁头号和扇区号;
根据所述柱面号、所述磁头号和所述扇区号获得所在分区的分区全局扇区线性基址。
进一步地,处理器1001可以调用存储器1005中存储的从损坏或不可信机械硬盘恢复文件的程序,还执行以下操作:
从所述原始映像中获取待恢复文件系统的根目录信息;
根据所述元数据对所述根目录信息进行遍历,获取文件系统内待恢复文件的文件和目录相关信息。
进一步地,处理器1001可以调用存储器1005中存储的从损坏或不可信机械硬盘恢复文件的程序,还执行以下操作:
根据所述根目录在文件系统中的存储地址获取所述根目录距离所述文件系统所在分区首地址的第二偏移地址;
根据所述分区全局扇区线性基址和所述第二偏移地址获取第二全局扇区线性编址;
根据所述第二全局扇区线性编址和所述原始全局扇区线性编址从所述原始映像中获取待恢复文件系统的根目录信息。
进一步地,处理器1001可以调用存储器1005中存储的从损坏或不可信机械硬盘恢复文件的程序,还执行以下操作:
根据所述文件信息获取所述待恢复文件的存储单元地址;
根据所述存储单元地址和所述元数据获取所述待恢复文件距离所述文件系统所在分区首地址的第三偏移地址;
根据所述分区全局扇区线性基址和所述第三偏移地址获取所述待恢复文件的目标全局扇区线性编址。
进一步地,处理器1001可以调用存储器1005中存储的从损坏或不可信机械硬盘恢复文件的程序,还执行以下操作:
根据所述待恢复文件的文件信息建立待恢复文件集合,所述待恢复文件集合包含待恢复文件对应的文件标识;
在上述待恢复文件恢复完成时,删除所述待恢复文件集合中已恢复文件所对应的文件标识;
在所述待恢复文件集合为空时,结束文件恢复。
本实施例通过上述方案,利用磁力显微镜等技术从机械硬盘盘片获取原始映像存储于存储介质;从所述存储介质读取所述原始映像,并从所述原始映像中获取元数据;根据所述元数据获取待恢复文件的文件信息;根据所述文件信息获得所述待恢复文件的目标全局扇区线性编址;根据所述目标全局扇区线性编址从所述原始映像中读取数据,并根据读取的数据恢复所述待恢复文件。本发明适用于各种文件系统,且独立于操作系统,仅仅依赖于硬盘原始映像,即可以恢复硬盘上的文件。
基于上述硬件结构,提出本发明从损坏或不可信机械硬盘恢复文件的方法实施例。
参照图2,图2为本发明从损坏或不可信机械硬盘恢复文件的方法第一实施例的流程示意图。
在第一实施例中,所述从损坏或不可信机械硬盘恢复文件的方法包括以下步骤:
S10:通过磁力显微镜直接从硬盘盘片获取原始映像。
需要说明的是,本实施方式解决机械硬盘在存在硬件故障、机械硬盘不可信(如固件存在恶意代码等)、以及机械硬盘被安全净化等的条件下,如何独立于操作系统,仅仅通过机械硬盘盘片恢复盘片中的文件文件。其中,所述原始映像是指存储介质内所存储的数据字节,由于单纯的数据字节没有语义信息,因而其称为原始映像。当获取整个存储介质内所有可获取的数据字节之后,就相当于获取了原始映像。
在本实施例中,所述存储介质可以为机械硬盘。对于现代大硬盘,所有的扇区从0开始,以依次加1线性递增的方式编号,称为全局扇区线性编址(也叫LBA,Logical BlockAddressing)。由于全局线性扇区编址是现代大磁盘的标准编址方式,因而在读取硬盘原始映像的过程中,同时记录数据所属的扇区线性地址是可行的。
在本实施例中,利用磁力显微镜技术直接读取盘片上的数据字节以获取原始映像。磁力显微镜技术的优势在于:不论盘片是完整无损伤的,还是有损伤的(如盘片被弯曲、有划痕、有腐蚀,或者盘片破裂等物理/化学损伤),都可以从盘片上读取留存的信息——当然,如果盘片是无损伤的,则可以得到完整的磁盘原始映像;如果盘片是有损伤的,则最终获得的硬盘原始映像可能会有数据缺失。在读取盘片数据字节的同时,也需要同步记录所读取数据字节所在的扇区地址信息。当然获取原始映像的方法不限于一种,本实施例对此不做限制。
S20:从所述存储介质读取所述原始映像,并从所述原始映像中获取元数据。
需要说明的是,文件系统的目的,是以特定的结构存储文件,并对存储的文件进行管理。为了达成上述目标,任何一个文件系统都必须有一个称为元数据(meta-data)的数据结构。元数据包含了文件系统正常工作所必需的所有参数信息。具体地说,文件系统驱动必须首先获取元数据,之后才能在元数据的指导下对文件系统数据进行初始化、增删读写和管理等一系列操作。一旦元数据获取失败,整个文件系统将会崩溃而无法工作。因此,元数据是任何一个文件系统驱动正常工作的基石,它必须存储在硬盘上固定的位置,因为只有这样才能使得驱动可以直接读取元数据,并进而完成文件系统的初始化和运行等一系列工作。
在本实施例中,所述从所述原始映像中获取元数据,具体包括:从所述原始映像中解析得到主引导信息;根据所述主引导信息获得待恢复文件所在分区的分区全局扇区线性基址;根据元数据在文件系统内的存储地址获取所述元数据距离所述文件系统所在分区首地址的第一偏移地址;根据所述分区全局扇区线性基址和所述第一偏移地址获得第一全局扇区线性编址;根据所述第一全局扇区线性编址和所述原始全局扇区线性编址从所述原始映像中获取元数据。
需要说明的是。不同的文件系统中元数据的位置并不一致。但是对于一个特定的文件系统,其元数据的位置必定是固定的,并以硬编码的方式写入到文件系统驱动中。将上述元数据在文件系统内的固定地址记为metadata_offset_addr,这个地址本质上是元数据距离文件系统所在分区首地址的偏移地址,即所述第一偏移地址。
在本实施例中,所述根据所述主引导信息获得待恢复文件所在分区的分区全局扇区线性基址,具体包括:根据所述主引导信息获取分区起始扇区所在的柱面号、磁头号和扇区号;根据所述柱面号、所述磁头号和所述扇区号获得所在分区的分区全局扇区线性基址。
需要说明的是,所述主引导信息为存储在主引导扇区(即0扇区)的主引导代码MBR。一个MBR包含四个分区表,每一个分区表都是16个字节。分区表信息的0x01-0x03字节包括了本分区起始柱面号C、磁头号H和扇区号S的信息。其中,柱面号C:0x02字节高2位+0x03字节8位;磁头号H:0x01字节;扇区号S:0x02字节的低6位。因此,读取待恢复文件所在分区的分区表信息的0x01-0x03字节,从中可以得到分区起始扇区所在的柱面号C、磁头号H和扇区号S信息。上述CHS可以用如下标准公式转换为全局扇区线性基址GSLA(GlobalSector Linear Address):GSLA=(C*HPC+H)*SPT+(S-1)。公式中,CHS可以直接从分区表获取,HPC和SPT与硬盘相关,对于现代大硬盘可以默认取16和63。将计算得到的GSLA记为基址base_addr。将所述基址GSLA和元数据偏移地址metadata_offset_addr相加,即GSLA+metadata_offset_addr,所得结果即为元数据的全局线性扇区地址。然后,根据全局线性扇区地址即可以在原始映像中获取元数据。
需要说明的是,由于元数据的重要性,文件系统对于元数据有多个备份。对于特定的文件系统,这些元数据备份在文件系统内部的存储位置也是固定的,因而也可以通过类似的方式计算元数据备份的的全局线性扇区地址。因此,如果元数据损坏,我们仍可以从硬盘原始映像中通过读取元数据备份而得到元数据。
S30:根据所述元数据获取待恢复文件的文件信息。
需要说明的是,任何一个文件系统,一定是以特定的结构存储文件,并且以特定的结构存储文件系统管理数据结构。其中包括:文件系统的目录数据结构,文件系统的目录中包含有子目录和文件,而文件系统中所有子目录的遍历是一个递归过程,因此,根据目录数据结构,即可以递归搜索得到一个目录中的所有的子目录信息,以及获取该目录(及其子目录)内的所有文件信息;以及文件数据结构,文件数据结构记录了与文件相关的所有信息,包括该文件在文件系统内部的存储地址信息。上述的目录数据结构及文件数据结构均能够从元数据中获取。
在本实施例中,所述根据所述元数据获取待恢复文件的文件信息,具体包括:从所述原始映像中获取待恢复文件系统的根目录信息;根据所述元数据对所述根目录信息进行遍历,获取文件系统内待恢复文件的文件信息。
需要说明的是,任何一个文件系统中,(子)目录和文件以一棵倒立的“树”的形式进行组织。在倒立的“树”的最上端,是称为“根目录”的树根。每一个文件系统都有唯一一个根目录。对于一个特定的文件系统,根目录有一个固定的编号,从这个固定编号出发可以计算根目录结构体在该文件系统内的固定存储位置。之所以根目录也存储于文件系统的固定位置,是因为文件系统内部子目录的遍历是一个递归的过程,既然是递归,就一定要有一个递归出口,根目录就承担了递归出口的角色,因此根目录数据结构在文件系统内的存储位置是一定可以直接计算出来的固定位置,否则整个文件系统就无法正常工作。
在本实施例中,所述从所述原始映像中获取待恢复文件系统的根目录信息,具体包括:根据所述根目录在文件系统中的存储地址获取所述根目录距离所述文件系统所在分区首地址的第二偏移地址;根据所述分区全局扇区线性基址和所述第二偏移地址获取第二全局扇区线性编址;根据所述第二全局扇区线性编址和所述原始全局扇区线性编址从所述原始映像中获取待恢复文件系统的根目录信息。
需要说明的是,根目录在文件系统内的存储位置本质上是距离文件系统所在分区首地址的偏移地址root_dir_offset_addr,结合已经得到的分区基址GSLA,将两者相加,即GSLA+root_dir_offset_addr,所得结果即为根目录的全局扇区线性编址。既然得到了根目录的全局扇区线性编址,从原始映像中就可以直接读取根目录数据结构。
需要说明的是,得到了根目录的数据结构后,再根据从元数据中的文件系统硬盘布局的目录数据结构信息,即可以以递归的方式遍历得到自根目录以下的所有子目录数据结构、以及根目录和所有子目录内存储的文件的数据结构,从而可获取待恢复文件的文件信息。
S40:根据所述文件信息获得所述待恢复文件的目标全局扇区线性编址。
S50:根据所述目标全局扇区线性编址从所述原始映像中读取数据,并根据读取的数据恢复所述待恢复文件。
需要说明的是,在任何一个文件系统中,通常将多个连续的扇区组织成一个最小访问单元,如Windows的“簇”,Linux的“块”等,将其统称为“存储单元”。文件内容就存储在这些存储单元当中。前述已经说明,每一个存储单元都有一个地址。
在本实施例中,所述根据所述文件信息获得所述待恢复文件的目标全局扇区线性编址,具体包括:根据所述文件信息获取所述待恢复文件的存储单元地址;根据所述存储单元地址获取所述待恢复文件距离所述文件系统所在分区首地址的第三偏移地址;根据所述分区全局扇区线性基址和所述第三偏移地址获取所述待恢复文件的目标全局扇区线性编址。
需要说明的是,根据元数据中的文件数据结构可以获取该文件在文件系统内部的存储地址信息,该存储地址信息是和文件系统相关的,与元数据地址类似,本质上是距离文件系统所在分区首地址的偏移地址。假设这个偏移地址是file_offset_addr,结合已经得到的分区基址GSLA,将两者相加,即GSLA+file_offset_addr,所得结果即为文件存储的全局扇区线性编址。既然得到了文件存储的全局扇区线性编址,那么从原始映像中就可以直接读取文件数据进行恢复。
此外,在本实施例中,所述从损坏或不可信机械硬盘恢复文件的方法还包括:根据所述待恢复文件的文件信息建立待恢复文件集合,所述待恢复文件集合包含所述待恢复文件对应的文件标识;在所述待恢复文件恢复完成时,删除所述待恢复文件集合中已恢复文件所对应的文件标识;在所述待恢复文件集合为空时,结束文件恢复。
在本实施例中,若待恢复文件集合不为空,则说明说明还有文件待恢复,继续执行文件恢复过程。
本实施例属于通用情况下的从损坏或不可信机械硬盘恢复文件的方法,通过获取存储介质内的原始映像;从所述原始映像中获取元数据;根据所述元数据获取待恢复文件的文件信息;根据所述文件信息获得所述待恢复文件的目标全局扇区线性编址;根据所述目标全局扇区线性编址从所述原始映像中读取数据,并根据读取的数据恢复所述待恢复文件。本发明适用于各种文件系统,且独立于操作系统,仅仅依赖于硬盘原始映像,即可以恢复硬盘上的文件。本发明不存在误报(即错误恢复),所能恢复的文件数量依赖于原始映像的数据完整程度。如果原始映像中没有数据缺失,则方法可以完整、精确地恢复整个文件系统中的所有文件。
此外,为进一步说明本发明的技术方案,以下以Linux平台兼容EXT3的EXT4文件系统为例,对本发明的从损坏或不可信机械硬盘恢复文件的方法进行说明。
参照图3,图3为本发明从损坏或不可信机械硬盘恢复文件的方法第二实施例的流程示意图。
在第二实施例中,所述从损坏或不可信机械硬盘恢复文件的方法基于Linux平台EXT4文件系统进行实施,所述方法包括以下步骤:
S100:获取机械硬盘原始映像及所述原始映像的原始全局扇区线性编址。
需要说明的是,在本实施例中,依旧可以采用磁力显微镜技术直接从硬盘盘片读取数据字节,以及获取数据字节对应的全局扇区线性编址。也可以采用其他方法,对此不做限制。
S200:获取EXT4文件系统的元数据super block。
需要说明的是,EXT4文件系统将整个硬盘所有的扇区按固定数量组成称为“块(block)”的基本存储单位。所有的数据读写都是按块进行的。所有的块从0开始编号,按+1的方式全局递增。块存放的位置是:从所在分区的起始扇区开始,按编号从小到大依次连续存放。
在EXT4中,块的编号即等价于块的地址。又由于一个块中具体包含多少个扇区可以从元数据super block得到,因此,块地址很容易等价转换为距离EXT4所在分区首地址的扇区数,这个扇区数可以看作距离分区首地址的偏移地址,再与分区基址GSLA相加,即得到块的全局线性扇区地址,从而可以从硬盘映像中直接读取块数据。
需要说明的是,EXT4文件系统的元数据super block在文件系统内的存储位置是固定的。具体地,super block的固定位置是:从距离EXT4所在文件系统分区开头1024字节的位置开始的,连续1024个字节。由于每个扇区有512个字节,因此,元数据super block距离EXT4所在文件系统分区的偏移地址为2个扇区。参考第一实施例中的方法,获取全局扇区线性基址GSLA。故从GSLA+2号扇区出发出发,连续读取2个扇区,即得到super block。
S300:根据所述元数据super Block,从根目录出发,递归获取获取待恢复系统内的所有待恢复文件的文件inode号。
需要说明的是,为了便于管理,EXT4将固定数量的块组织成“块组(blockgroup)”。一个块组中有多少个块,可以从元数据super block中读取。EXT4中每一个块组都有一个一一对应的“块组描述符(block group descriptor)”。块组描述符从0开始编号,按+1的方式全局递增。整个EXT4中所有块组描述符的存放的位置是:从super block所在块的后一个块开始,按照编号从小到大,依次连续存放。也就是说,如果super block位于N#号块,则EXT4内的所有块组描述符一定从(N+1)#号块开始连续存放。又由于每一个块组描述符都是固定大小(sizeof(struct EXT4_group_desc)字节),因此,给定任何一个块组描述符编号G#,G#号块组描述符结构体距离距离(N+1)#号块的偏移是G*sizeof(struct EXT4_group_desc)字节,从而可以直接从硬盘原始映像读取G#号组描述符的结构体。
EXT4将所有的正规文件、目录、外设、内存等都统统抽象为“文件”。每一个文件都有一个一一对应的inode号。EXT4通过inode号来读取对应的inode结构体,进而对文件进行读写访问和管理。
EXT4通过inode号读取inode结构体的方法如下。首先,所有的inode都从1开始编号,并以+1的方式全局递增;其次,每一个块组中使用的inode号的数量都是固定的,这个数量可以从super block读取;最后,每一个块组中在使用的inode号时,都是从小到大依次递增连续使用。根据上述三点信息,即可以读取任何一个特定的inode的结构体,不妨假设当前的inode号是i#,读取i#号inode的方法如下:
首先,从元数据super block读取得到每个块组所占用的inode的个数m,则i#号inode所属的块组号是G#=i#/m。接下来,读取G#号组描述符结构体,在组描述符结构体中,有一个称为“inode表(inode table)”的指针。inode表指针的值实质就是块地址,从这个块地址开始,该块组所使用的所有inode的结构体都依次连续存储。前已说明,块地址可以等价转换为全局扇区线性编址,从而我们可以从硬盘原始映像直接读取inode表的内容。在inode表中,每一个inode结构体都是固定大小(大小为sizeof(struct EXT4_inode)字节),又由于“i#MOD m”(MOD是取余操作)给出了i#号inode在inode表中的偏移,因而我们立即可以从硬盘原始映像中读取i#号inode所对应的inode结构体。
需要说明的是,EXT4文件系统组织为一棵“倒立”的树的形式,最上面的“树根”是唯一的根目录“/”。在EXT4文件系统中,根目录“/”的inode固定为2,因此可以通过上述方法读取2#inode结构体。
可以理解的是,2#inode结构体是一个目录inode结构体,从这个目录结构体中我们可以得到“/”下所有文件的inode,以及“/”下所有子目录的inode。进一步的,根据上述对所有文件的inode,以及“/”下所有子目录的inode进去读取,可以获取所有文件的inode,即待恢复文件的文件信息。
具体地,建立一个空集合f2r(File to Recovery)和一个先进先出队列sub_dir(Sub-Directory)。将所有文件inode放入f2r中等待恢复;将所有子目录inode放入sub_dir等待以宽度优先的方式递归遍历所有下层子目录以及目录内的文件。方法如下:
(1)首先,从sub_dir的队首取出一个子目录inode,并将其从sub_dir中删除。
(2)然后,读取这个子目录inode对应的inode结构体,显然,这是一个目录inode结构体,从中可以得到这个子目录下的所有文件inode,以及这个子目录下的所有下层子目录inode。将所得到的所有文件inode放入f2r;将所得到的所有子目录inode放入sub_dir队尾。
(3)重复上述步骤(1)(2),直到sub_dir为空为止。
当sub_dir为空,则意味着EXT4内的所有目录都已经遍历完毕,并且所有目录内的所有文件(亦即EXT4内的所有文件)的inode都已经放入到f2r当中等待恢复。
S400:根据所述文件inode号获得所述待恢复文件的目标全局扇区线性编址。
需要说明的是,在获取了所有文件的inode后,参照步骤S300中的方法,能够从读取到文件inode结构体。在文件inode结构体中,有一个重要的数组i_block[15]。i_block[15]按顺序记录了存储该文件所实际占用的块号。参照前述,任何一个块号都可以等价转换为全局扇区线性编址。
S500:根据所述目标全局扇区线性编址从所述原始映像中读取数据,并根据读取的数据恢复所述待恢复文件。
可以理解的是,根据文件inode结构体中i_block[15]记录的块号对应的全局扇区线性编址,与原始全局扇区线性编址对照,即可恢复文件数据。
具体地,从f2r中取出一个文件inode号并放入临时变量tmp_file_inode,然后将该目录inode号从f2r中删除;
读取tmp_file_inode对应的文件inode结构体,结构体中的i_block[15]数组依次给出了该文件所占用的所有块号。基于元数据super block,这些块号可以等价转换为距离所在分区首地址GSLA的扇区数,将扇区数与GSLA相加,即可从得到该文件所占用扇区的全局扇区线性地址,从而可以直接从硬盘原始映像中读取文件文件内容进行恢复。
当f2r为空,说明EXT4文件系统内所有的文件都已经恢复完毕,文件恢复过程结束。
为便于理解本实施方式,以下给出一种文件恢复的示例算法:
输入参数:硬盘原始映像hd_raw_image。
算法初始化:令存放待恢复文件inode的集合f2r为空;令用于遍历子目录的先进先出队列sub_dir为空;读取hd_raw_image中的0号扇区得到MBR,并根据MBR的分区表信息计算分区起始地址GSLA=(C*HPC+H)*SPT+(S-1)(具体计算过程参见上文)。
算法主体:
读取EXT4文件系统的元数据,并放入EXT4_super_block结构体变量:super_block(具体过程参见上文);
读取根目录“/”,即inode=2的结构体。从中获取根目录下所有文件的inode,将其放入f2r等待恢复;获取根目录下所有子目录的inode,将其放入先进先出队列sub_dir的队尾等待递归遍历(具体过程参见上文)。
//以宽度优先的方式遍历EXT4中的所有目录
{//如果sub_dir不为空,说明仍然有子目录需要遍历
从sub_dir队首取出某个目录的inode号并放入临时变量tmp_dir_inode,然后将该目录inode号从sub_dir中删除;
读取tmp_dir_inode对应的目录inode结构体,从中获取tmp_dir_inode对应目录下的所有文件的inode,将其放入f2r等待恢复;获取tmp_dir_inode对应目录下的所有子目录的inode,将其放入先进先出队列sub_dir的队尾(具体过程参见上文)。
}
//恢复EXT4文件系统内的所有文件
while{//如果f2r不为空,说明仍然有文件需要恢复
从f2r中取出一个文件inode号并放入临时变量tmp_file_inode,然后将该目录inode号从f2r中删除;
读取tmp_file_inode对应的文件inode结构体,结构体中的i_block[15]数组依次给出了该文件所占用的所有块号(具体过程参见上文)。依次将所有块号等价转换为全局扇区线性地址(具体过程参见上文),即可从hd_raw_image中直接读取文件文件内容进行恢复。
}
算法结束:当f2r为空,说明EXT4文件系统内所有的文件都已经恢复完毕,算法结束。
本实施例通过获取机械硬盘原始映像及所述原始映像的原始全局扇区线性编址;获取EXT4文件系统的元数据super block;根据所述元数据super block获取待恢复文件的文件inode号;根据所述文件inode号获得所述待恢复文件的目标全局扇区线性编址;根据所述目标全局扇区线性编址从所述原始映像中读取数据,并根据读取的数据恢复所述待恢复文件。实现了Linux平台EXT4文件系统的文件恢复。
此外,为实现上述目的,本发明还提供一种文件恢复装置,所述装置包括:
原始映像获取模块110,用于通过磁力显微镜直接从硬盘盘片获取原始映像。
需要说明的是,本实施方式解决机械硬盘在存在硬件故障、机械硬盘不可信(如固件存在恶意代码等)、以及机械硬盘被安全净化等的条件下,如何独立于操作系统,仅仅通过机械硬盘盘片恢复盘片中的文件文件。其中,所述原始映像是指存储介质内所存储的数据字节,由于单纯的数据字节没有语义信息,因而其称为原始映像。当获取整个存储介质内所有可获取的数据字节之后,就相当于获取了原始映像。
在本实施例中,所述存储介质可以为机械硬盘。对于现代大硬盘,所有的扇区从0开始,以依次加1线性递增的方式编号,称为全局扇区线性编址(也叫LBA,Logical BlockAddressing)。由于全局线性扇区编址是现代大磁盘的标准编址方式,因而在读取硬盘原始映像的过程中,同时记录数据所属的扇区线性地址是可行的。
在本实施例中,利用磁力显微镜技术直接读取盘片上的数据字节以获取原始映像。磁力显微镜技术的优势在于:不论盘片是完整无损伤的,还是有损伤的(如盘片被弯曲、有划痕、有腐蚀,或者盘片破裂等物理/化学损伤),都可以从盘片上读取留存的信息——当然,如果盘片是无损伤的,则可以得到完整的磁盘原始映像;如果盘片是有损伤的,则最终获得的硬盘原始映像可能会有数据缺失。在读取盘片数据字节的同时,也需要同步记录所读取数据字节所在的扇区地址信息。当然获取原始映像的方法不限于一种,本实施例对此不做限制。
元数据获取模块120,用于从所述原始映像中获取元数据。
需要说明的是,文件系统的目的,是以特定的结构存储文件,并对存储的文件进行管理。为了达成上述目标,任何一个文件系统都必须有一个称为元数据(meta-data)的数据结构。元数据包含了文件系统正常工作所必需的所有参数信息。具体地说,文件系统驱动必须首先获取元数据,之后才能在元数据的指导下对文件系统数据进行初始化、增删读写和管理等一系列操作。一旦元数据获取失败,整个文件系统将会崩溃而无法工作。因此,元数据是任何一个文件系统驱动正常工作的基石,它必须存储在硬盘上固定的位置,因为只有这样才能使得驱动可以直接读取元数据,并进而完成文件系统的初始化和运行等一系列工作。
在本实施例中,所述从所述原始映像中获取元数据,具体包括:从所述原始映像中解析得到主引导信息;根据所述主引导信息获得待恢复文件所在分区的分区全局扇区线性基址;根据元数据在文件系统内的存储地址获取所述元数据距离所述文件系统所在分区首地址的第一偏移地址;根据所述分区全局扇区线性基址和所述第一偏移地址获得第一全局扇区线性编址;根据所述第一全局扇区线性编址和所述原始全局扇区线性编址从所述原始映像中获取元数据。
需要说明的是。不同的文件系统中元数据的位置并不一致。但是对于一个特定的文件系统,其元数据的位置必定是固定的,并以硬编码的方式写入到文件系统驱动中。将上述元数据在文件系统内的固定地址记为metadata_offset_addr,这个地址本质上是元数据距离文件系统所在分区首地址的偏移地址,即所述第一偏移地址。
在本实施例中,所述根据所述主引导信息获得待恢复文件所在分区的分区全局扇区线性基址,具体包括:根据所述主引导信息获取分区起始扇区所在的柱面号、磁头号和扇区号;根据所述柱面号、所述磁头号和所述扇区号获得所在分区的分区全局扇区线性基址。
需要说明的是,所述主引导信息为存储在主引导扇区(即0扇区)的主引导代码MBR。一个MBR包含四个分区表,每一个分区表都是16个字节。分区表信息的0x01-0x03字节包括了本分区起始柱面号C、磁头号H和扇区号S的信息。其中,柱面号C:0x02字节高2位+0x03字节8位;磁头号H:0x01字节;扇区号S:0x02字节的低6位。因此,读取待恢复文件所在分区的分区表信息的0x01-0x03字节,从中可以得到分区起始扇区所在的柱面号C、磁头号H和扇区号S信息。上述CHS可以用如下标准公式转换为全局扇区线性基址GSLA(GlobalSector Linear Address):GSLA=(C*HPC+H)*SPT+(S-1)。公式中,CHS可以直接从分区表获取,HPC和SPT与硬盘相关,对于现代大硬盘可以默认取16和63。将计算得到的GSLA记为基址base_addr。将所述基址GSLA和元数据偏移地址metadata_offset_addr相加,即GSLA+metadata_offset_addr,所得结果即为元数据的全局线性扇区地址。然后,根据全局线性扇区地址即可以在原始映像中获取元数据。
需要说明的是,由于元数据的重要性,文件系统对于元数据有多个备份。对于特定的文件系统,这些元数据备份在文件系统内部的存储位置也是固定的,因而也可以通过类似的方式计算元数据备份的的全局线性扇区地址。因此,如果元数据损坏,我们仍可以从硬盘原始映像中通过读取元数据备份而得到元数据。
文件信息获取模块130,用于根据所述元数据获取待恢复文件的文件信息。
需要说明的是,任何一个文件系统,一定是以特定的结构存储文件,并且以特定的结构存储文件系统管理数据结构。其中包括:文件系统的目录数据结构,文件系统的目录中包含有子目录和文件,而文件系统中所有子目录的遍历是一个递归过程,因此,根据目录数据结构,即可以递归搜索得到一个目录中的所有的子目录信息,以及获取该目录(及其子目录)内的所有文件信息;以及文件数据结构,文件数据结构记录了与文件相关的所有信息,包括该文件在文件系统内部的存储地址信息。上述的目录数据结构及文件数据结构均能够从元数据中获取。
在本实施例中,所述根据所述元数据获取待恢复文件的文件信息,具体包括:从所述原始映像中获取待恢复文件系统的根目录信息;根据所述元数据对所述根目录信息进行遍历,获取文件系统内待恢复文件的文件信息。
需要说明的是,任何一个文件系统中,(子)目录和文件以一棵倒立的“树”的形式进行组织。在倒立的“树”的最上端,是称为“根目录”的树根。每一个文件系统都有唯一一个根目录。对于一个特定的文件系统,根目录有一个固定的编号,从这个固定编号出发可以计算根目录结构体在该文件系统内的固定存储位置。之所以根目录也存储于文件系统的固定位置,是因为文件系统内部子目录的遍历是一个递归的过程,既然是递归,就一定要有一个递归出口,根目录就承担了递归出口的角色,因此根目录数据结构在文件系统内的存储位置是一定可以直接计算出来的固定位置,否则整个文件系统就无法正常工作。
在本实施例中,所述从所述原始映像中获取待恢复文件系统的根目录信息,具体包括:根据所述根目录在文件系统中的存储地址获取所述根目录距离所述文件系统所在分区首地址的第二偏移地址;根据所述分区全局扇区线性基址和所述第二偏移地址获取第二全局扇区线性编址;根据所述第二全局扇区线性编址和所述原始全局扇区线性编址从所述原始映像中获取待恢复文件系统的根目录信息。
需要说明的是,根目录在文件系统内的存储位置本质上是距离文件系统所在分区首地址的偏移地址root_dir_offset_addr,结合已经得到的分区基址GSLA,将两者相加,即GSLA+root_dir_offset_addr,所得结果即为根目录的全局扇区线性编址。既然得到了根目录的全局扇区线性编址,从原始映像中就可以直接读取根目录数据结构。
需要说明的是,得到了根目录的数据结构后,再根据从元数据中的文件系统硬盘布局的目录数据结构信息,即可以以递归的方式遍历得到自根目录以下的所有子目录数据结构、以及根目录和所有子目录内存储的文件的数据结构,从而可获取待恢复文件的文件信息。
编码模块140,用于根据所述文件信息获得所述待恢复文件的目标全局扇区线性编址。
恢复模块150,用于根据所述目标全局扇区线性编址从所述原始映像中读取数据,并根据读取的数据恢复所述待恢复文件。
需要说明的是,在任何一个文件系统中,通常将多个连续的扇区组织成一个最小访问单元,如Windows的“簇”,Linux的“块”等,将其统称为“存储单元”。文件内容就存储在这些存储单元当中。前述已经说明,每一个存储单元都有一个地址。
在本实施例中,所述根据所述文件信息获得所述待恢复文件的目标全局扇区线性编址,具体包括:根据所述文件信息获取所述待恢复文件的存储单元地址;根据所述存储单元地址获取所述待恢复文件距离所述文件系统所在分区首地址的第三偏移地址;根据所述分区全局扇区线性基址和所述第三偏移地址获取所述待恢复文件的目标全局扇区线性编址。
需要说明的是,根据元数据中的文件数据结构可以获取该文件在文件系统内部的存储地址信息,该存储地址信息是和文件系统相关的,与元数据地址类似,本质上是距离文件系统所在分区首地址的偏移地址。假设这个偏移地址是file_offset_addr,结合已经得到的分区基址GSLA,将两者相加,即GSLA+file_offset_addr,所得结果即为文件存储的全局扇区线性编址。既然得到了文件存储的全局扇区线性编址,那么从原始映像中就可以直接读取文件数据进行恢复。
此外,在本实施例中,所述从损坏或不可信机械硬盘恢复文件的方法还包括:根据所述待恢复文件的文件信息建立待恢复文件集合,所述待恢复文件集合包含所述待恢复文件对应的文件标识;在所述待恢复文件恢复完成时,删除所述待恢复文件集合中已恢复文件所对应的文件标识;在所述待恢复文件集合为空时,结束文件恢复。
在本实施例中,若待恢复文件集合不为空,则说明说明还有文件待恢复,继续执行文件恢复过程。
本实施例属于通用情况下的从损坏或不可信机械硬盘恢复文件的方法,通过获取存储介质内的原始映像;从所述原始映像中获取元数据;根据所述元数据获取待恢复文件的文件信息;根据所述文件信息获得所述待恢复文件的目标全局扇区线性编址;根据所述目标全局扇区线性编址从所述原始映像中读取数据,并根据读取的数据恢复所述待恢复文件。本发明适用于各种文件系统,且独立于操作系统,仅仅依赖于硬盘原始映像,即可以恢复硬盘上的文件。本发明不存在误报(即错误恢复),所能恢复的文件数量依赖于原始映像的数据完整程度。如果原始映像中没有数据缺失,则方法可以完整、精确地恢复整个文件系统中的所有文件。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有文件恢复程序,所述文件恢复程序被处理器执行时实现如上述的从损坏或不可信机械硬盘恢复文件的方法的步骤。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。词语第一、第二、以及第三等的使用不表示任何顺序,可将这些词语解释为标识。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如只读存储器镜像(Read Only Memory image,ROM)/随机存取存储器(Random AccessMemory,RAM)、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (9)

1.一种从损坏或不可信机械硬盘恢复文件的方法,其特征在于,所述方法包括以下步骤:
通过磁力显微镜从机械硬盘盘片获取原始映像;
从所述原始映像中获取元数据;
根据所述元数据获取待恢复文件的文件信息;
根据所述文件信息获得所述待恢复文件的目标全局扇区线性编址;
根据所述目标全局扇区线性编址从所述原始映像中读取数据,并根据读取的数据恢复所述待恢复文件;
其中,所述从所述原始映像中获取元数据,具体包括:
从所述原始映像中解析得到主引导信息;
根据所述主引导信息获得待恢复文件所在分区的分区全局扇区线性基址;
根据元数据在文件系统内的存储地址获取所述元数据距离所述文件系统所在分区首地址的第一偏移地址;
根据所述分区全局扇区线性基址和所述第一偏移地址获得第一全局扇区线性编址;
根据所述第一全局扇区线性编址和原始全局扇区线性编址从所述原始映像中获取元数据。
2.如权利要求1所述的从损坏或不可信机械硬盘恢复文件的方法,其特征在于,所述根据所述主引导信息获得待恢复文件所在分区的分区全局扇区线性基址,具体包括:
根据所述主引导信息获取分区起始扇区所在的柱面号、磁头号和扇区号;
根据所述柱面号、所述磁头号和所述扇区号获得所在分区的分区全局扇区线性基址。
3.如权利要求1所述的从损坏或不可信机械硬盘恢复文件的方法,其特征在于,所述根据所述元数据获取待恢复文件的文件信息,具体包括:
从所述原始映像中获取待恢复文件系统的根目录信息;
根据所述元数据对所述根目录信息进行遍历,获取文件系统内待恢复文件的文件和目录相关信息。
4.如权利要求3所述的从损坏或不可信机械硬盘恢复文件的方法,其特征在于,所述从所述原始映像中获取待恢复文件系统的根目录信息,具体包括:
根据所述根目录在文件系统中的存储地址获取所述根目录距离所述文件系统所在分区首地址的第二偏移地址;
根据所述分区全局扇区线性基址和所述第二偏移地址获取第二全局扇区线性编址;
根据所述第二全局扇区线性编址从所述原始映像中获取待恢复文件系统的根目录信息。
5.如权利要求1所述的从损坏或不可信机械硬盘恢复文件的方法,其特征在于,所述根据所述文件信息获得所述待恢复文件的目标全局扇区线性编址,具体包括:
根据所述文件信息获取所述待恢复文件的存储单元地址;
根据所述存储单元地址和所述元数据获取所述待恢复文件距离所述文件系统所在分区首地址的第三偏移地址;
根据所述分区全局扇区线性基址和所述第三偏移地址获取所述待恢复文件的目标全局扇区线性编址。
6.如权利要求1-5任一项所述的从损坏或不可信机械硬盘恢复文件的方法,其特征在于,所述方法还包括:
根据所述待恢复文件的文件信息建立待恢复文件集合,所述待恢复文件集合包含所述待恢复文件对应的文件标识;
在所述待恢复文件恢复完成时,删除所述待恢复文件集合中已恢复文件所对应的文件标识;
在所述待恢复文件集合为空时,结束文件恢复。
7.一种从损坏或不可信机械硬盘恢复文件的装置,其特征在于,所述装置包括:
原始映像获取模块,用于通过磁力显微镜从机械硬盘盘片获取原始映像;
元数据获取模块,用于从所述原始映像中获取元数据;
文件信息获取模块,用于根据所述元数据获取待恢复文件的文件信息;
编码模块,用于根据所述文件信息获得所述待恢复文件的目标全局扇区线性编址;
恢复模块,用于根据所述目标全局扇区线性编址从所述原始映像中读取数据,并根据读取的数据恢复所述待恢复文件;
所述元数据获取模块,还用于从所述原始映像中解析得到主引导信息;
根据所述主引导信息获得待恢复文件所在分区的分区全局扇区线性基址;
根据元数据在文件系统内的存储地址获取所述元数据距离所述文件系统所在分区首地址的第一偏移地址;
根据所述分区全局扇区线性基址和所述第一偏移地址获得第一全局扇区线性编址;
根据所述第一全局扇区线性编址和原始全局扇区线性编址从所述原始映像中获取元数据。
8.一种从损坏或不可信机械硬盘恢复文件的设备,其特征在于,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的从损坏或不可信机械硬盘恢复文件程序,所述从损坏或不可信机械硬盘恢复文件程序配置为实现如权利要求1至6中任一项所述的从损坏或不可信机械硬盘恢复文件的方法的步骤。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有文件恢复程序,所述文件恢复程序被处理器执行时实现如权利要求1至6任一项所述的从损坏或不可信机械硬盘恢复文件的方法的步骤。
CN202010999648.XA 2020-09-21 2020-09-21 从损坏或不可信机械硬盘恢复文件的方法及装置 Active CN112115002B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010999648.XA CN112115002B (zh) 2020-09-21 2020-09-21 从损坏或不可信机械硬盘恢复文件的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010999648.XA CN112115002B (zh) 2020-09-21 2020-09-21 从损坏或不可信机械硬盘恢复文件的方法及装置

Publications (2)

Publication Number Publication Date
CN112115002A CN112115002A (zh) 2020-12-22
CN112115002B true CN112115002B (zh) 2024-04-02

Family

ID=73801163

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010999648.XA Active CN112115002B (zh) 2020-09-21 2020-09-21 从损坏或不可信机械硬盘恢复文件的方法及装置

Country Status (1)

Country Link
CN (1) CN112115002B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112800005B (zh) * 2021-01-22 2023-01-03 中孚安全技术有限公司 一种文件系统深度检查方法、系统、终端及存储介质
CN114969772B (zh) * 2022-03-03 2022-11-29 北京天融信网络安全技术有限公司 加密文件的恢复方法、装置、电子设备和存储介质
CN115827323B (zh) * 2022-12-01 2024-02-02 摩尔线程智能科技(北京)有限责任公司 恢复文件的方法、装置和计算机可读介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1445667A (zh) * 2002-03-20 2003-10-01 联想(北京)有限公司 计算机硬盘内信息恢复和备份的实现方法
CN1618101A (zh) * 2002-01-29 2005-05-18 皇家飞利浦电子股份有限公司 数据存储设备和在数据存储设备中处理数据的方法
CN1967702A (zh) * 2006-11-20 2007-05-23 华中科技大学 磁盘记录信息可视化检测方法
CN102495777A (zh) * 2011-12-13 2012-06-13 百度在线网络技术(北京)有限公司 硬盘故障处理方法及处理装置
CN105808161A (zh) * 2016-02-26 2016-07-27 四川效率源信息安全技术股份有限公司 一种硬盘坏道数据的读取方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100550288B1 (ko) * 2003-12-02 2006-02-08 주식회사 하우리 Ext2파일 시스템의 데이터 복구방법과 그 프로그램을기록한 기록매체

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1618101A (zh) * 2002-01-29 2005-05-18 皇家飞利浦电子股份有限公司 数据存储设备和在数据存储设备中处理数据的方法
CN1445667A (zh) * 2002-03-20 2003-10-01 联想(北京)有限公司 计算机硬盘内信息恢复和备份的实现方法
CN1967702A (zh) * 2006-11-20 2007-05-23 华中科技大学 磁盘记录信息可视化检测方法
CN102495777A (zh) * 2011-12-13 2012-06-13 百度在线网络技术(北京)有限公司 硬盘故障处理方法及处理装置
CN105808161A (zh) * 2016-02-26 2016-07-27 四川效率源信息安全技术股份有限公司 一种硬盘坏道数据的读取方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Solid State Drive Data Recovery In Open Source Environment;Abdulaziz Aldaej;2017 2nd International Conference on Anti-Cyber Crimes;第1-4页 *
涉密硬盘数据恢复技术研究;张帆等;保密科学技术;第36-39页 *

Also Published As

Publication number Publication date
CN112115002A (zh) 2020-12-22

Similar Documents

Publication Publication Date Title
CN112115002B (zh) 从损坏或不可信机械硬盘恢复文件的方法及装置
US10936503B2 (en) Device access point mobility in a scale out storage system
US7934064B1 (en) System and method for consolidation of backups
US8838875B2 (en) Systems, methods and computer program products for operating a data processing system in which a file delete command is sent to an external storage device for invalidating data thereon
US8271751B2 (en) Systems and methods for reliably managing files in a computer system
US7395402B2 (en) Method and system of data storage capacity allocation and management using one or more data storage drives
US8818950B2 (en) Method and apparatus for localized protected imaging of a file system
US9286165B2 (en) Apparatus and method for recovering partition using backup boot record information
US20050144501A1 (en) Method for recovering data in EXT2 file system, and computer-readable storage medium recorded with data-recovery program
US20130318136A1 (en) Fat directory structure for use in transaction safe file system
US8732411B1 (en) Data de-duplication for information storage systems
US11513996B2 (en) Non-disruptive and efficient migration of data across cloud providers
US20120084272A1 (en) File system support for inert files
KR20150125012A (ko) 저장된 데이터 유닛들의 동작 관리
US10430273B2 (en) Cache based recovery of corrupted or missing data
CN102289526B (zh) 一种hfs+文件系统数据恢复方法及装置
KR20150125010A (ko) 저장된 데이터 유닛들의 동작 관리
CN106709014B (zh) 一种文件系统转换方法及装置
CN109496292A (zh) 一种磁盘管理方法、磁盘管理装置及电子设备
KR20160012388A (ko) 파일 단위 순서 모드 저널링 기법을 이용한 fsync 시스템 호출 처리 장치 및 방법
CN111078359B (zh) 一种通过目录映射实现虚机即时恢复的方法及系统
TWI461904B (zh) Linux FAT檔案系統修復方法及裝置
KR101670473B1 (ko) MySQL InnoDB 데이터베이스에서 삭제된 데이터를 복원하는 방법
US7930495B2 (en) Method and system for dirty time log directed resilvering
CN112905546A (zh) 已删除文件的恢复方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant