一种获取西数Marvell硬盘中ROM文件的解密数据体集合的方法与流程
- 国知局
- 2024-07-31 23:20:34
本发明属于信息安全及数据恢复领域,涉及一种获取西数marvell硬盘中rom文件的解密数据体集合的方法。
背景技术:
1、硬盘是高度复杂尖端的装置,它结合了电磁、机械和电子方面的技术,以非常高的密度存储信息。硬盘技术使个人电脑、电影点播、数字录像机(dvr)和数字音乐点唱机的开发成为可能,并大大促进了数字相机和摄像机的普及。此外,互联网上的所有的信息都可以存在硬盘上。
2、西数是数据存储业的排头兵,硬盘业的领头羊。西数硬盘的市场占有量也相当大。其中,采用marvell一直是主控领域的佼佼者,sata时代的王者,性能和稳定性都很好。而采用marvell主控的西数硬盘的占有率也很高。
3、但是,由于marvell主控的西数硬盘在出现故障后不能读写数据。因此,如果不能对故障硬盘进行恢复,则会造成用户数据的丢失。但要修复故障硬盘,必须获取硬盘的rom文件,而rom文件中有效的数据部分是管理头及数据体,其中,部分rom文件是加锁的rom文件,如果不能解锁,即使获取到rom文件中管理头及数据体,也不能修复故障硬盘。
4、题为《一种获取rom文件中管理头及数据体的方法》、申请号为202311580695.0、申请日期为2023年11月24日的发明申请公开了获取rom文件中管理头及数据体的方法。但是,如果所获取rom文件中管理头及数据体未解密的话,就不能更新并重构用以修复故障硬盘所需的rom文件,因而不能恢复marvell主控的西数硬盘。而在获取rom文件中管理头及数据体并解密的过程中,需要获取西数marvell硬盘中rom文件的解密数据体集合。
5、现有技术中,针对marvell主控的西数硬盘,在获取rom文件中管理头及数据体并解密的过程中,目前尚无一种获取西数marvell硬盘中rom文件的解密数据体集合的方法。
技术实现思路
1、本技术针对现有的技术问题,提供一种获取西数marvell硬盘中rom文件的解密数据体集合的方法,因而能够获取rom文件中管理头及数据体并解密,从而达到恢复marvell主控的西数硬盘的目的。
2、本技术将题为《一种获取rom文件中管理头及数据体的方法》、申请号为202311580695.0、申请日期为2023年11月24日的发明申请的全部内容通过引用纳入本发明申请中。
3、本技术所提供的方法包括以下步骤:
4、s100:采用获取rom文件中管理头及数据体的方法,获取所述硬盘rom文件所包含的管理头及数据体,并生成源数据,其中,所述硬盘为西数
5、marvell硬盘;
6、s200:初始化并获取解密后数据的字节长度:源索引、目标索引、第一计数器均赋值为0,设置下标索引,获取解密后数据的字节长度,其中,
7、下标索引设置为0xfc4;
8、获取源数据前4字节的内容,作为解密后数据的字节长度,第一计数器的值自加4;
9、s300:获取1字节的解密值,包括以下步骤:
10、s301:寻址并获取数据i:以第二数据的起始地址为首地址,向后偏移0x224c字节并获取连续4字节的内容,作为数据i的值;
11、s302:判断数据i的值是否小于0x273,如果是,执行步骤s303,否则,执行步骤s305;
12、s303:采用获取位加密数据中位数据的方法且位长度为1,获取输出值数据o作为位数据的值;
13、s304:以0x1884加数据i的和,再加数据o的和作为偏移量,以第二数据的起始地址为首地址,向后偏移并获取连续4字节的内容,赋值给数据i,执行步骤s302;
14、s305:数据i减0x273的差,赋值给解密值;
15、s400:填入解密数据,包括以下步骤:
16、s401:判断解密值是否大于或等于0x100,如果是,执行步骤s402,否则,执行步骤s40a;
17、s402:采用获取位加密数据中位数据的方法且位长度为8,获取输出值数据o的值并赋值给数据h;
18、s403:寻址并赋值数据j:以0x100加数据h的和作为偏移量,以第一数据的起始地址为首地址,向后偏移并获取1字节的内容,将所获取的内容左移6bit后的值,作为数据j;
19、s404:以数据h的值作为偏移量,以第一数据的起始地址为首地址,向后偏移并获取1字节的内容,所获取的内容减2的差赋值给数据k;
20、s405:获取数据l的值:
21、采用获取位加密数据中位数据的方法且位长度为数据k,获取输出值数据o;
22、计算数据h的值左移后,与0x3f进行与运算后的值,其中,左移的位数等于数据k的值;
23、数据o加与运算后的值之和,与数据j进行或运算后的值,所获取的值赋值给数据l;
24、s406:获取数据p的值:下标索引减去数据l的值,再减去1的差,与0xfff进行运算后的值,作为数据p的值;
25、s407:将数据p的值减去0xfe的差再加1之和赋值给数据q;第一计数器自加数据q的值;数据t赋值为0;
26、s408:判断当前数据q的值是否为零,如果否,执行步骤s409,否则,执行步骤s500;
27、s409:获取解密值:以数据p的值加数据t的值之和,与0xfff进行与运算,所获得与运算的值作为偏移量,以第三数据的起始地址为首地址,向后偏移并获取1字节的内容,作为解密值;
28、s40c:以目标索引为偏移量,以目标数据的起始地址为首地址,向后偏移并将寻址的1字节内容赋值为解密值;
29、s40d:目标索引的值自加1;
30、以下标索引为偏移量,以第三数据的起始地址为首地址,向后偏移并将寻址的1字节内容赋值为解密值;
31、下标索引加1的和,再与0xfff进行与运算,所获得与运算的值赋值给下标索引;
32、数据t的值自加1;
33、据q的值自减1;
34、执行步骤s408
35、s40a:以目标索引为偏移量,以目标数据的起始地址为首地址,向后偏移并将寻址的1字节内容赋值为解密值;
36、s40b:目标索引的值自加1;
37、以下标索引为偏移量,以第三数据的起始地址为首地址,向后偏移并将寻址的1字节内容赋值为解密值;
38、下标索引加1的和,再与0xfff进行与运算,所获得与运算的值赋值给下标索引;
39、第一计数器的值自加1,执行步骤s500;
40、s500:判断第一计数器是否大于或等于解密后数据的字节长度,如果是,输出目标数据并结束流程,否则,执行步骤s300。
41、优选地,第一数据的获取包括以下步骤:
42、sa0:初始化并设置运算数据:
43、下标a、下标b均赋初值为0,第一数据为空,运算数据设置为0x33334445,0x22223333,0x22222222,0x11111111,0x11111111,0x11111111,0x0,0x0,将运算数据的第一个值赋给第一数值;
44、sa1:判断下标a与0x7进行与运算后结果是否等于0,如果是,执行步骤sa3,否则,执行步骤sa2;
45、sa2:按顺序取出运算数据下一值赋给第一数值;
46、sa3:第一数值与0xf进行与运算后的值,作为左移位数,将0x01左移该位数后的值减1的差,作为第二数值;
47、sa4:判断第二数值是否大于或等于0,如果是,执行步骤sa5,否则,执行步骤sa7;
48、sa5:以0x100加下标b的值作为偏移量,以第一数据的起始地址为首地址,向后偏移并寻址,将下标a的值赋给当前所寻址的1字节,下标b自加1,第二数值自减1;
49、sa6:判断第二数值是否不等于-1,如果是,执行步骤sa5,否则,执行步骤sa7;
50、sa7:第一数值的右移4位,下标a自加1;
51、sa8:判断下标a是否不等于0x40,如果是,执行步骤sa1,否则,执行步骤sa9;
52、sa9:下标a赋值为0xb71a,下标b赋值为0,第一数值赋值为3;
53、sa10:下标a与0x7进行与运算后的结果再乘以0x10,所获得的值赋给第二数值;
54、sa11:以下标b的值作为偏移量,以第一数据的起始地址为首地址,向后偏移并寻址,将第一数值赋给当前所寻址的1字节,下标b自加1,第二数值自减1;
55、sa12:判断第二数值是否为0,如果是,执行步骤sa13,否则,执行步骤sa11;
56、sa13:第一数值自加1,下标a的值右移3位;
57、sa14:判断下标a是否不等于0,如果是,执行步骤sa10,否则,结束流程。
58、优选地,第二数据的获取包括以下步骤:
59、sb0:初始化:下标a、下标b均赋初值为0,第二数据为空;
60、sb1:以下标a乘以4的积作为偏移量,以第二数据的起始地址为首地址,向后偏移并寻址,将所寻址地址的连续4字节内容赋值为1;
61、以0x1884加下标a的和再乘以4的积作为偏移量,以第二数据的起始地址为首地址,向后偏移并寻址,将所寻址地址的连续4字节内容赋值为下标a加上0x273的和;
62、以0x139c加下标a的和再乘以4的积作为偏移量,以第二数据的起始地址为首地址,向后偏移并寻址,将所寻址地址的连续4字节内容赋值为下标a;
63、sb2:下标a自加1;
64、sb3:判断下标a的值是否不等于0x13a,如果是,执行步骤sb1,否则,执行步骤sb4;
65、sb4:下标a赋值为0x13a;
66、sb5:获取被加数:以下标b乘以4的积作为偏移量,以第二数据的起始地址为首地址,向后偏移并寻址,读取所寻址地址的连续4字节内容作为被加数;
67、获取加数:以下标b加1的和再乘以4的积作为偏移量,以第二数据的起始地址为首地址,向后偏移并寻址,读取所寻址地址的连续4字节内容作为加数;
68、第二数据的赋值:以下标a乘以4的积作为偏移量,以第二数据的起始地址为首地址,向后偏移并寻址,将所寻址地址的连续4字节内容赋值为被加数加上加数的和;
69、以0x1884加下标a的和再乘以4的积作为偏移量,以第二数据的起始地址为首地址,向后偏移并寻址,将所寻址地址的连续4字节内容赋值为下标b;
70、以0x9d0加下标b的和再乘以4的积作为偏移量,以第二数据的起始地址为首地址,向后偏移并寻址,将所寻址地址的连续4字节内容赋值为下标a;
71、以0x9d4加下标b的和再乘以4的积作为偏移量,以第二数据的起始地址为首地址,向后偏移并寻址,将所寻址地址的连续4字节内容赋值为下标a;
72、sb6:下标a自加1,下标b自加2;
73、sb7:判断下标a是否小于或等于0x272,如果是,执行步骤sb5,否则,执行步骤sb8;
74、sb8:以第二数据的起始地址为首地址,向后偏移0x9cc并寻址,将所寻址地址的连续4字节内容赋值为0x7fffffff;
75、以第二数据的起始地址为首地址,向后偏移0x1398字节并寻址,将所寻址地址的连续4字节内容赋值为0x0。
76、优选地,第三数据的获取包括以下步骤:
77、设置第三数据的字节长度为0x103b字节,从第三数据的起始地址为首地址的连续0xfc4个字节内容均赋值为0x20,第0xfc4个字节开始连续存放解密值,当前解密值为重复数据的个数时,将该重复数据的个数填入目标数据。
78、优选地,获取位加密数据中位数据的方法包括以下步骤:
79、sd1:赋初值:数据m、数据n均赋初值为0;
80、sd2:判断数据n的值是否等于0,如果是,执行步骤sd3,否则,执行步骤sd4;
81、sd3:数据n赋值为0x20;
82、以源索引作为偏移量,以源数据的起始地址为首地址,向后偏移并寻址,将所寻址地址的连续4字节内容赋值给数据m,源索引自加4;
83、sd4:数据n减位长度的差赋值给数据p,判断数据p的值是否小于0,如果是,执行步骤sd5,否则,执行步骤sd7;
84、sd5:位长度减数据n的差作为位偏移量,数据m所对应的32bit中,从右向左偏移该位偏移量,并在当前bit位向右获取连续n个bit位,所获取n个bit位的值作为数据o,其中,n为数据n的值;
85、以源索引作为偏移量,以源数据的起始地址为首地址,向后偏移并寻址,将所寻址地址的连续4字节内容赋值给数据m,源索引自加4;
86、sd6:数据p加0x20之和,与数据o进行或运算后的结果,作为右移位数,将数据m右移该右移位数的结果,赋值给数据o;
87、数据p加0x20之和赋值给数据n,执行步骤sd8;
88、sd7:数据p作为位偏移量,数据m所对应的32bit中,从右向左偏移该位偏移量,并在当前bit位向右获取连续n个bit位,所获取n个bit位的值作为数据o,其中,n为位长度;
89、数据p赋值给数据n;
90、sd8:输出数据o作为位数据的值。
91、本发明具有以下有益效果:
92、1、无需额外的硬件设备,恢复故障硬盘的成本低廉。
93、2、解决了现有技术中尚无一种获取西数marvell硬盘中rom文件的解密数据体集合的方法的技术问题。
本文地址:https://www.jishuxx.com/zhuanli/20240730/197095.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表