公开/公告号CN106293982A
专利类型发明专利
公开/公告日2017-01-04
原文格式PDF
申请/专利权人 四川效率源信息安全技术股份有限公司;
申请/专利号CN201610626236.5
申请日2016-08-02
分类号G06F11/07;
代理机构
代理人
地址 641000 四川省内江市松山南路253号
入库时间 2023-06-19 01:14:33
法律状态公告日
法律状态信息
法律状态
2019-08-06
授权
授权
2017-02-01
实质审查的生效 IPC(主分类):G06F11/07 申请日:20160802
实质审查的生效
2017-01-04
公开
公开
技术领域
本发明涉及信息安全技术领域,特别涉及一种修复西数硬盘不认盘的方法。
背景技术
西数硬盘是市面上使用最多、最广泛的品牌厂家硬盘之一。从市场的反馈信息来讲,西数厂家2012年以后出产的最新硬盘,在使用一段时间后可能会出现不认盘的故障。
这种情况下其实大部分西数硬盘的组件还是完好的。导致这种不认盘的情况一般是由于西数硬盘无法访问硬盘固件导致;要想快速修复,必须读取准确读取硬盘固件区地图,从而达到快速定位其他固件模块修复不认盘故障的目的,但目前现有技术在修复过程中不能快速定位模块所在位置,导致修复硬盘时间过长。
发明内容
本发明针对现有技术的缺陷,提供了一种修复西数硬盘不认盘的方法,能有效的解决上述现有技术存在的问题。
一种修复西数硬盘不认盘的方法,具体步骤如下:
S1:读取硬盘PCB板上的ROM芯片数据体;
S2:解析ROM芯片数据体找到0B模块并提取其数据体;
S3:解析OB模块,获取固件区模块地图UBA地址;
S4:通过UBA地址定位模块存放位置。
作为优选,所述S2的详细步骤如下:
S21:依次检索ROM芯片数据体中的模块头部特征;
S22:检索到模块头部特征后,在此特征向后偏移4个字节,取2字节ROM模块号特征;
S23:判断该模块号数据是否为0B模块;如果是则执行S24,如果不是则以该位置为起始执行S21;
S24:获取模块号后2字节,为模块所占扇区数;
S25:取得从模块头部特征直到下一个模块头部特征之间的数据,在数据后填0,直至达到模块所占扇区总大小为止,组成完整的0B模块数据体。
作为优选,所述S3的详细步骤如下:
S31:获取OB模块头部偏移0x06位置的值,此值代表OB模块有效数据起始位置的偏移地址;
S32:偏移至有效数据起始位置后一个字节为ROM模块的条目数;
S33:ROM模块条目数向后取一个字节,为ROM模块每个条目所占的字节数,记录条目字节数;
S34:条目字节数向后取一个字节,为ROM模块COPY数;
S35:COPY数向后取2字节代表模块号,记录01模块;
S36:模块号向后2字节代表模块所占扇区数,记录扇区数;
S37:模块所占扇区数向后偏移4字节为01模块所在的UBA地址。
作为优选,所述S4的详细步骤如下:
S41:获取硬盘RAM信息,偏移“0x24”,取2字节数据,为本硬盘的磁道总数;
S42:计算出固件区磁头地址分配表起始偏移位置,执行以下公式:
OB模块有效数据起始位置+ROM模块条目数*条目所占字节数=固件区磁头地址分配表起始偏移起始位置;
S43:偏移至固件区磁头地址分配表起始位置得到固件区磁头地图分配信息表占用总大小;
S44:根据地图分配信息表占用总大小扫描整个分配表,得到0头UBA结束位置;
S45:获取SPT值,执行公式“SPT=0头UBA结束位置/硬盘的磁道总数”;
S46:将提取01模块的UBA地址转换成10进制;
S47:执行公式“10进制的值/SPT值=磁道数A余扇区数”,得到磁道数A和扇区数;
S48:得到01地图模块所在磁道,公式为“磁道数A-磁道总数=磁道数B”;
S49:计算磁头数,看磁道数A的值,若在0-255之间是0头,256和256以上则除以256,取整数,所述整数为磁道数A。
与现有技术相比本发明的优点在于:可在不认盘情况下,恢复硬盘数据;准确定位固件地图所在位置;通过计算快速定位其他固件所在物理位置,恢复硬盘数据成功率高,减少因硬盘损坏带来的损失。
附图说明
图1为本发明实施例硬盘芯片数据16进制结构图;
图2为本发明实施例01模块数据16进制结构图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下举实施例,对本发明做进一步详细说明。
如图1所示,一种修复西数硬盘不认盘的方法,具体步骤如下:
S1:读取硬盘PCB板上的ROM芯片数据体,大小256KB。
S2:解析ROM芯片数据体找到0B模块并提取其数据,其详细步骤如下:
S21:依次检索ROM芯片数据体中的模块头部特征“0x52 4F 59 4C”;
S22:检索到模块头部特征后,在此特征向后偏移4个字节,然后取2字节数据,这2字节就代表ROM模块号特征;
S23:判断该模块号数据是否为“0x0B 00”(确认是否为0B模块);如果是则执行S24,如果不是则以该位置为起始执行S21;
S24:获得此模块的大小,模块号后2字节代表模块所占扇区的数;
S25:从模块头部特征直到到下一个模块头部特征“0x52 4F 59 4C”之间的数据都为OB模块的数据区内容,取两个特征之间的数据,在数据后填0,直至达到模块所占扇区总大小为止,组成完整的0B模块数据体。
S3:解析OB模块,获取固件区模块地图UBA地址,其详细步骤如下:
S31:获取OB模块头部偏移0x06位置的值“0x1E”,此值代表OB模块有效数据起始位置的偏移地址;
S32:偏移至有效数据起始位置后一个字节为ROM模块的条目数,本例中为“0x0A”,记录该条目数;
S33:ROM模块条目数向后取一个字节,为ROM模块每个条目所占的字节数,记录条目字节数,本例中为“0x12”;
S34:条目字节数向后取一个字节,为ROM模块COPY数,记录COPY数“0x02”;
S35:COPY数向后取2字节代表模块号,记录模块号(01模块),本例中为“0x01 00”;
S36:模块号向后2字节代表模块所占扇区数,记录扇区数,本例中为“0x20 00”;
S37:模块所占扇区数向后偏移4字节为01模块所在的UBA地址,本例中为“0x08EF02 00”。
S4:通过UBA地址准确定位模块存放位置,其详细步骤如下:
S41:获取硬盘RAM信息,偏移“0x24”,取2字节数据,为本硬盘的磁道总数如图2所示,本例中为“0x0001”;
S42:计算出固件区磁头地址分配表起始偏移位置,执行以下公式:
OB模块有效数据起始位置+ROM模块条目数*条目所占字节数=固件区磁头地址分配表起始偏移起始位置,本例中为1E+0A*12=0xD2;
S43:偏移至“0xD2”(固件区磁头地址分配表起始位置)得到固件区磁头地图分配信息表占用总大小,本例中为“0x46”;
S44:根据地图分配信息表占用总大小“0x46”扫描整个分配表,得到0头UBA结束位置;
“0x46”后4个字节表示固件区磁头位图,本例中为“0x02FF 0F 03”;
固件区磁头位图后一个字节为占位符;
占位符向后偏移4个字节表示0头实际使用的UBA长度,本例为“0xFE FA 02 00”;
向后偏移4个字节表示0头UBA开始位置,本例为“0x00 00 00 00”;
向后偏移4个字节表示1头实际使用的UBA长度,本例为“0xFE FA 02 00”;
向后偏移4个字节表示0头UBA结束位置,本例为“00 2A 06 00”;
向后偏移4个字节表示1头实际使用的UBA长度,本例为“0xFE FA 02 00”;
向后偏移4个字节表示1头UBA结束位置,本例为“0x00 54 0C 00”;
S45:获取SPT值,执行公式“SPT=0头UBA结束位置/硬盘的磁道总数”,本例中为0x62A00/0x100=1578;
S46:将提取01模块的UBA地址转换成10进制;本例中“0x08EF 02 00”转换为10进制为192264
S47:执行公式“10进制的值/SPT值=磁道数A 余扇区数”,得到磁道数B和扇区数,本例中为192264/1578=121余1326;
S48:得到01地图模块所在柱面,公式为“磁道数A-磁道总数=磁道数B”,本例为121-256=-135;
S49:计算磁头数,看磁道数A的值,若在0-255之间是0头,256和256以上则除以256,取整数,所述整数为磁道数A。
执行上述步骤后即可得到01模块的CHS存放位置为:0头,负的135磁道,磁道内偏移为1326扇区,通过01模块CHS位置解析出硬盘其他模块的位置,读取固件相互回写即可读取硬盘数据。
本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的实施方法,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。
机译: 配备有选择性地控制主菜盘驱动器和备用硬盘驱动器的后备硬盘驱动器的自动讲机,以及自动讲机的启动方法
机译: 具有相同盘的嵌入式DOS引导程序和计算机系统的硬盘驱动器,硬盘驱动器的固件下载方法以及使用相同的记录媒体
机译: 用于在两个旋转的工作盘之间双向研磨至少一个盘状工件的导向保持架,一种研磨装置,一种制造该导向保持架的方法以及一种利用该导向保持架同时对盘状工件进行双面研磨的方法