本發(fā)明屬于信息安全技術(shù)領(lǐng)域,具體涉及一種手機(jī)閃存芯片數(shù)據(jù)重組的方法。
背景技術(shù):
高度信息化時(shí)代的今天,數(shù)據(jù)的重要性在人們的生活中越來(lái)越多的得到了體現(xiàn)。數(shù)據(jù)安全已經(jīng)成為人們?cè)谏詈凸ぷ髦胁坏貌幻鎸?duì)的一個(gè)現(xiàn)實(shí)問(wèn)題,隨著科學(xué)技術(shù)的飛速發(fā)展,存儲(chǔ)介質(zhì)也逐漸從以前主要的硬盤磁性介質(zhì)存儲(chǔ)轉(zhuǎn)變?yōu)槎鄻踊鎯?chǔ)。閃存芯片就是其中應(yīng)用比較廣泛的一類新生存儲(chǔ)載體。但由于其存儲(chǔ)原理的特殊性和壽命限制,相比硬盤來(lái)說(shuō),閃存產(chǎn)生故障的幾率也成倍的增加,一旦發(fā)生故障,保存在其中的數(shù)據(jù)將無(wú)法讀出。
造成用戶數(shù)據(jù)不可讀取的原因可以分為兩類:一是閃存設(shè)備邏輯損壞,一般是閃存設(shè)備在正常連接時(shí),可以被操作系統(tǒng)識(shí)別,但是通過(guò)操作系統(tǒng)的標(biāo)準(zhǔn)方式不可以訪問(wèn)用戶數(shù)據(jù)。這種情況下可以使用一些簡(jiǎn)單的邏輯層數(shù)據(jù)恢復(fù)工具來(lái)恢復(fù)數(shù)據(jù);二是閃存設(shè)備物理?yè)p壞,這可能是由于閃存設(shè)備的主控、晶振、接口、PCB板等組成部件損壞,導(dǎo)致無(wú)法讀取閃存芯片中的數(shù)據(jù),這時(shí)可以通過(guò)更換相同的配件來(lái)解決;還有一類比較嚴(yán)重的故障是主控芯片或閃存芯片中的固件丟失,導(dǎo)致無(wú)法讀取閃存芯片中的數(shù)據(jù),這類損壞比邏輯損壞更普遍,為了恢復(fù)這類故障導(dǎo)致的無(wú)法讀出數(shù)據(jù)的情況,需要將閃存芯片從PCB上取下進(jìn)行數(shù)據(jù)讀取和恢復(fù)。
手機(jī)的數(shù)據(jù)是通過(guò)主控算法映射的數(shù)據(jù)(邏輯數(shù)據(jù)),而芯片上的數(shù)據(jù)(物理數(shù)據(jù))是加密的、沒(méi)有順序的。數(shù)據(jù)以頁(yè)為單位進(jìn)行讀,以塊為單位進(jìn)行擦除(一個(gè)塊由多個(gè)頁(yè)組成),寫入分為全新寫入和復(fù)寫兩種情況。全新寫入直接 分配一個(gè)空閑塊就可以寫入了;而對(duì)于復(fù)寫的情況要先擦除再寫入,需要經(jīng)過(guò)以下幾個(gè)步驟:(1)標(biāo)記舊數(shù)據(jù)塊為無(wú)效塊;(2)分配空閑塊,寫入新的數(shù)據(jù),重新地址映射;(3)如果空閑塊數(shù)量低于某一閥值時(shí)啟動(dòng)擦除操作擦除數(shù)據(jù);(4)擦除算法中要合并有效數(shù)據(jù),啟動(dòng)均衡寫入管理進(jìn)行擦除并釋放空閑塊。
因?yàn)殚W存器件中每個(gè)塊的擦寫次數(shù)是有限的,為了延長(zhǎng)其使用時(shí)間,閃存器件采用了均衡寫入技術(shù)(也稱為平均寫入技術(shù))對(duì)塊的擦寫次數(shù)進(jìn)行管理,即保證每個(gè)塊的寫入次數(shù)盡量一致,使塊的使用壽命達(dá)到極限,所有在寫入時(shí)會(huì)呈現(xiàn)出隨機(jī)寫入的情況,所以在寫入數(shù)據(jù)(頁(yè))的時(shí)候會(huì)寫入相應(yīng)的管理字節(jié),包含當(dāng)前數(shù)據(jù)的ID和ECC校驗(yàn)碼以及用于區(qū)分管理區(qū)和數(shù)據(jù)區(qū)的標(biāo)志。
目前市面上的技術(shù)只能夠?qū)㈤W存芯片內(nèi)的數(shù)據(jù)進(jìn)行讀出,因?yàn)闆](méi)有通過(guò)主控映射,所以讀出來(lái)的原始數(shù)據(jù)包含管理字節(jié)且數(shù)據(jù)是錯(cuò)亂的,當(dāng)然,如果數(shù)據(jù)的大小小于或等于頁(yè)的大小,如果主控沒(méi)有對(duì)其進(jìn)行加密,那么這個(gè)數(shù)據(jù)將會(huì)是正確的。
綜上所述,目前市面上現(xiàn)有的技術(shù)還不能對(duì)手機(jī)閃存芯片手機(jī)進(jìn)行數(shù)據(jù)重組。因此,本發(fā)明提出一種手機(jī)閃存芯片數(shù)據(jù)重組的方法。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明針對(duì)現(xiàn)有技術(shù)的不足,提供了一種手機(jī)閃存芯片數(shù)據(jù)重組的方法,能夠有效的解決手機(jī)閃存芯片無(wú)法有效進(jìn)行數(shù)據(jù)讀取和恢復(fù)的問(wèn)題。
為解決以上問(wèn)題,本發(fā)明采用的技術(shù)方案如下:一種手機(jī)閃存芯片數(shù)據(jù)重組的方法,包括以下步驟:
S1將閃存芯片從故障手機(jī)主板上取下,讀取閃存芯片內(nèi)的原始數(shù)據(jù);
S2通過(guò)解密算法對(duì)數(shù)據(jù)字節(jié)進(jìn)行解密得到未加密的數(shù)據(jù);
S3通過(guò)重組算法對(duì)解密后的數(shù)據(jù)進(jìn)行重組得到正常有序的數(shù)據(jù)。
作為優(yōu)選,所述S1包括以下步驟:
S11在芯片啟用信號(hào)CE有效的情況下,首先啟用指令鎖存信號(hào)CLE,此時(shí)讀取信號(hào)RE有效,芯片處于就緒狀態(tài),且R/B信號(hào)置高電平,表示準(zhǔn)備就緒;同時(shí)向I/O端口發(fā)送讀取操作指令,告訴芯片現(xiàn)在要進(jìn)行的是讀操作;
S12此時(shí)芯片啟用信號(hào)CE有效,地址啟用信號(hào)ALE有效,寫入信號(hào)WE保持有效,連續(xù)發(fā)送4個(gè)地址周期,地址寄存器接收到地址值后,R/B信號(hào)將維持“忙”一段時(shí)間,此后R/B變?yōu)榫途w狀態(tài);
S13每次讀有效信號(hào)RE置低有效時(shí),將會(huì)輸出一組數(shù)據(jù),如此往復(fù)直到所有數(shù)據(jù)輸出完畢。
作為優(yōu)選,所述S2包括以下步驟:
S21.能否在數(shù)據(jù)中搜索到關(guān)鍵字,沒(méi)有加密直接結(jié)束,否則跳至S22;
S22.通過(guò)現(xiàn)有的加密算法對(duì)關(guān)鍵字進(jìn)行加密;
S23.通過(guò)搜索加密后的關(guān)鍵字判斷加密方式是否正確,若能搜索到關(guān)鍵字則為正確,搜索不到則更換加密方式;
S24.找到正確的加密算法后,逆向?qū)λ袛?shù)據(jù)解密。
作為優(yōu)選,所述S3包括以下步驟:
S31根據(jù)頁(yè)大小,通過(guò)搜索連續(xù)的區(qū)域判斷出頁(yè)結(jié)構(gòu);
S32從頁(yè)結(jié)構(gòu)中取出管理字節(jié),并分析出標(biāo)記和ID;
S33根據(jù)連續(xù)的區(qū)域判斷頁(yè)之間的混合關(guān)系,即塊內(nèi)交換還是塊間交換;
S34如果存在數(shù)據(jù)混合,找到兩個(gè)連續(xù)的頁(yè),頁(yè)號(hào)相減乘2得到塊大小,如果不存在數(shù)據(jù)混合,則使用默認(rèn)塊大小128;
S35根據(jù)以上的結(jié)果按照ID劃分區(qū)段組合數(shù)據(jù)。
作為優(yōu)選,S21所述的關(guān)鍵字的取值為0x2E、0x2E、0x20、0x2020202020、 0102000002020000或者0108020803080408。
作為優(yōu)選,S22所述的現(xiàn)有的加密算法為反轉(zhuǎn)位操作、單字節(jié)交換操作、雙字節(jié)交換操作或者四字節(jié)交換操作。
與現(xiàn)有技術(shù)相比本發(fā)明的優(yōu)點(diǎn)在于:
本發(fā)明采用了先對(duì)提取出的數(shù)據(jù)進(jìn)行解密,再對(duì)數(shù)據(jù)進(jìn)行重組的方法;還提出了新的重組方法,使用管理區(qū)的ID對(duì)數(shù)據(jù)區(qū)進(jìn)行重組,達(dá)到模擬主控的功能,使得數(shù)據(jù)的讀取結(jié)果變得正常有序。
附圖說(shuō)明
圖1為本發(fā)明實(shí)施例的主流程圖;
圖2為本發(fā)明實(shí)施例步驟001的流程圖;
圖3為本發(fā)明實(shí)施例步驟002的流程圖;
圖4為本發(fā)明實(shí)施例步驟003的流程圖;
圖5為本發(fā)明判斷頁(yè)結(jié)構(gòu)示意圖;
圖6為本發(fā)明判斷標(biāo)記和ID示意圖;
圖7為本發(fā)明判斷混合類型示意圖。
具體實(shí)施方式
為使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下參照附圖并舉實(shí)施例,對(duì)本發(fā)明做進(jìn)一步詳細(xì)說(shuō)明。
如圖1所示,一種手機(jī)閃存芯片數(shù)據(jù)重組的方法,包括以下步驟:
001將閃存芯片從故障手機(jī)主板上取下,讀取閃存芯片內(nèi)的原始數(shù)據(jù);
002通過(guò)解密算法對(duì)數(shù)據(jù)字節(jié)進(jìn)行解密得到未加密的數(shù)據(jù);
003通過(guò)重組算法對(duì)解密后的數(shù)據(jù)進(jìn)行重組得到正常有序的數(shù)據(jù)。
如圖2所示,所述001包括以下步驟:
101在芯片啟用信號(hào)CE有效的情況下,首先啟用指令鎖存信號(hào)CLE,此時(shí)讀取信號(hào)RE有效,芯片處于就緒狀態(tài),且R/B信號(hào)置高電平,表示準(zhǔn)備就緒;同時(shí)向I/O端口發(fā)送讀取操作指令(0x00或0x01),告訴芯片現(xiàn)在要進(jìn)行的是讀操作;
CLE:指令鎖存端,用于激活指令到指令寄存器的路徑,并在WE上升沿且CLE為高電平時(shí)將指令鎖存。
CE:片選端,用于控制設(shè)備的選擇。當(dāng)設(shè)備忙時(shí),CE為高電平而被忽略,此時(shí)設(shè)備不能回到備用狀態(tài)。
RE:用于控制數(shù)據(jù)的連續(xù)輸出,并將數(shù)據(jù)送到I/O總線。只有在RE的下降沿時(shí),輸出數(shù)據(jù)才有效,同時(shí)它還可以對(duì)內(nèi)部數(shù)據(jù)地址進(jìn)行累加。
R/B:就緒/忙輸出,R/B的輸出能夠顯示設(shè)備的操作狀態(tài)。R/B處于低電平時(shí),表示有編程、擦除或隨機(jī)讀操作正在進(jìn)行。操作完成后,R/B會(huì)自動(dòng)返回高電平。由于該端是漏極開(kāi)路輸出,所以即使當(dāng)芯片沒(méi)有被選中或輸出被禁止時(shí),它也不會(huì)處于高阻態(tài)。
102此時(shí)芯片啟用信號(hào)CE有效,地址啟用信號(hào)ALE有效,寫入信號(hào)WE保持有效,連續(xù)發(fā)送4個(gè)地址周期,地址寄存器接收到地址值后,R/B信號(hào)將維持“忙”一段時(shí)間,此后R/B變?yōu)榫途w狀態(tài);
103每次讀有效信號(hào)RE置低有效時(shí),將會(huì)輸出一組數(shù)據(jù),如此往復(fù)直到所有數(shù)據(jù)輸出完畢。
CLE、CE、RE、R/B、ALE、WE等均為針腳名稱。
如圖3所示,所述002包括以下步驟:
a.根據(jù)能否找到關(guān)鍵字來(lái)判斷數(shù)據(jù)是否加密,沒(méi)有加密則直接結(jié)束,加密則轉(zhuǎn)到202。
b.通過(guò)現(xiàn)有的加密算法對(duì)關(guān)鍵字加密;
c.通過(guò)搜索加密后的關(guān)鍵字判斷加密方式是否正確,若能搜索到關(guān)鍵字則為正確,搜索不到則更換加密方式;
d.找到正確的加密算法后,逆向?qū)λ袛?shù)據(jù)解密。
實(shí)施例1:
201根據(jù)能否找到關(guān)鍵字來(lái)判斷數(shù)據(jù)是否加密,沒(méi)有加密則直接結(jié)束,加密則依次轉(zhuǎn)到202至205,關(guān)鍵字n可能的取值為0x2E,0x2E,0x20,0x2020202020、0102000002020000、0108020803080408等;
202對(duì)關(guān)鍵字n進(jìn)行反轉(zhuǎn)位操作后轉(zhuǎn)到201;
203對(duì)關(guān)鍵字n進(jìn)行單字節(jié)交換操作后轉(zhuǎn)到201;
204對(duì)關(guān)鍵字n進(jìn)行雙字節(jié)交換操作后轉(zhuǎn)到201;
205對(duì)關(guān)鍵字n進(jìn)行四字節(jié)交換操作后轉(zhuǎn)到201。
206通過(guò)搜索找到關(guān)鍵字的方式,對(duì)整個(gè)原始數(shù)據(jù)進(jìn)行以上操作。
其中,使用的加密算法均為現(xiàn)有技術(shù),具體含義介紹如下:
1.反轉(zhuǎn)位:對(duì)數(shù)據(jù)做‘非’運(yùn)算操作。
2.字節(jié)交換:對(duì)字節(jié)的儲(chǔ)存位置做交換
如:55AA---AA55是雙字節(jié)交換,5555AAAA---AAAA5555是四字節(jié)交換。
如圖4所示,所述003包括以下步驟:
301根據(jù)頁(yè)大小,通過(guò)搜索連續(xù)的區(qū)域(簇鏈表)判斷出頁(yè)結(jié)構(gòu);
302從頁(yè)結(jié)構(gòu)中取出管理字節(jié),并分析出標(biāo)記和ID;
303根據(jù)連續(xù)的區(qū)域判斷頁(yè)之間的混合關(guān)系,即塊內(nèi)交換還是塊間交換;
304如果存在數(shù)據(jù)混合,找到兩個(gè)連續(xù)的頁(yè),頁(yè)號(hào)相減乘2得到塊大小,如果不存在數(shù)據(jù)混合,則使用默認(rèn)塊大小128;
305根據(jù)以上的結(jié)果組合數(shù)據(jù)。
實(shí)施例2:
301根據(jù)頁(yè)大小,通過(guò)搜索連續(xù)的區(qū)域(簇鏈表)判斷出頁(yè)結(jié)構(gòu)。
如圖5所示,圖中0x00000280和0x00000281本是連續(xù)的,所以中間出現(xiàn)的16字節(jié)為管理字節(jié),512字節(jié)的用戶區(qū)數(shù)據(jù)和16字節(jié)的管理字節(jié)依次出現(xiàn),由于該芯片的頁(yè)大小為2112字節(jié),所有頁(yè)結(jié)構(gòu)為512+16+512+16+512+16+512+16。
302從頁(yè)結(jié)構(gòu)中取出管理字節(jié),并區(qū)分出標(biāo)記和ID,標(biāo)記是在所有頁(yè)的管理字節(jié)中都不會(huì)變的值,如0Xffff,0x0000,ID則是規(guī)律變化的。
如圖6所示,從左邊數(shù)起,第一個(gè)和第三個(gè)框表示ID,第二個(gè)和第四個(gè)框表示標(biāo)記。
303根據(jù)連續(xù)的區(qū)域判斷頁(yè)之間的混合關(guān)系,包括塊內(nèi)不交換,塊間不交換;塊內(nèi)頁(yè)交換,塊間不交換;塊內(nèi)頁(yè)交換,塊間頁(yè)交換;塊內(nèi)不交換,塊間頁(yè)交換四個(gè)選項(xiàng)。
如圖7所示,表示存在塊內(nèi)頁(yè)交換。
304如果存在數(shù)據(jù)混合,找到兩個(gè)連續(xù)的頁(yè),頁(yè)號(hào)相減乘2得到塊大小,如果不存在數(shù)據(jù)混合,則使用默認(rèn)塊大小128。
305根據(jù)以上的結(jié)果按照ID劃分區(qū)段組合數(shù)據(jù)。
本領(lǐng)域的普通技術(shù)人員將會(huì)意識(shí)到,這里所述的實(shí)施例是為了幫助讀者理解本發(fā)明的實(shí)施方法,應(yīng)被理解為本發(fā)明的保護(hù)范圍并不局限于這樣的特別陳述和實(shí)施例。本領(lǐng)域的普通技術(shù)人員可以根據(jù)本發(fā)明公開(kāi)的這些技術(shù)啟示做出各種不脫離本發(fā)明實(shí)質(zhì)的其它各種具體變形和組合,這些變形和組合仍然在本發(fā)明的保護(hù)范圍內(nèi)。