一种针对无法访问东芝硬盘数据区的恢复方法与流程

文档序号:13934251阅读:1362来源:国知局
一种针对无法访问东芝硬盘数据区的恢复方法与流程

本发明属于数据恢复领域,涉及一种硬盘的恢复方法,尤其涉及一种针对无法访问东芝硬盘数据区的恢复方法。



背景技术:

在数据恢复的技术领域中,经常会遇到有缺陷的存储介质,造成无法读取数据,而重要的数据对于用户来说,往往都是无价之宝。

东芝硬盘固件区出现坏道后,容易导致dd模块损坏,造成该模块尾部的校验值及模块产生坏道之后的数据校验值发生改变,导致模块校验值不匹配,造成硬盘无法被识别,或者能够识别硬盘但无法访问数据区。

现有技术中,一般都是采用固件区模块整体读取的方法来进行恢复,但如果固件区dd模块所在的磁道存在坏道,模块整体读取方式就会丢弃校验出错的数据,因而无法读取模块有效、完整的数据。



技术实现要素:

本发明针对现有技术的不足和上述问题,提出一种针对无法访问东芝硬盘数据区的恢复方法,通过寻址逻辑扇区lba所对应的物理地址并读取该物理地址的数据,来达到读取和恢复数据的目的,有效地解决了现有技术存在的问题,所述方法包括以下步骤:

s1:读取所述硬盘的固件区并查找dd模块标识0x02000000xx00ffff,其中,所述xx为任意不为零的十六进制数;

s2:以所述标识0x02000000xx00ffff的首字节地址为起始地址,向后跳转0x1fffe字节,并读取跳转到当前地址的字节内容及后一字节内容;

s3:判断所读取的两字节内容是否为零,如果是,跳转至步骤s1,否则执行步骤s4;

s4:以所述标识0x02000000xx00ffff的后一字节地址为起始地址,读取字节长度为所述xx乘以8的字节内容,其中,所述xx为任意不为零的十六进制数;所读取的内容为逻辑段位地址表,所述逻辑段位地址表由多个逻辑段位地址组成,其中,每一所述逻辑段位地址的长度为八字节;

s5:以所述标识0x02000000xx00ffff的后一字节地址为起始地址,向后跳转0x10000字节,以跳转到当前地址为起始地址,读取字节长度为所述xx乘以8的字节内容,其中,所述xx为任意不为零的十六进制数;所读取的字节内容为偏移地址表,所述偏移地址表由多个偏移地址组成,其中,每一所述偏移地址的长度为八字节;

s6:确定需读取扇区lba的物理地址并读取所需数据,其中,所述lba的值为十六进制数。

作为优选,所述逻辑段位地址及所述偏移地址均从八字节的最高字节开始向最低字节读取。

作为优选,所述逻辑段位地址表中,每一所述逻辑段位地址具有唯一的组号位置;所述偏移地址表中,每一所述偏移地址具有唯一的所述组号位置;通过相同的所述组号位置,所述逻辑段位地址与所述偏移地址各自一一对应。

作为优选,步骤s6包括以下步骤:

s601:判断所述扇区lba的值是否等于所述逻辑段位地址表中任一所述逻辑段位地址,如果是,则所述扇区lba的值等于所述扇区lba的物理地址,执行步骤s605;否则,执行步骤s602;

s602:在所述逻辑段位地址表中查找小于所述扇区lba的值的第一逻辑段位地址且大于所述扇区lba的值的第二逻辑段位地址,确定所述第一逻辑段位地址在所述逻辑段位地址表中的组号位置n,其中,所述第一逻辑段位地址与所述第二逻辑段位地址为相邻的逻辑段位地址,n为大于零的自然数;

s603:根据所述第一逻辑段位地址在所述逻辑段位地址表中的所述组号位置n,在偏移地址表中查找到相同的组号位置n中包含的偏移地址,即为所述扇区lba的所述偏移地址;

s604:所述扇区lba的物理地址等于所述扇区lba的值加上所述偏移地址的和;

s605:根据所述扇区lba的物理地址,读取所述扇区lba的数据。

作为优选,所述逻辑段位地址表包含所述硬盘的全部逻辑段位地址。

作为优选,所述偏移地址表包含所述硬盘中各个所述逻辑段位地址各自一一对应的所述偏移地址。

本发明的有益效果是:通过寻址逻辑扇区lba所对应的物理地址并读取该物理地址的数据,来达到读取和恢复数据的目的,解决了现有技术存在的问题。

附图说明

