一种将解压缩的数据体压缩的方法与流程

文档序号:40443939发布日期:2024-12-24 15:18阅读:16来源:国知局
本发明属于信息安全及数据恢复领域,涉及西数硬盘的rom文件中数据体压缩,尤其涉及一种将解压缩的数据体压缩的方法。
背景技术
::1、硬盘是高度复杂尖端的装置,它结合了电磁、机械和电子方面的技术,以非常高的密度存储信息。硬盘技术使个人电脑、电影点播、数字录像机(dvr)和数字音乐点唱机的开发成为可能,并大大促进了数字相机和摄像机的普及。此外,互联网上的所有的信息都可以存在硬盘上。2、西数是数据存储业的排头兵,硬盘业的领头羊。西数硬盘的市场占有量也相当大。其中,采用marvell一直是主控领域的佼佼者,sata时代的王者,性能和稳定性都很好。而采用marvell主控的西数硬盘的占有率也很高。3、但是,由于marvell主控的西数硬盘在出现故障后不能读写数据。因此,如果不能对故障硬盘进行恢复,则会造成用户数据的丢失。但要修复故障硬盘,必须获取硬盘的rom文件,而rom文件中有效的数据部分是管理头及数据体,其中,部分rom文件是加锁的rom文件,如果不能解锁,即使获取到rom文件中管理头及数据体,也不能修复故障硬盘。4、题为《一种获取rom文件中管理头及数据体的方法》、申请号为202311580695.0、申请日期为2023年11月24日的发明申请公开了获取rom文件中管理头及数据体的方法。但是,在获取管理头及数据体后,需要对解压缩的数据体重新进行压缩,否则,就不能更新并重构用以修复故障硬盘所需的rom文件,因而不能恢复marvell主控的西数硬盘。5、现有技术中,针对marvell主控的西数硬盘,目前尚无一种将解压缩的数据体压缩的方法。技术实现思路1、本技术针对现有的技术问题,提供一种将解压缩的数据体压缩的方法,用以修复故障硬盘所需的rom文件,从而达到恢复marvell主控的西数硬盘的目的。2、本技术将题为《一种获取rom文件中管理头及数据体的方法》、申请号为202311580695.0、申请日期为2023年11月24日的发明申请,以及题为《一种获取西数marvell硬盘中rom文件的解密数据体集合的方法》、申请号为202410475841.1、申请日期为2024年04月19日的发明申请的全部内容通过引用纳入本发明申请中。3、本技术所提供的方法包括以下步骤:4、s100:初始化数据、设置数据、输入源数据及源数据字节长度,其中,5、源数据是采用获取西数marvell硬盘中rom文件的解密数据体集合的方法而获取的数据;6、初始化数据包括:初始化目标数据,目标索引作为目标数据的偏移量并赋初值为0;7、以目标索引作为偏移量,以目标数据的起始地址为首地址,向后偏移并将寻址的连续4字节内容赋值为源数据字节长度,目标索引自加4;8、初始化数据还包括对如下数据初始化:9、数据i、数据h、数据l、数据m、数据n、数据j、数据k、数据x、10、数据y;11、设置数据包括对如下数据设置:12、数据a、数据b、数据c、数据d、数据e、数据f、数据g;13、s200:将源数据0x00字节至0x3c字节的内容,拷贝至起始地址为0xfc4的数据d中;14、0x1001加源数据0x00字节的内容的和,再乘以4的积,作为偏移量,以数据b的起始地址为首地址,向后偏移并将寻址的连续4字节内容赋值为0xfc4;15、以数据c的起始地址为首地址,向后偏移0x3f10字节并将寻址的连续4字节内容赋值为0x1001加源数据0x00字节的内容的和;16、s300:判断数据m是否大于数据i,如果是,执行步骤s400,否则,执行步骤s500;17、s400:数据i的值赋给数据m;18、s500:判断数据m是否大于2,如果是,执行步骤s600,否则,执行步骤s700;19、s600:采用第一方法且输入数据i-a等于数据n,执行步骤s800;20、采用第二方法且输入数据ii-a赋值为数据m加0xfd;21、s700:以数据j作为偏移量,以数据d的起始地址为首地址,向后偏移并将寻址的1字节的内容赋值给输入数据i-a,再采用第一方法;22、s800:判断是否满足数据h小于数据m且数据k大于0,如果是,执行步骤s900,否则,执行步骤sc00;23、s900:数据k自减1;24、以数据l作为偏移量,以源数据的起始地址为首地址,向后偏移并将寻址的1字节内容赋值给数据p;25、以数据o作为偏移量,以数据d的起始地址为首地址,向后偏移并将寻址的1字节内容赋值为数据p;26、数据l自加1;27、sa00:判断数据o是否小于0x3b,如果是,执行步骤sb00,否则,执行步骤sc00;28、sb00:以数据o加0x1000的和作为偏移量,以数据d的起始地址为首地址,向后偏移并将寻址的1字节内容赋值为数据p;29、数据o加1之和,与0xfff进行与运算,其结果赋值给数据o;30、数据j加1之和,与0xfff进行与运算,其结果赋值给数据j;31、采用第三方法且输入数据iii-a赋值为数据j;32、数据h自加1;33、sc00:判断数据h是否小于数据m,如果是,执行步骤sd00,否则,执行步骤sh00;34、sd00:数据o加1之和,与0xfff进行与运算,其结果赋值给数据o;35、数据j加1之和,与0xfff进行与运算,其结果赋值给数据j;36、数据i自减1;37、se00:判断数据i是否不等于0,如果是,执行步骤sf00,否则,执行步骤sg00;38、sf00:采用第三方法且输入数据iii-a赋值为数据j;39、sg00:数据h自加1;40、sh00:判断数据i是否等于0,如果是,执行步骤sj00,否则,执行步骤s800;41、sj00:判断数据x是否等于0x80000000,如果是,执行步骤sl00,否则,执行步骤sk00;42、sk00:以目标索引为偏移量,以目标数据的起始地址为首地址,向后偏移并将寻址的连续4字节内容赋值为数据y;43、目标索引自加4;44、数据x赋值为0x80000000,数据y赋值为0;45、sl00:输出目标索引作为压缩数据体的字节长度;输出目标数据作为压缩数据体。46、优选地,初始化数据包括如下步骤:47、数据i赋值为0x3c;48、数据h、数据o、数据m、数据n、数据y均赋值为0;49、数据l赋值为0x3c;50、数据j赋值为0xfc4;51、数据k赋值为源数据字节长度减去0x3c;52、数据x赋值为0x80000000。53、优选地,设置数据包括以下步骤:54、a.设置数据a,用以生成加密数据的辅助运算,包括以下步骤:55、a0:下标a、下标b均赋初值为0;56、a1:以下标a乘以4的积为偏移量,以数据a的起始地址为首地址,向后偏移并将寻址的连续4字节内容赋值为1;57、以0x1884加下标a的和乘以4的积为偏移量,以数据a的起始地址为首地址,向后偏移并将寻址的连续4字节内容赋值为下标a加上0x273的和;58、以0x139c加下标a的和乘以4的积为偏移量,以数据a的起始地址为首地址,向后偏移并将寻址的连续4字节内容赋值为下标a;59、a2:下标a自加1;60、a3:判断下标a是否不等于0x13a,如果是,执行步骤a1,否则,执行步骤a4;61、a4:下标a赋值为0x13a;62、a5:设置数据a:63、以下标b乘以4的积为偏移量,以数据a的起始地址为首地址,向后偏移并将获取寻址的连续4字节内容作为被加数;64、以下标b加1的和再乘以4的积为偏移量,以数据a的起始地址为首地址,向后偏移并将获取寻址的连续4字节内容作为加数;65、以下标a乘以4的积为偏移量,以数据a的起始地址为首地址,向后偏移并将寻址的连续4字节内容赋值为被加数加加数的和;66、以0x1884加下标a的和再乘以4的积为偏移量,以数据a的起始地址为首地址,向后偏移并将寻址的连续4字节内容赋值为下标b;67、以0x9d0加下标b的和再乘以4的积为偏移量,以数据a的起始地址为首地址,向后偏移并将寻址的连续4字节内容赋值为下标a;68、以0x9d4加下标b的和再乘以4的积为偏移量,以数据a的起始地址为首地址,向后偏移并将寻址的连续4字节内容赋值为下标a;69、a6:下标a自加1,下标b自加2;70、a7:判断下标a是否小于或等于0x272,如果是,执行步骤a5,否则,执行步骤a8;71、a8:以数据a的起始地址为首地址,向后偏移0x9cc字节并将寻址的连续4字节内容赋值为0x7fffffff;72、以数据a的起始地址为首地址,向后偏移0x1398字节并将寻址的连续4字节内容赋值为0x0;73、输出数据a;74、b.设置数据b,用以生成加密数据的辅助运算,包括以下步骤:75、b0:下标a赋初值为0x1001;76、b1:以下标a乘以4的积为偏移量,以数据b的起始地址为首地址,向后偏移并将寻址的连续4字节内容赋值为0x1000;77、b2:下标a自加1;78、b3:判断下标a是否不等于0x1101,如果是,执行步骤a1,否则,结束数据b的设置流程并输出数据b;79、c.设置数据c,用以生成加密数据的辅助运算,包括以下步骤:80、c0:下标a赋初值为0x0;81、c1:以下标a乘以4的积为偏移量,以数据c的起始地址为首地址,向后偏移并将寻址的连续4字节内容赋值为0x1000;82、c2:下标a自加1;83、c3:判断下标a是否不等于0x1000,如果是,执行步骤c1,否则,结束数据c的设置流程并输出数据c;84、d.设置数据d,用以临时存放数据,当计算加密数据时从该数据中取值,包括以下步骤:85、设置数据d的字节长度为0x103c字节,从首地址起连续填入0xfc4个0x20;86、e.设置数据f、数据g:从pc-3000portable-iii 003396软件中获取数据f、数据g,用以生成加密数据的辅助运算。87、优选地,第一方法包括以下步骤:88、i-1:输入数据并赋初值:89、输入数据i-a,数据i-b、数据i-c均赋初值为0;90、i-2:以i-a乘以4的积加0x139c的和为偏移量,以数据a的起始地址为首地址,向后偏移并获取寻址的连续4字节内容并赋值给数据i-d;91、i-3:数据i-b右移1bit位;92、i-4:判断数据i-d与0x01进行与运算的结果是否等于0x01,如果是,执行步骤i-5,否则,执行步骤i-6;93、i-5:数据i-b自加0x80000000;94、i-6:数据i-c自加1;95、i-7:以i-d乘以4的积加0x9d0的和为偏移量,以数据a的起始地址为首地址,向后偏移并获取寻址的连续4字节内容并赋值给数据i-d;96、i-8:判断数据i-d是否等于0x272,如果是,执行步骤i-9,否则,执行步骤i-7;97、i-9:采用第四方法且输入数据iv-a赋值为数据i-d、输入值数据iv-b赋值为数据i-b;98、i-a:采用第五方法且输入数据v-a赋值为数据i-a。99、优选地,第二方法包括以下步骤:100、ii-1:输入数据ii-a;101、ii-2:生成数据iv-a:将数据ii-a的值右移6bit位所生成的值作为偏移量,以数据f的起始地址为首地址,向后偏移并将获取寻址的1字节的内容赋值给数据iv-a;102、ii-3:生成数据iv-b:将数据ii-a的值右移6bit位所生成的值作为偏移量,以数据g的起始地址为首地址,向后偏移并将获取寻址的1字节的内容,所获取的1字节的内容左移24bit位所生成的值赋值给数据iv-b;103、ii-4:采用当前的数据iv-a及数据iv-b并执行第四方法;104、ii-5:再次生成数据iv-a:数据iv-a赋值为0x06;105、ii-6:再次生成数据iv-b:数据ii-a与0x3f进行与运算后的结果,再左移0x1a bit位所生成的值,将所生成的值赋值给数据iv-b;106、ii-7:采用当前的数据iv-a及数据iv-b,执行第四方法。107、优选地,第三方法包括以下步骤:108、iii-1:输入数据iii-a;109、iii-2:以数据iii-a为偏移量,以数据d的起始地址为首地址,向后偏移并获取寻址的1字节内容,所获取1字节内容加0x1001之和赋值给数据iii-b;110、iii-3:数据iii-c赋初值为1;111、iii-4:以数据iii-a加数据iii-c的和为偏移量,以数据d的起始地址为首地址,向后偏移并获取寻址的1字节内容并赋值给数据iii-d;112、以数据iii-b加数据iii-c的和为偏移量,以数据d的起始地址为首地址,向后偏移并获取寻址的1字节内容并赋值给数据iii-e;113、iii-5:判断数据iii-d是否等于数据iii-e,如果是,执行步骤iii-6,否则,执行步骤iii-8;114、iii-6:数据iii-c自加1;115、iii-7:判断数据iii-c是否等于0x3b,如果是,执行步骤iii-8,否则,执行步骤iii-4;116、iii-8:判断数据iii-d是否等于数据iii-e,如果是,执行步骤iii-9,否则,执行步骤iii-a;117、iii-9:数据iii-c赋值为0x3c;118、iii-a:判断数据iii-c是否大于数据m,如果是,执行步骤iii-b,119、否则,结束第三方法的流程;120、iii-b:数据iii-a减数据iii-b的差,与0xfff进行与运算后的结果,再减0x01的差,赋值给数据n,并将当前数据iii-c赋值给数据m。121、优选地,第四方法包括以下步骤:122、iv-1:输入数据iv-a、数据iv-b,数据iv-c赋值为0x80000000;123、iv-2:数据iv-c与数据iv-b进行与运算,判断与运算结果是否等于0,如果是,执行步骤iv-4,否则,执行步骤iv-3;124、iv-3:数据x与数据y进行或运算的结果赋值给数据y;125、iv-4:数据iv-c右移1bit位,数据x右移1bit位;126、iv-5:判断数据x是否等于0,如果是,执行步骤iv-6,否则,执行步骤iv-7;127、iv-6:以目标索引为偏移量,以目标数据的起始地址为首地址,向后偏移并寻址连续的4字节内容,将所寻址的4字节内容赋值为数据y;128、数据x赋值为0x80000000,数据y赋值为0;129、iv-7:数据iv-a自减1;130、iv-8:判断数据iv-a是否等于0,如果是,执行步骤iv-9,否则,执行步骤iv-2;131、iv-9:结束第四方法的流程。132、优选地,第五方法包括以下步骤:133、v-0:输入数据v-a;134、v-1:以数据v-a乘以4的积再加0x139c的和,作为偏移量,以数据a的起始地址为首地址,向后偏移并获取连续的4字节内容,将所获取的4字节内容赋值给数据v-a;135、v-2:以数据v-a乘以4的积为偏移量,以数据a的起始地址为首地址,向后偏移并将连续的4字节内容加1,并将连续的4字节内容加1后的结果赋值给数据v-b;136、v-3:以数据v-a加1的和再乘以4的积为偏移量,以数据a的起始地址为首地址,向后偏移并获取寻址的连续的4字节内容;137、v-4:判断数据v-b是否大于步骤v-3所获取的4字节内容,如果是,执行步骤v-5,否则,执行步骤v-9;138、v-5:数据v-a加2的和赋值给数据v-c;139、v-6:以数据v-c乘以4的积为偏移量,以数据a的起始地址为首地址,向后偏移并获取寻址的连续的4字节内容;140、v-7:判断数据v-b是否大于步骤v-6所获取的4字节内容,如果是,执行步骤v-8,否则,执行步骤v-9;141、v-8:数据v-c自加1,执行步骤v-6;142、v-9:数据v-c自减1;143、v-a:执行第一互换:144、v-a-1:以数据v-a乘以4的积为偏移量,以数据a的起始地址为首地址,向后偏移并获取寻址的连续的4字节内容;145、v-a-2:以数据v-c乘以4的积为偏移量,以数据a的起始地址为首地址,向后偏移并获取寻址的连续的4字节内容;146、v-a-3:针对数据a,将步骤v-a-1及步骤v-a-2所获取的连续的4字节内容互换;147、v-b:执行第二互换:148、v-b-1:以数据v-a乘以4的积再加0x139c的和为偏移量,以数据a的起始地址为首地址,向后偏移并获取寻址的连续的4字节内容;149、v-b-2:以数据v-c乘以4的积再加0x139c的和为偏移量,以数据a的起始地址为首地址,向后偏移并获取寻址的连续的4字节内容;150、v-b-3:针对数据a,将步骤v-b-1及步骤v-b-2所获取的连续的4字节内容互换;151、v-c:执行第三互换:152、v-c-1:以数据v-a乘以4的积再加0x1884的和为偏移量,以数据a的起始地址为首地址,向后偏移并获取寻址的连续的4字节内容;153、v-c-2:以数据v-c乘以4的积再加0x1884的和为偏移量,以数据a的起始地址为首地址,向后偏移并获取寻址的连续的4字节内容;154、v-c-3:针对数据a,将步骤v-c-1及步骤v-c-2所获取的连续的4字节内容互换;155、v-d:将数据v-a赋值为数据v-c;156、v-e:以数据v-a乘以4的积再加0x9d0的和为偏移量,以数据a的起始地址为首地址,向后偏移并获取寻址的连续的4字节内容,将所获取的4字节内容赋值给数据v-a;157、v-f:判断数据v-a是否不等于0,如果是,执行步骤v-2,否则,执行步骤v-g;158、v-g:结束第五方法的流程。159、本发明具有以下有益效果:160、1、无需额外的硬件设备,恢复故障硬盘的成本低廉。161、2、解决了现有技术中尚无一种将解压缩的数据体压缩的方法的技术问题。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1