本發(fā)明屬于電子數(shù)據(jù)及數(shù)據(jù)恢復(fù)取證領(lǐng)域,涉及一種通過(guò)三級(jí)信息存儲(chǔ)獲取二級(jí)譯碼表的方法。
背景技術(shù):
1、西數(shù)硬盤(wd),全稱western?digital,是美國(guó)西部數(shù)據(jù)公司(western?digitalcorp)生產(chǎn)的硬盤產(chǎn)品。西部數(shù)據(jù)公司是全球知名的硬盤廠商之一,始創(chuàng)于1970年,并于1988年開(kāi)始設(shè)計(jì)和生產(chǎn)硬盤。公司的總部設(shè)在美國(guó)加州的lake?forest,是歷史最悠久的硬盤廠商之一,也是ide接口的創(chuàng)始者之一。
2、西數(shù)硬盤的產(chǎn)品線涵蓋了企業(yè)服務(wù)器、桌面級(jí)ide硬盤、移動(dòng)存儲(chǔ)應(yīng)用及av領(lǐng)域等多個(gè)方面。據(jù)統(tǒng)計(jì),2024年一季度全球機(jī)械硬盤出貨量及市場(chǎng)占有率中:
3、全球機(jī)械硬盤出貨量:2024年一季度全球?qū)崿F(xiàn)2970萬(wàn)塊機(jī)械硬盤出貨,環(huán)比增長(zhǎng)3%。
4、西部數(shù)據(jù)(西數(shù))市場(chǎng)占有率:根據(jù)出貨量,西部數(shù)據(jù)在一季度占據(jù)全體市場(chǎng)的39.5%,位列第一。
5、西數(shù)硬盤的故障率相對(duì)較低,這主要得益于其良好的生產(chǎn)制造工藝、高質(zhì)量的產(chǎn)品設(shè)計(jì)以及技術(shù)創(chuàng)新。但是,當(dāng)西數(shù)硬盤出現(xiàn)故障后,如何恢復(fù)西數(shù)硬盤的數(shù)據(jù),是一個(gè)持久研究的技術(shù)問(wèn)題。其中,通過(guò)獲取西數(shù)硬盤的tis(tertiary?information?store,三級(jí)信息存儲(chǔ))并獲取二級(jí)譯碼表,是恢復(fù)西數(shù)硬盤數(shù)據(jù)重要方法之一。
6、因?yàn)槎?jí)譯碼表(簡(jiǎn)稱t2)用于記錄lba(邏輯塊地址)對(duì)應(yīng)的物理位置(磁頭、柱面、扇區(qū)),即實(shí)現(xiàn)對(duì)邏輯地址與物理地址的轉(zhuǎn)換。這個(gè)模塊在硬盤中起到了關(guān)鍵作用,因?yàn)橛脖P在讀寫(xiě)數(shù)據(jù)時(shí),需要知道邏輯地址對(duì)應(yīng)的實(shí)際物理位置。
7、但是,現(xiàn)有技術(shù)中,通過(guò)tis(tertiary?information?store,三級(jí)信息存儲(chǔ))獲取二級(jí)譯碼表(即190模塊)時(shí),存在很多不足和技術(shù)問(wèn)題,體現(xiàn)在:
8、1.tis數(shù)據(jù)訪問(wèn)的復(fù)雜性
9、2.tis數(shù)據(jù)解析的困難
10、3.二級(jí)譯碼表(190模塊)的復(fù)雜性
11、4.技術(shù)和工具的局限性
12、5.因收費(fèi)軟件帶來(lái)的費(fèi)用問(wèn)題
13、因此,需要一種技術(shù)可靠、成本低廉的、通過(guò)三級(jí)信息存儲(chǔ)獲取二級(jí)譯碼表的方法,以解決上述的技術(shù)問(wèn)題。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明針對(duì)現(xiàn)有技術(shù)的不足問(wèn)題,提供了一種通過(guò)三級(jí)信息存儲(chǔ)獲取二級(jí)譯碼表的方法:通過(guò)采用指令讀取二級(jí)譯碼表,如果未果,則采用三級(jí)信息存儲(chǔ)獲取二級(jí)譯碼表的方法,實(shí)現(xiàn)了高效、低成本、高準(zhǔn)確性及可持續(xù)性地獲取二級(jí)譯碼表,以實(shí)現(xiàn)西數(shù)硬盤的數(shù)據(jù)恢復(fù),包括以下步驟:
2、s100:采用指令讀取二級(jí)譯碼表,包括以下步驟:
3、s101:進(jìn)入西數(shù)硬盤的固件模式:電腦端向西數(shù)硬盤發(fā)送ata指令0x45,0xb0,0x00,0x44,0x57,0xa0,0x80,使得西數(shù)硬盤進(jìn)入固件模式;
4、s102:電腦端向西數(shù)硬盤發(fā)送ata指令0xd6,0x01,0xbe,0x4f,0xc2,0xa0,0xb0及sct命令數(shù)據(jù)包,其中,sct數(shù)據(jù)包的字節(jié)長(zhǎng)度為0x200,數(shù)據(jù)設(shè)置為0x00,0x8b,0x00,0x10,0x00,0x12,0x00,0x01,數(shù)據(jù)后的字節(jié)內(nèi)容填全零;
5、s103:電腦端向西數(shù)硬盤發(fā)送ata指令0xd5,0x01,0xbe,0x4f,0xc2,0xa0,0xb0,獲取sct命令執(zhí)行狀態(tài),讀取數(shù)據(jù)緩沖區(qū)的字節(jié)長(zhǎng)度為0x200,以數(shù)據(jù)緩沖區(qū)的首地址為起始地址,以0x1a為偏移量,尋址并獲取連續(xù)4字節(jié)內(nèi)容,作為讀取數(shù)據(jù)的扇區(qū)總個(gè)數(shù);
6、s104:電腦端向西數(shù)硬盤發(fā)送ata指令0xd5,0xxx,0xbf,0x4f,0xc2,0xa0,0xb0,用以讀取西數(shù)硬盤的二級(jí)譯碼表,其中,采用緩沖區(qū)接收從西數(shù)硬盤所讀取的二級(jí)譯碼表,0xxx為讀取數(shù)據(jù)扇區(qū)個(gè)數(shù);
7、s105:重復(fù)步驟s104,直至完成西數(shù)硬盤的二級(jí)譯碼表的讀取,其中,讀取數(shù)據(jù)扇區(qū)個(gè)數(shù)總和等于讀取數(shù)據(jù)的扇區(qū)總個(gè)數(shù);
8、s200:判斷所獲取的西數(shù)硬盤的二級(jí)譯碼表是否完整,如果是,結(jié)束流程,否則,執(zhí)行步驟s300;
9、s300:采用三級(jí)信息存儲(chǔ)獲取二級(jí)譯碼表,包括以下步驟:
10、s301:獲取三級(jí)信息存儲(chǔ):采用步驟s100的方法且數(shù)據(jù)包的數(shù)據(jù)為0x8b,0x00,0x10,0x00,0xa,用以獲取三級(jí)信息存儲(chǔ);
11、s302:解析所讀取到的三級(jí)信息存儲(chǔ);
12、s303:讀取190模塊中的二級(jí)譯碼表,包括以下步驟:
13、s3031:子項(xiàng)數(shù)據(jù)個(gè)數(shù)賦初值為0;
14、s3032:判斷當(dāng)前子項(xiàng)數(shù)據(jù)個(gè)數(shù)是否小于步驟s3025所獲取的臨時(shí)動(dòng)態(tài)數(shù)組中子項(xiàng)數(shù)據(jù)個(gè)數(shù),如果是,執(zhí)行步驟s3033,否則,執(zhí)行步驟s3036;
15、s3033:以當(dāng)前子項(xiàng)數(shù)據(jù)個(gè)數(shù)為索引,從臨時(shí)動(dòng)態(tài)數(shù)組中獲取索引所對(duì)應(yīng)的b樹(shù)映射項(xiàng)的子項(xiàng)數(shù)據(jù);
16、s3034:電腦端向西數(shù)硬盤發(fā)送指令,讀取臨時(shí)動(dòng)態(tài)數(shù)組中獲取索引所對(duì)應(yīng)的b樹(shù)映射項(xiàng)的子項(xiàng)數(shù)據(jù)中,偏移為扇區(qū)偏移字段的值處的數(shù)據(jù);
17、s3035:子項(xiàng)數(shù)據(jù)個(gè)數(shù)自加1,執(zhí)行步驟s3032;
18、s3036:獲取輸出緩沖區(qū)中的數(shù)據(jù),作為二級(jí)譯碼表。
19、優(yōu)選地,步驟s302包括以下步驟:
20、s3021:讀取三級(jí)信息存儲(chǔ)0x00至0x22字節(jié)內(nèi)容,作為根表頭;
21、s3022:以三級(jí)信息存儲(chǔ)的首地址為起始地址,以0x200為偏移量,尋址并獲取連續(xù)0x28字節(jié)內(nèi)容,作為元數(shù)據(jù)頭;
22、s3023:解析三級(jí)信息存儲(chǔ)的元數(shù)據(jù)項(xiàng):
23、s3024:判斷第二動(dòng)態(tài)數(shù)組中的數(shù)據(jù)項(xiàng)個(gè)數(shù)是否小于或等于0,如果是,表示數(shù)據(jù)不合法,結(jié)束流程,否則,執(zhí)行步驟s3025;
24、s3025:從第二動(dòng)態(tài)數(shù)組中取出首項(xiàng)數(shù)據(jù),作為臨時(shí)動(dòng)態(tài)數(shù)組;
25、配置輸出緩沖區(qū),其字節(jié)長(zhǎng)度等于臨時(shí)動(dòng)態(tài)數(shù)組中子項(xiàng)數(shù)據(jù)個(gè)數(shù)乘以元數(shù)據(jù)頭中的塊大小。
26、優(yōu)選地,步驟s3023包括以下步驟:
27、s30230:客戶端個(gè)數(shù)賦初值為0;
28、s30231:判斷當(dāng)前客戶端個(gè)數(shù)是否小于元數(shù)據(jù)頭中元數(shù)據(jù)項(xiàng)的個(gè)數(shù),如果是,執(zhí)行步驟s30232,否則,執(zhí)行步驟s3024;
29、s30232:以客戶端個(gè)數(shù)為索引,讀取元數(shù)據(jù)頭中的客戶端起始頁(yè)字段的值作為當(dāng)前起始頁(yè)值;
30、s30233:根據(jù)客戶端個(gè)數(shù)的大小,確定結(jié)束頁(yè)值;
31、s30234:判斷起始頁(yè)值是否小于或等于結(jié)束頁(yè)值,如果是,執(zhí)行步驟s30235,否則,執(zhí)行步驟s30236;
32、s30235:在起始頁(yè)至結(jié)束頁(yè)的范圍內(nèi),解析出當(dāng)前元數(shù)據(jù)項(xiàng)中的b樹(shù)映射項(xiàng)的子項(xiàng)數(shù)據(jù),所需解析子項(xiàng)數(shù)據(jù)個(gè)數(shù)為結(jié)束頁(yè)值減起始頁(yè)值的差再加1;
33、s30236:第一動(dòng)態(tài)數(shù)組作為子項(xiàng)數(shù)據(jù)保存至第二動(dòng)態(tài)數(shù)組;
34、s30237:客戶端個(gè)數(shù)自加1,執(zhí)行步驟s30231。
35、優(yōu)選地,步驟s30233包括以下步驟:
36、s302330:判斷當(dāng)前客戶端個(gè)數(shù)是否等于元數(shù)據(jù)頭中元數(shù)據(jù)項(xiàng)字段的值減1,如果是,執(zhí)行步驟s302331,否則,執(zhí)行步驟s302332;
37、s302331:元數(shù)據(jù)頭中的塊個(gè)數(shù)字段的值減1,作為當(dāng)前結(jié)束頁(yè)值,執(zhí)行步驟s30234;
38、s302332:以元數(shù)據(jù)項(xiàng)的值加1的和作為索引,讀取元數(shù)據(jù)頭中的客戶端起始頁(yè)字段的值并減1,其結(jié)果作為當(dāng)前結(jié)束頁(yè)值。
39、優(yōu)選地,步驟s30235包括以下步驟:
40、s302351:判斷起始頁(yè)值是否小于所需解析子項(xiàng)數(shù)據(jù)個(gè)數(shù),如果是,執(zhí)行步驟s302352,否則,執(zhí)行步驟s30236;
41、s302352:以起始頁(yè)值乘以0xc的積,加上0x228的和,作為偏移量,以三級(jí)信息存儲(chǔ)的首地址為起始地址,尋址并讀取0xc字節(jié)的內(nèi)容,作為b樹(shù)映射項(xiàng);
42、s302353:判斷b樹(shù)映射項(xiàng)的扇區(qū)偏移字段的值是否不為0xffffffff且三級(jí)信息存儲(chǔ)數(shù)據(jù)字節(jié)長(zhǎng)度為0,或判斷b樹(shù)映射項(xiàng)的扇區(qū)偏移字段的值乘以0x200的積是否小于三級(jí)信息存儲(chǔ)數(shù)據(jù)字節(jié)長(zhǎng)度,任一條件滿足時(shí),執(zhí)行步驟s302354,否則,起始頁(yè)值自加1,執(zhí)行步驟s302351;
43、s302354:b樹(shù)映射項(xiàng)作為子項(xiàng)數(shù)據(jù)保存至第一動(dòng)態(tài)數(shù)組,起始頁(yè)值自加1,執(zhí)行步驟s302351。
44、優(yōu)選地,步驟s3034包括以下步驟:
45、s30341:電腦端向西數(shù)硬盤發(fā)送ata指令0xd6,0x01,0xbe,0x4f,0xc2,0xa0,0xb0及sct命令數(shù)據(jù)包,其中,數(shù)據(jù)包的數(shù)據(jù)為
46、0x32,0x0,0x01,0x0,0xmm,0xmm,0xmm,0xmm,0x00,0x00,0xnn,0xnn,
47、其中,
48、0xmm,0xmm,0xmm,0xmm等于臨時(shí)動(dòng)態(tài)數(shù)組中獲取索引所對(duì)應(yīng)的b樹(shù)映射項(xiàng)的子項(xiàng)數(shù)據(jù)中扇區(qū)偏移字段的值加190模塊的地址之和;
49、0xnn,0xnn為扇區(qū)大小,其等于元數(shù)據(jù)頭中塊大小字段的值除以0x200的商;
50、s30342:電腦端向西數(shù)硬盤發(fā)送ata指令0xd5,0xyy,0xbf,0x4f,0xc2,0xa0,0xb0,執(zhí)行發(fā)送的指令并讀取二級(jí)譯碼表,其中,0xyy為扇區(qū)大小,其值等于元數(shù)據(jù)頭中塊大小字段的值除以0x200的商;
51、以子項(xiàng)數(shù)據(jù)個(gè)數(shù)乘以元數(shù)據(jù)頭中塊大小字段的值為偏移量,將西數(shù)硬盤所讀取的二級(jí)譯碼表存入輸出緩沖區(qū)。
52、本發(fā)明的有益效果是:解決了現(xiàn)有技術(shù)中tis數(shù)據(jù)訪問(wèn)的復(fù)雜性、tis數(shù)據(jù)解析的困難、二級(jí)譯碼表(190模塊)的復(fù)雜性、技術(shù)和工具的局限性以及因收費(fèi)軟件帶來(lái)的費(fèi)用問(wèn)題等技術(shù)問(wèn)題。