图1为本发明的主流程图;

图2为本发明实施例中dd模块的标识及逻辑地址段位表的数据结构图;

图3为本发明实施例中寻址并读取两字节的数据结构图;

图4为本发明实施例中偏移地址表的数据结构图;

图5为本发明中确定扇区lba的物理地址并读取所需数据的流程图。

具体实施方式

下面结合附图和实施例对本发明作进一步阐述。

如图1所示,一种针对无法访问东芝硬盘数据区的恢复方法,包括以下步骤:

s1:读取硬盘的固件区并查找dd模块标识0x02000000xx00ffff,其中,所述xx为任意不为零的十六进制数:

图2示出了本实施例中dd模块标识及逻辑地址段位表的数据结构图。如图2所示,xx的值为0x13,dd模块标识为0x020000001300ffff,如图2中黑色矩形框的内容所示;

s2:以该标识0x020000001300ffff的首字节地址为起始地址,向后跳转0x1fffe字节,并读取跳转到当前地址的字节内容及后一字节内容,如图3中粗黑线部分所示,本实施例中,该两字节内容为0x21e6;

s3:判断所读取的两字节内容是否为零,如果是,跳转至步骤s1,重新查找dd模块标识,否则执行步骤s4;

s4:如图2所示,以标识0x020000001300ffff的后一字节地址为起始地址,读取字节长度为0x13乘以8的字节内容,即,字节长度为0x98,如图2所示,起始地址为0x00000008,结束地址为0x0000009f;所读取的内容为逻辑段位地址表,逻辑段位地址表由多个逻辑段位地址组成,其中,每一逻辑段位地址的长度为八字节,如图2中粗黑线所示的八字节,每一逻辑段位地址均从八字节的最高字节开始向最低字节读取,因此,这两个逻辑段位地址分别是0x000000003ac74858以及0x0000000037c9bbd0;

s5:以标识0x020000001300ffff的后一字节地址为起始地址,向后跳转0x10000字节,如图4所示,以跳转到当前地址0x00010008为起始地址,读取字节长度为0x13乘以8的字节内容,即,字节长度为0x98,如图4所示,起始地址为0x00010008,结束地址为0x0001009f;所读取的字节内容为偏移地址表,偏移地址表由多个偏移地址组成,其中,每一偏移地址的长度为八字节,如图4中粗黑线所示的八字节,每一偏移地址均从八字节的最高字节开始向最低字节读取,因此,这两个偏移地址分别是0x00000000000ca320以及0x00000000000cd590;

s6:确定需读取扇区lba的物理地址并读取所需数据,其中,lba的值为十六进制数;本实施例中,以扇区lba=976773167为例,976773167转换为十六进制为0x3a38602f,该步骤s6包括如图5所示的以下步骤:

s601:判断扇区lba的值0x3a38602f是否等于逻辑段位地址表中任一逻辑段位地址,如果是,则扇区lba的值0x3a38602f等于扇区lba的物理地址0x3a38602f,执行步骤s605;否则,执行步骤s602;

s602:在逻辑段位地址表中查找小于0x3a38602f的第一逻辑段位地址且大于0x3a38602f的第二逻辑段位地址,确定第一逻辑段位地址在逻辑段位地址表中的组号位置n,其中,第一逻辑段位地址与第二逻辑段位地址为相邻的逻辑段位地址,n为大于零的自然数;如图2所示,0x3a38602f大于第一逻辑段位地址0x0000000037c9bbd0且小于第二逻辑段位地址0x000000003ac74858,第一逻辑段位地址0x0000000037c9bbd0与第二逻辑段位地址0x000000003ac74858为相邻的逻辑段位地址,本实施例中,第一逻辑段位地址0x0000000037c9bbd0的组号位置为17,即,从起始地址为0x00000008开始的第17个八字节的逻辑段位地址;

s603:根据第一逻辑段位地址0x0000000037c9bbd0在逻辑段位地址表中的组号位置17,在偏移地址表中查找到相同的组号位置17中包含的偏移地址,即为扇区0x3a38602f的偏移地址;如图4所示,从起始地址为0x00010008开始的第17个八字节的偏移地址0x00000000000ca320,即为扇区0x3a38602f的偏移地址;

s604:扇区lba的物理地址等于扇区lba的值加上偏移地址的和,即0x3a38602f+0x00000000000ca320=0x000000003a45034f;

s605:根据该扇区lba的物理地址,读取该物理地址中的数据,即为扇区lba的数据。

应当理解的是,本发明不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1