一种希捷硬盘系统文件的读写方法

文档序号:9505940阅读:575来源:国知局
一种希捷硬盘系统文件的读写方法
【技术领域】
[0001] 本发明涉及信息安全技术领域,特别涉及一种希捷硬盘系统文件的读写方法。
【背景技术】
[0002] 随着硬盘的发展,硬盘所需的固件内容越来越庞大,硬盘固件的管理越来越复杂。 老旧的固件管理方式只能描述最多40多个固件模块左右,已经不能满足大容量硬盘的固 件变化和管理了。随之产生了一种新的固件管理方式一一系统文件方式。
[0003]目前还没有能完整的、系统化的针对硬盘固件系统文件进行读写的方法。
[0004] 本发明涉及到的部分专业术语:
[0005] 固件区地图信息:是指希捷硬盘寻址固件的索引参数。

【发明内容】

[0006] 本发明针对现有技术的缺陷,提供了一种希捷硬盘系统文件的读写方法,能有效 的解决上述现有技术存在的问题。
[0007] 为了实现以上发明目的,本发明采取的技术方案如下:
[0008] -种希捷硬盘系统文件的读写方法,包括12代以上希捷硬盘系统文件的读写方 法和12代以下希捷硬盘系统文件的读写方法;
[0009] 所述12代以上硬盘系统文件的读写方法包括以下步骤:
[0010] SlOl :获取12代以上希捷硬盘固件区地图信息,在T级模式下输入y指令,接收指 令回显信息;
[0011] S102 :解析12代以上硬盘希捷硬盘固件区地图信息内容,具体为将接收到的指令 回显信息,按照卷号、文件ID、文件描述、大小、逻辑UBA地址、copy数,选择0卷参数和3卷 参数以及第4卷大小为1200字节的特殊值,组成硬盘固件区地图信息;
[0012] S103 :对解析的12代以上硬盘希捷硬盘固件区内容进行读写操作。
[0013] 作为优选,所述12代以下硬盘系统文件的读写方法包括以下步骤:
[0014] S201 :12代以下的硬盘需在1级模式下,从缓存信息的起始地址"6000000"作为 开始,提取该数据;再向后依次偏移"0x800",偏移次数为1024次,偏移一次提取一次对应 位置的数据;
[0015] S202 :从S201获取的数据中以12字节为一组搜索特征为"000000FC"的0卷文件 描述符;
[0016] S203 :搜索到0卷文件描述符后,以12字节为一组向后检索,并取出每组头部4字 节进行判断,判断是否为连续且逻辑增大的文件描述符头部特征;如果没有连续,则抛弃该 组数据,继续向下搜索直至找到三个连续的0卷文件描述符特征,并作为有效值提取;
[0017] S204 :以S203中有效值为基准向后检索卷3文件描述符特征;
[0018] S205 :搜索到3卷文件描述符后,以12字节为一组向后检索,并取出每组头部4字 节进行判断,判断是否为连续且逻辑增大的文件描述符头部特征;如果没有连续,则抛弃该 组数据,继续向下搜索直至找到三个连续的O卷文件描述符特征,并作为有效值提取;
[0019] S206 :以S205中有效值为基准向后检索卷4文件描述符特征;搜索大小为0x1200 字节的4卷文件描述符,并作为有效值提取;。
[0020] S207 :将S203、S205、S206所提取的数据组成硬盘固件区地图信息;
[0021] S208 :对解析的12代以下硬盘希捷硬盘固件区内容进行读写操作。
[0022] 作为优选,所述S103和S208中读取的具体步骤如下:
[0023] S301 :找到Default Diag Rd Buf字段对应的DBA后面的读缓存地址;
[0024] S302 :选择ASCII模式输出;
[0025] S303 :输入要读取的系统文件的UBA地址,以及需要读取的系统文件的大小,以扇 区为单位;
[0026] S304 :回到T级模式,选择原始二进制模式输出;
[0027] S305 :进入1级模式;
[0028] S306 :输入第S301获取的读缓存地址,并获取一个扇区的数据以字节为单位;
[0029] S307 :返回到上位机,完成。
[0030] 作为优选,所述S103和S208中写入的具体步骤如下:
[0031] S401 :进入T级模式,选择以ASCII模式输出;
[0032] S402 :找到Default Diag Wrt Buf字段对应的DBA后面的写缓存地址;
[0033] S403 :再次以ASCII模式输出;
[0034] S404 :指定下载文件字节为"0x200",同时获取一个下载文件的地址。找到 DownFile字段对应的DBA后面的缓存地址;
[0035] S405 :进入2级模式;
[0036] S406 :将下载文件拷贝到写缓存的地址;
[0037] S407:进入 A 级;
[0038] S408 :将缓存中的数据写入到指定UBA地址中。
[0039] 作为优选,若上述系统文件读写方式不能完成特殊系统文件的读写,则执行以下 读写方式。
[0040] 读取的具体步骤如下:
[0041] S501:转到T级模式;
[0042] S502 :以系统文件ID,系统文件所在卷,系统文件的COPY数作为读取
[0043] 参数,对系统文件进行读取;
[0044] S503 :获取缓存信息;
[0045] S504 :连续获取保存。
[0046] 作为优选,所述写入的具体步骤如下:
[0047] S601 :按照系统文件ID,系统文件所在卷,系统文件的COPY数对系统文件进行回 写操作;
[0048] S602 :对写入硬盘的系统文件字节进行CRC16校验。
[0049] 与现有技术相比本发明的优点在于:可以兼容12代以上和以下的希捷硬盘进行 固件地图信息获取,通过两种不同的方式进行读取和写入操作,增加了成功率。可描述更多 的固件模块,并且可清楚的指出卷号、文件ID、文件描述、大小、逻辑UBA地址、copy数。
【具体实施方式】
[0050] 为使本发明的目的、技术方案及优点更加清楚明白,以下举实施例,对本发明做进 一步详细说明。
[0051] -种希捷硬盘系统文件的读写方法,包括12代以上希捷硬盘系统文件的读写方 法和12代以下希捷硬盘系统文件的读写方法;
[0052] 所述12代以上硬盘系统文件的读写方法包括以下步骤:
[0053] SlOl :获取12代以上希捷硬盘固件区地图信息,在T级模式下输入y指令,接收指 令回显信息;
[0054] 调用函数:
[0055] UARTO_Sendchar(OxlA);
[0056] UART0_SendBuf("y");
[0057] S102 :解析12代以上硬盘希捷硬盘固件区地图信息内容,具体为将接收到的指令 回显信息,按照卷号、文件ID、文件描述、大小、逻辑UBA地址、copy数,选择0卷参数和3卷 参数以及第4卷大小为1200字节的特殊值,组成硬盘固件区地图信息;
[0058] S103 :对解析的12代以上硬盘希捷硬盘固件区内容进行读写操作。
[0059] 作为优选,所述12代以下硬盘系统文件的读写方法包括以下步骤:
[0060] S201 :12代以下的硬盘需在1级模式下,从缓存信息的起始地址"6000000"作为 开始,提取该数据;再向后依次偏移"0x800",偏移次数为1024次,偏移一次提取一次对应 位置的数据;
[0061] S202 :从S201获取的数据中以12字节为一组搜索特征为"000000FC"的0卷文件 描述符;
[0062] S203 :搜索到0卷文件描述符后,以12字节为一组向后检索,并取出每组头部4字 节进行判断,判断是否为连续且逻辑增大的文件描述符头部特征;如果没有连续,则抛弃该 组数据,继续向下搜索直至找到三个连续的〇卷文件描述符特征,并作为有效值提取;
[0063] 具体的如果找到0卷文件描述符特征,则与FEF007FF进行"与操作",得到一个 值;
[0064] 例如:
[0065] FC001203and FEF007FF = FC000203 ;
[0066] FC002204and FEF007FF = FC000204 ;
[0067] FC003205and FEF007FF = FC000205 ;
[0068] 上述为连续的0卷文件描述符特征,文件描述符,必须是逻辑递增的,作为有效值 提取。
[0069] S204 :以S203中有效值为基准向后检索卷3文件描述符特征;
[0070] S205 :和S203方法相同,搜索到3卷文件描述符后,以12字节为一组向后检索,并 取出每组头部4字节进行判断,判断是否为连续且逻辑增大的文件描述符头部特征;如果 没有连续,则抛弃该组数据,继续向下搜索直至找到三个连续的0卷文件描述符特征,并作 为有效值提取;
[0071] S206 :以S205中有效值为基准向后检索卷4文件描述符特征;搜索大小为0x1200 字节的4卷文件描述符,并作为有效值提取;。
[0072] S207 :将S203、S205、S206所提取的数据组成硬盘固件区地图信息;
[0073] S208 :对解析的12代以下硬盘希捷硬盘固件区内容进行读写操作。
[0074] 作为优选,所述S103和S208中读取的具体步骤如下:
[0075] S301 :找到Default Diag Rd Buf字段对应的DBA后面的读缓存地址;
[0076] 调用函数:
[0077] UART0_SendBuf("/2");
[0078] UART0_SendBuf("A0");
[0079] UART0_SendBuf (" ?");
[0080] S302 :选择ASCII模式输出;
[0081] 调用函数:
[0082] UARTO_Sendchar(OxlA);
[0083] UART0_SendBuf("03");
[0084] S303 :输入要读取的系统文件的UBA地址,以及需要读取的系统文件的大小,以扇 区为单位;
[0085] 调用函数:
[0086] UART0_SendBuf ("/A");
[0087] UART0_SendBuf (〃R(UBA 地址),(系统文件大小),,2〇");
[0088] S304 :回到T级模式,选择原始二进制模式输出;
[0089] 调用函数:
[0090] UART0_SendBuf("01");
[0091] S305:进入1级模式;
[0092] 调用函数:
[0093] UARTO_SendBuf("/r);
[0094] S306 :输入第S301获取的读缓存地址,并获取一个扇区的数据以字节为单位;
[0095] 调用函数:
[0096] UART0_SendBuf (〃D(读缓存地址),,,(读取缓存内容的大小),Γ);
[0097] S307 :返回到上位机,完成。
[0098] 作为优选,所述S103和S208中写入的具体步骤如下:
[0099] S401 :进入T级模式,选择以ASCII模式输出;
[0100] 调用函数:
[0101] UARTO_Sendchar (OxlA);
[0102] UART0_SendBuf("03");
[0103] S402 :找到Default Diag Wrt Buf字段对应的DBA后面的写缓存地址;
[0104] 调用函数:
[0105] UART0_SendBuf("/2");
[0106] UART0_SendBuf("A0");
[0107] UART0_SendBuf (" ?");
[0108] S403 :再次以ASCII模式输出;
[0109] 调用函数:
[0110] UARTO_Sendchar (OxlA);
[0111] UART0_SendBuf("03");
[0112] S404 :
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1