本发明涉及信息安全技术领域,特别涉及一种针对西数硬盘停转故障的修复方法。
背景技术:
在数据恢复的领域,经常会遇到缺陷的存储介质;重要的数据对于用户来说,往往都是无价的。硬盘敲盘、停转导致硬盘无法正常工作,出现这种情况的时候,现有技术通常是进行开盘检测,采用物理修复方案即更换匹配磁头的方法,来达到修复硬盘的目的。但是,采用寻找匹配磁头的时间都较长,且会产生购买匹配磁头的费用,再更换磁头的过程中也容易引起2次损伤,浪费财力、人力和时间。
技术实现要素:
本发明针对现有技术的缺陷,提供了一种针对西数硬盘停转故障的修复方法,能有效的解决上述现有技术存在的问题。
一种针对西数硬盘停转故障的修复方法,包括以下步骤:
S1:读取ROM中0B和20B模块;
S2:若没有20B模块且0B模块中没有“0x12020100”标记则执行S3,若有0B和20B模块则执行S4;
S3:将“0x20”作为屏蔽地址记录,执行S6;
S4:判断0B和20B中0x1B位置的值的大小,若0B大于20B,则认为硬盘启用0B模块中01模块的UBA地址,提取0B中01模块的UBA地址和01模块长度;反之提取20B中01模块的UBA地址和01模块长度;
S5:设屏蔽地址=01模块UBA地址+01模块的长度;
S6:在硬盘的30模块中填入S5中的屏蔽地址;
S7:校验30模块,并将校验值填入校验位,回写数据到ROM中;
S8:硬盘断电起电,这时硬盘直接就绪,不会停转并可正常读取01模块;
S9:从01模块中解析12模块的UBA地址;
S10:设屏蔽地址=12模块的UBA地址+1;
S11:在硬盘的30模块中填入S10中的屏蔽地址;
S12:断电再起电,再次读取01模块;
S13:把12模块信息从01地图模块中抹去,12号模块的条目标记后两个字节修改为0x0000;
S14:同时把修改的30模块还原到初始形态;
S15:再次断电起点,所有模块能够正常访问,提取COPY1的重要模块信息,回写到COPY0,此时可提取硬盘中数据。
作为优选,S4中获取01模块UBA地址和01模块长度的具体步骤如下:
S41:搜索01号模块的条目标记“0x12020100”或“0x1A020100”,并找到01模块长度;若找到“0x12020100”则执行S42,若找到“0x1A020100”则执行S43;
S42:在条目标记后偏移6个字节,将此后的8个字节以4个字节为一组,判断两组的值是否相同,若相同则执行S5,若不相同则结束;
S43:在条目标记后偏移6个字节,将此后的16个字节以4个字节为一组,首先判断前两组的值是否都为“0x00000000”,若是执行S44;若不相同则执行S45;
S44:判断后两组的值是否相同,若相同则表明是UBA地址,执行S5;若不相同则结束;
S45:判断前两组的值是否相同,若相同则表明是UBA地址,执行S5;若不相同则结束。
作为优选,S6和S11具体包括以下步骤:
S61:找30模块缺陷条目总数并记录;
S62:30模块中缺陷条目总数加1;
S63:若30模块的缺陷条目总数为0则执行S64,若大于0则执行S65;
S64:30模块的当前UBA缺陷条目数+1,并将屏蔽地址填入到0x40至0x43;
S65:判断30模块中原始缺陷条目地址是否大于屏蔽地址,若大于则执行S66,若小于则执行S67;
S66:取原始缺陷条目,将原始缺陷条目数+1,再将原始缺陷条目填入原地址的后8个字节中,再将“0x01000000”填入0x3C至0x3F位置,并将屏蔽地址填入到0x40至0x43位置,执行S7;
S67:在原始缺陷条目后8个字节填入原始缺陷条目数+1和屏蔽地址,执行S7。
作为优选,S9中获取12模块UBA地址的具体步骤如下:
S91:搜索12号模块的条目标记“0x12021200”或“0x1A021200”;若找到“0x12021200”则执行S42,若找到“0x1A021200”则执行S43;
S92:在条目标记后偏移6个字节,将此后的8个字节以4个字节为一组,判断两组的值是否相同,若相同则执行S5,若不相同则结束;
S93:在条目标记后偏移6个字节,将此后的16个字节以4个字节为一组,首先判断前两组的值是否都为“0x00000000”,若是执行S94;若不相同则执行S95;
S94:判断后两组的值是否相同,若相同则表明是UBA地址,执行S10;若不相同则结束;
S95:判断前两组的值是否相同,若相同则表明是UBA地址,执行S10;若不相同则结束。
与现有技术相比本发明的优点在于:不用拆解硬盘更换部件便达到可修复硬盘并提取硬盘数据的目的,避免更换操作中因人为因素而导致硬盘故障的扩大化、对硬盘带来二次伤害、甚至造成硬盘完全损坏等问题。
附图说明
图1为本发明实施例20B模块的数据结构图;
图2为本发明实施例0B模块的数据结构图;
图3为本发明实施例缺陷条目总数为0的30模块数据结构图;
图4为图3加入屏蔽条目后的30模块数据结构图;
图5为本发明实施例缺陷条目总数不为0且缺陷条目UBA地址大于屏蔽地址的30模块数据结构图;
图6为图5加入屏蔽条目后的30模块数据结构图;
图7位为本发明实施例缺陷条目总数不为0且缺陷条目UBA地址小于屏蔽地址的30模块数据结构图;
图8为图7加入屏蔽条目后的30模块数据结构图;
图9为本发明实施例12模块的数据结构图;
图10为图9抹去12模块后的数据结构图。
具体实施方式
为使本发明的目的:技术方案及优点更加清楚明白,以下举实施例,对本发明做进一步详细说明。
一种针对西数硬盘停转故障的修复方法,包括以下步骤:
S1:读取ROM中0B和20B模块;
S2:若没有20B模块且0B模块中没有“0x12020100”标记则执行S3,若有0B和20B模块则执行S4;
S3:将“0x20”作为屏蔽地址记录,执行S6;
S4:判断0B和20B该地址的值的大小,若0B大于20B,则认为硬盘启用0B模块中01模块的UBA地址,提取0B中01模块的UBA地址和01模块长度;反之提取20B中01模块的UBA地址和01模块长度;
S4中获取01模块UBA地址和01模块长度的具体步骤如下:
S41:搜索01号模块的条目标记“0x12020100”或“0x1A020100”,并找到01模块长度(01模块的长度在条目标记后两个字节);若找到“0x12020100”则执行S42,若找到“0x1A020100”则执行S43;
S42:在条目标记后偏移6个字节,将此后的8个字节以4个字节为一组,判断两组的值是否相同,若相同则执行S5,若不相同则结束;
S43:在条目标记后偏移6个字节,将此后的16个字节以4个字节为一组,首先判断前两组的值是否都为“0x00000000”,若是执行S44;若不相同则执行S45;
S44:判断后两组的值是否相同,若相同则表明是UBA地址,执行S5;若不相同则结束;
S45:判断前两组的值是否相同,若相同则表明是UBA地址,执行S5;若不相同则结束。
如图1、2所示,图1中20B的值大于图2中0B的值,则取20B的01模块的UBA地址“0x0002FAE6”和01模块长度“0x18”。
S5:设屏蔽地址=01模块UBA地址+01模块的长度;
S6:在硬盘的30模块中填入S5中的屏蔽地址;
S6具体的包括以下步骤:
S61:找30模块缺陷条目总数并记录(在30模块0x28位置的值和0x34至0x3C之间的7个字节位缺陷条目总数);
S62:30模块中缺陷条目总数加1(0x28位置的值和0x34至0x3C之间7个字节的值都+1);
S63:若30模块的缺陷条目总数为0则执行S64,若大于0则执行S65;
S64:30模块的0x3C至0x3F位置的值+1(当前UBA缺陷条目数+1),并将屏蔽地址填入到0x40至0x43;
如图3所示,原始缺陷条目总数为0,则将缺陷条目总数变为1,并填入屏蔽地址“0x000262C7”,如图4;
S65:判断30模块中原始缺陷条目地址(0x40至0x43位置的值)是否大于屏蔽地址,若大于则执行S66,若小于则执行S67;
S66:取原始缺陷条目(0x3C至0x43位置的值),将原始缺陷条目数+1,再填入原地址的后8个字节中,再将“0x01000000”填入0x3C至0x3F位置,并将屏蔽地址填入到0x40至0x43位置,执行S7;
如图5、6所示,原始缺陷条目地址“0x000362C7”大于屏蔽地址“0x000262C7”;则如图6中的方式添加屏蔽地址。
S67:在原始缺陷条目(0x3C至0x43位置)后8个字节填入原始缺陷条目数+1和屏蔽地址,执行S7。
如图7、8所示,原始缺陷条目地址“0x000200C7”小于屏蔽地址“0x000262C7”;则如图8中的方式添加屏蔽地址。
S7:校验30模块,并将校验值填入校验位(0x0C至0x0F位置),回写数据到ROM中;
S8:硬盘断电起电,这时硬盘直接就绪,不会停转并可正常读取01模块;
S9:如图9所示,从01模块中解析12模块的UBA地址“0x00013545”;
S9中获取12模块UBA地址的具体步骤如下:
S91:搜索12号模块的条目标记“0x12021200”或“0x1A021200”;若找到“0x12021200”则执行S42,若找到“0x1A021200”则执行S43;
S92:在条目标记后偏移6个字节,将此后的8个字节以4个字节为一组,判断两组的值是否相同,若相同则执行S5,若不相同则结束;
S93:在条目标记后偏移6个字节,将此后的16个字节以4个字节为一组,首先判断前两组的值是否都为“0x00000000”,若是执行S94;若不相同则执行S95;
S94:判断后两组的值是否相同,若相同则表明是UBA地址,执行S10;若不相同则结束;
S95:判断前两组的值是否相同,若相同则表明是UBA地址,执行S10;若不相同则结束。
S10:设屏蔽地址=12模块的UBA地址+1;
S11:在硬盘的30模块中填入S10中的屏蔽地址,方法同S6相同;
S12:断电再起电,再次读取01模块;
S13:如图10所示,把12模块信息从01地图模块中抹去,12号模块的条目标记后两个字节修改为0x0000;
S14:同时把修改的30模块还原到初始形态;
S15:再次断电起点,所有模块能够正常访问,提取COPY1的重要模块信息,回写到COPY0,此时可提取硬盘中数据。
本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的实施方法,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。