一种通过三级信息存储获取二级译码表的方法与流程
- 国知局
- 2024-09-11 14:53:32
本发明属于电子数据及数据恢复取证领域,涉及一种通过三级信息存储获取二级译码表的方法。
背景技术:
1、西数硬盘(wd),全称western digital,是美国西部数据公司(western digitalcorp)生产的硬盘产品。西部数据公司是全球知名的硬盘厂商之一,始创于1970年,并于1988年开始设计和生产硬盘。公司的总部设在美国加州的lake forest,是历史最悠久的硬盘厂商之一,也是ide接口的创始者之一。
2、西数硬盘的产品线涵盖了企业服务器、桌面级ide硬盘、移动存储应用及av领域等多个方面。据统计,2024年一季度全球机械硬盘出货量及市场占有率中:
3、全球机械硬盘出货量:2024年一季度全球实现2970万块机械硬盘出货,环比增长3%。
4、西部数据(西数)市场占有率:根据出货量,西部数据在一季度占据全体市场的39.5%,位列第一。
5、西数硬盘的故障率相对较低,这主要得益于其良好的生产制造工艺、高质量的产品设计以及技术创新。但是,当西数硬盘出现故障后,如何恢复西数硬盘的数据,是一个持久研究的技术问题。其中,通过获取西数硬盘的tis(tertiary information store,三级信息存储)并获取二级译码表,是恢复西数硬盘数据重要方法之一。
6、因为二级译码表(简称t2)用于记录lba(逻辑块地址)对应的物理位置(磁头、柱面、扇区),即实现对逻辑地址与物理地址的转换。这个模块在硬盘中起到了关键作用,因为硬盘在读写数据时,需要知道逻辑地址对应的实际物理位置。
7、但是,现有技术中,通过tis(tertiary information store,三级信息存储)获取二级译码表(即190模块)时,存在很多不足和技术问题,体现在:
8、1.tis数据访问的复杂性
9、2.tis数据解析的困难
10、3.二级译码表(190模块)的复杂性
11、4.技术和工具的局限性
12、5.因收费软件带来的费用问题
13、因此,需要一种技术可靠、成本低廉的、通过三级信息存储获取二级译码表的方法,以解决上述的技术问题。
技术实现思路
1、本发明针对现有技术的不足问题,提供了一种通过三级信息存储获取二级译码表的方法:通过采用指令读取二级译码表,如果未果,则采用三级信息存储获取二级译码表的方法,实现了高效、低成本、高准确性及可持续性地获取二级译码表,以实现西数硬盘的数据恢复,包括以下步骤:
2、s100:采用指令读取二级译码表,包括以下步骤:
3、s101:进入西数硬盘的固件模式:电脑端向西数硬盘发送ata指令0x45,0xb0,0x00,0x44,0x57,0xa0,0x80,使得西数硬盘进入固件模式;
4、s102:电脑端向西数硬盘发送ata指令0xd6,0x01,0xbe,0x4f,0xc2,0xa0,0xb0及sct命令数据包,其中,sct数据包的字节长度为0x200,数据设置为0x00,0x8b,0x00,0x10,0x00,0x12,0x00,0x01,数据后的字节内容填全零;
5、s103:电脑端向西数硬盘发送ata指令0xd5,0x01,0xbe,0x4f,0xc2,0xa0,0xb0,获取sct命令执行状态,读取数据缓冲区的字节长度为0x200,以数据缓冲区的首地址为起始地址,以0x1a为偏移量,寻址并获取连续4字节内容,作为读取数据的扇区总个数;
6、s104:电脑端向西数硬盘发送ata指令0xd5,0xxx,0xbf,0x4f,0xc2,0xa0,0xb0,用以读取西数硬盘的二级译码表,其中,采用缓冲区接收从西数硬盘所读取的二级译码表,0xxx为读取数据扇区个数;
7、s105:重复步骤s104,直至完成西数硬盘的二级译码表的读取,其中,读取数据扇区个数总和等于读取数据的扇区总个数;
8、s200:判断所获取的西数硬盘的二级译码表是否完整,如果是,结束流程,否则,执行步骤s300;
9、s300:采用三级信息存储获取二级译码表,包括以下步骤:
10、s301:获取三级信息存储:采用步骤s100的方法且数据包的数据为0x8b,0x00,0x10,0x00,0xa,用以获取三级信息存储;
11、s302:解析所读取到的三级信息存储;
12、s303:读取190模块中的二级译码表,包括以下步骤:
13、s3031:子项数据个数赋初值为0;
14、s3032:判断当前子项数据个数是否小于步骤s3025所获取的临时动态数组中子项数据个数,如果是,执行步骤s3033,否则,执行步骤s3036;
15、s3033:以当前子项数据个数为索引,从临时动态数组中获取索引所对应的b树映射项的子项数据;
16、s3034:电脑端向西数硬盘发送指令,读取临时动态数组中获取索引所对应的b树映射项的子项数据中,偏移为扇区偏移字段的值处的数据;
17、s3035:子项数据个数自加1,执行步骤s3032;
18、s3036:获取输出缓冲区中的数据,作为二级译码表。
19、优选地,步骤s302包括以下步骤:
20、s3021:读取三级信息存储0x00至0x22字节内容,作为根表头;
21、s3022:以三级信息存储的首地址为起始地址,以0x200为偏移量,寻址并获取连续0x28字节内容,作为元数据头;
22、s3023:解析三级信息存储的元数据项:
23、s3024:判断第二动态数组中的数据项个数是否小于或等于0,如果是,表示数据不合法,结束流程,否则,执行步骤s3025;
24、s3025:从第二动态数组中取出首项数据,作为临时动态数组;
25、配置输出缓冲区,其字节长度等于临时动态数组中子项数据个数乘以元数据头中的块大小。
26、优选地,步骤s3023包括以下步骤:
27、s30230:客户端个数赋初值为0;
28、s30231:判断当前客户端个数是否小于元数据头中元数据项的个数,如果是,执行步骤s30232,否则,执行步骤s3024;
29、s30232:以客户端个数为索引,读取元数据头中的客户端起始页字段的值作为当前起始页值;
30、s30233:根据客户端个数的大小,确定结束页值;
31、s30234:判断起始页值是否小于或等于结束页值,如果是,执行步骤s30235,否则,执行步骤s30236;
32、s30235:在起始页至结束页的范围内,解析出当前元数据项中的b树映射项的子项数据,所需解析子项数据个数为结束页值减起始页值的差再加1;
33、s30236:第一动态数组作为子项数据保存至第二动态数组;
34、s30237:客户端个数自加1,执行步骤s30231。
35、优选地,步骤s30233包括以下步骤:
36、s302330:判断当前客户端个数是否等于元数据头中元数据项字段的值减1,如果是,执行步骤s302331,否则,执行步骤s302332;
37、s302331:元数据头中的块个数字段的值减1,作为当前结束页值,执行步骤s30234;
38、s302332:以元数据项的值加1的和作为索引,读取元数据头中的客户端起始页字段的值并减1,其结果作为当前结束页值。
39、优选地,步骤s30235包括以下步骤:
40、s302351:判断起始页值是否小于所需解析子项数据个数,如果是,执行步骤s302352,否则,执行步骤s30236;
41、s302352:以起始页值乘以0xc的积,加上0x228的和,作为偏移量,以三级信息存储的首地址为起始地址,寻址并读取0xc字节的内容,作为b树映射项;
42、s302353:判断b树映射项的扇区偏移字段的值是否不为0xffffffff且三级信息存储数据字节长度为0,或判断b树映射项的扇区偏移字段的值乘以0x200的积是否小于三级信息存储数据字节长度,任一条件满足时,执行步骤s302354,否则,起始页值自加1,执行步骤s302351;
43、s302354:b树映射项作为子项数据保存至第一动态数组,起始页值自加1,执行步骤s302351。
44、优选地,步骤s3034包括以下步骤:
45、s30341:电脑端向西数硬盘发送ata指令0xd6,0x01,0xbe,0x4f,0xc2,0xa0,0xb0及sct命令数据包,其中,数据包的数据为
46、0x32,0x0,0x01,0x0,0xmm,0xmm,0xmm,0xmm,0x00,0x00,0xnn,0xnn,
47、其中,
48、0xmm,0xmm,0xmm,0xmm等于临时动态数组中获取索引所对应的b树映射项的子项数据中扇区偏移字段的值加190模块的地址之和;
49、0xnn,0xnn为扇区大小,其等于元数据头中块大小字段的值除以0x200的商;
50、s30342:电脑端向西数硬盘发送ata指令0xd5,0xyy,0xbf,0x4f,0xc2,0xa0,0xb0,执行发送的指令并读取二级译码表,其中,0xyy为扇区大小,其值等于元数据头中块大小字段的值除以0x200的商;
51、以子项数据个数乘以元数据头中块大小字段的值为偏移量,将西数硬盘所读取的二级译码表存入输出缓冲区。
52、本发明的有益效果是:解决了现有技术中tis数据访问的复杂性、tis数据解析的困难、二级译码表(190模块)的复杂性、技术和工具的局限性以及因收费软件带来的费用问题等技术问题。
本文地址:https://www.jishuxx.com/zhuanli/20240911/292477.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。