本發(fā)明屬于NAND FLASH存儲(chǔ)設(shè)備技術(shù)領(lǐng)域,特別涉及一種NAND FLASH存儲(chǔ)芯片數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)分析方法。
背景技術(shù):
基于NAND FLASH的存儲(chǔ)設(shè)備作為新一代的半導(dǎo)體存儲(chǔ)器,廣泛應(yīng)用于電子產(chǎn)品領(lǐng)域。傳統(tǒng)硬盤等塊設(shè)備的讀寫單位為扇區(qū),NAND FLASH存儲(chǔ)設(shè)備的讀寫特性則不同。通常NAND FLASH存儲(chǔ)設(shè)備包含至少一個(gè)NAND FLASH芯片,每塊芯片包含至少一個(gè)晶圓,每個(gè)晶圓由若干塊組成,每個(gè)塊包含若干頁(yè)。NAND擦除的操作單位為塊,寫的操作單位為頁(yè),且無法對(duì)同一塊內(nèi)存位置重復(fù)執(zhí)行寫操作,必須先擦除,才可執(zhí)行寫操作。為避免頻繁執(zhí)行“擦除-寫入”操作影響存儲(chǔ)器的性能與壽命,該類設(shè)備大多設(shè)計(jì)了從物理單元到數(shù)據(jù)扇區(qū)的動(dòng)態(tài)映射機(jī)制。由于數(shù)據(jù)不是順序存放,當(dāng)主控芯片損壞或其它原因?qū)е掠成錂C(jī)制失效時(shí),即使NAND FLASH的內(nèi)容被成功讀取,也很難得到用戶數(shù)據(jù)。
為將物理單元映射為數(shù)據(jù)扇區(qū),NAND FLASH的頁(yè)被分為數(shù)據(jù)區(qū)(DA)與管理區(qū)(SA),數(shù)據(jù)區(qū)即包含若干個(gè)數(shù)據(jù)扇區(qū),大小為512的倍數(shù),用于存儲(chǔ)數(shù)據(jù)的有效內(nèi)容。管理區(qū)則提供了能夠?qū)⒂脩魯?shù)據(jù)按照邏輯順序存放到原來位置的參數(shù),即邏輯塊號(hào)和邏輯頁(yè)號(hào),除此之外管理區(qū)內(nèi)還包括標(biāo)識(shí)位、校驗(yàn)位等其他數(shù)據(jù)(EXT),其中管理區(qū)中一直保持不變的比特位為標(biāo)識(shí)位,為確保數(shù)據(jù)完整性而進(jìn)行錯(cuò)誤檢測(cè)和糾錯(cuò)的比特位為校驗(yàn)位。不同主控芯片設(shè)計(jì)的NAND FLASH頁(yè)結(jié)構(gòu)也各有不同,例如大小為2112的頁(yè)可以設(shè)計(jì)為4*(512DA+16SA),也可以是[512DA+512DA]+16SA+2*(512DA+16SA)+16EXT。為提高數(shù)據(jù)讀寫效率,NAND FLASH還可以對(duì)某兩個(gè)數(shù)據(jù)塊進(jìn)行同時(shí)讀寫,在存儲(chǔ)上表現(xiàn)為數(shù)據(jù)交錯(cuò)存儲(chǔ)。為減少管理區(qū)內(nèi)邏輯塊號(hào)的編址位,某些存儲(chǔ)設(shè)備還對(duì)芯片數(shù)據(jù)進(jìn)行了平均分段。
由于NAND FLASH頁(yè)尺寸不同,設(shè)計(jì)者的軟件方案各異,現(xiàn)有技術(shù)中尚無成熟通用的NAND FLASH存儲(chǔ)芯片數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)分析方法。如何將芯片的物理鏡像根據(jù)邏輯塊號(hào)、邏輯頁(yè)號(hào)進(jìn)行重組,進(jìn)而轉(zhuǎn)換為塊設(shè)備的數(shù)據(jù)扇區(qū)存儲(chǔ)格式,成為該類設(shè)備數(shù)據(jù)恢復(fù)與取證的難題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是解決在脫離FLASH存儲(chǔ)器控制電路直接讀取并重組Flash芯片的數(shù)據(jù)的問題,提出了一種NAND FLASH存儲(chǔ)芯片數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)分析方法,具體包括以下步驟:
100確定芯片的物理塊大小和物理頁(yè)大小,提取NAND FLASH芯片的物理鏡像并以只讀方式打開鏡像文件A;
200有效塊判斷:逐字節(jié)搜索鏡像文件,統(tǒng)計(jì)連續(xù)多個(gè)字節(jié)取值等于0x00或0xFF的個(gè)數(shù)n,并記錄這些連續(xù)數(shù)據(jù)所在的物理塊號(hào),若n大于門限值min時(shí),所述連續(xù)數(shù)據(jù)所在的物理塊為無效塊,否則為有效塊;
300頁(yè)結(jié)構(gòu)分析:在存在前述連續(xù)數(shù)據(jù)的有效塊中,選取前述連續(xù)數(shù)據(jù)所在的物理頁(yè)進(jìn)行統(tǒng)計(jì),查找第一個(gè)連續(xù)512字節(jié)的數(shù)據(jù)片段即為首個(gè)數(shù)據(jù)扇區(qū),接下來依次查找其余數(shù)據(jù)扇區(qū),數(shù)據(jù)扇區(qū)以外的數(shù)據(jù)片段為管理區(qū);
400邏輯塊號(hào)、邏輯頁(yè)號(hào)比特位判斷:對(duì)比某個(gè)有效塊中某物理頁(yè)內(nèi)部的多個(gè)管理區(qū)片段,找到保持不變的比特位{a},對(duì)比某個(gè)有效塊中各物理頁(yè)的一個(gè)管理區(qū)片段,找到保持不變的比特位,對(duì)比整個(gè)芯片中各物理頁(yè)的一個(gè)管理區(qū)片段,找到保持不變的比特位{c},比特位{a}除去比特位后得到邏輯頁(yè)號(hào)所在比特位,比特位除去比特位{c}后得到邏輯塊號(hào)所在比特位;
500數(shù)據(jù)交錯(cuò)分析與數(shù)據(jù)合并:
若芯片只包含一個(gè)晶圓,則不存在數(shù)據(jù)交錯(cuò);
若芯片包含兩個(gè)以上晶圓,則存在數(shù)據(jù)交錯(cuò)的可能性,確定芯片內(nèi)能體現(xiàn)數(shù)據(jù)連續(xù)性的數(shù)據(jù)體,若該數(shù)據(jù)體的兩個(gè)連續(xù)片段分別處于同一晶圓內(nèi)兩相鄰物理塊內(nèi)相同序號(hào)的物理頁(yè),則該晶圓的奇數(shù)序號(hào)物理塊與偶數(shù)序號(hào)物理塊需要按頁(yè)進(jìn)行數(shù)據(jù)合并;若該數(shù)據(jù)體的兩個(gè)連續(xù)片段分別處于不同晶圓內(nèi)相同序號(hào)物理塊內(nèi)相同序號(hào)的物理頁(yè),則該芯片不同晶圓的相同序號(hào)物理塊需要按頁(yè)進(jìn)行數(shù)據(jù)合并;若該數(shù)據(jù)體的兩個(gè)連續(xù)片段分別處于不同晶圓內(nèi)相同序號(hào)物理塊的末序號(hào)物理頁(yè)和首序號(hào)物理頁(yè),則該芯片不同晶圓的相同序號(hào)物理塊需要按塊進(jìn)行數(shù)據(jù)合并;
其余情況不進(jìn)行數(shù)據(jù)合并,最終得到中間文件B;
600數(shù)據(jù)分段:提取芯片某晶圓各奇數(shù)序號(hào)物理塊的邏輯塊號(hào),統(tǒng)計(jì)各邏輯塊號(hào)的重復(fù)情況,
若出現(xiàn)次數(shù)N≥2,則將所述中間文件平均分成N個(gè)子中間文件C;若N=1或管理區(qū)內(nèi)無邏輯塊號(hào),則無需進(jìn)行數(shù)據(jù)分段;
700數(shù)據(jù)重組:各有效塊的數(shù)據(jù)按邏輯塊號(hào)順序組合,對(duì)每個(gè)有效塊內(nèi)的數(shù)據(jù),按邏輯頁(yè)號(hào)順序組合,若管理區(qū)中無邏輯頁(yè)號(hào),則有效塊內(nèi)數(shù)據(jù)按物理頁(yè)順序組合,若執(zhí)行了數(shù)據(jù)分段,則將數(shù)據(jù)重組后的N個(gè)子中間文件C順序拼接得到結(jié)果文件D1;若管理區(qū)中無邏輯塊號(hào)與邏輯頁(yè)號(hào),則無需進(jìn)行數(shù)據(jù)重組,將所述鏡像文件去除無效塊順序拼接得到結(jié)果文件D2。
800刪除管理區(qū):將結(jié)果文件D1(或者D2)中每個(gè)頁(yè)的管理區(qū)數(shù)據(jù)全部刪除,得到邏輯鏡像文件E。
優(yōu)選地,上述門限值min的取值為物理頁(yè)大小。
優(yōu)選地,上述能體現(xiàn)數(shù)據(jù)連續(xù)性的數(shù)據(jù)體,若為FAT文件系統(tǒng),該數(shù)據(jù)體為FAT表,若為NTFS文件系統(tǒng),該數(shù)據(jù)體為MFT。
有益效果:
采用本發(fā)明方法用于智能手機(jī)、U盤等設(shè)備中的NAND FLASH存儲(chǔ)芯片在脫離主控芯片情況下,直接分析芯片物理鏡像中的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),從而利用現(xiàn)有的針對(duì)硬盤等塊設(shè)備的文件恢復(fù)軟件,實(shí)現(xiàn)該類芯片的數(shù)據(jù)恢復(fù)與取證。本發(fā)明方法支持對(duì)各種頁(yè)尺寸、頁(yè)結(jié)構(gòu)的NAND FLASH芯片進(jìn)行分析,支持對(duì)數(shù)據(jù)交錯(cuò)、數(shù)據(jù)分段等存儲(chǔ)結(jié)構(gòu)的分析,通用性與實(shí)用性較強(qiáng)。
附圖說明
圖1本發(fā)明所述方法的綜合流程圖
圖2將原鏡像文件轉(zhuǎn)化成磁盤模式前后對(duì)比截圖
圖3任一有效塊內(nèi),提取512字節(jié)連續(xù)數(shù)據(jù)片段的頁(yè)結(jié)構(gòu)分析截圖
圖4塊004B5中第0010頁(yè)內(nèi)不同物理扇區(qū)管理區(qū)統(tǒng)計(jì)
圖5塊00DC9內(nèi)不同物理頁(yè)首個(gè)管理區(qū)統(tǒng)計(jì)
圖6不同塊內(nèi)首頁(yè)內(nèi)首個(gè)管理區(qū)統(tǒng)計(jì)
圖7相鄰兩個(gè)物理塊之間FAT表內(nèi)數(shù)據(jù)變化圖
圖8 A-0晶圓塊004首個(gè)物理頁(yè)末尾數(shù)據(jù)與A-1晶圓相同物理塊首個(gè)物理頁(yè)首個(gè)數(shù)據(jù)對(duì)比圖
圖9塊2F4在A-0晶圓內(nèi)塊號(hào)重復(fù)情況統(tǒng)計(jì)圖
具體實(shí)施方式
下面結(jié)合附圖詳細(xì)說明本發(fā)明的具體實(shí)施方式。
本實(shí)施方式實(shí)現(xiàn)了一種NAND FLASH存儲(chǔ)芯片數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)分析方法,如圖1所示,為詳細(xì)說明本發(fā)明,下面以主控芯片型號(hào)為AU6986、存儲(chǔ)芯片型號(hào)為29F64G08CAMD2的NAND FLASH存儲(chǔ)設(shè)備為例,具體說明本實(shí)施方式的實(shí)施過程。已知該NAND FLASH存儲(chǔ)設(shè)備包含一個(gè)存儲(chǔ)芯片,該芯片內(nèi)的數(shù)據(jù)以文件系統(tǒng)FAT32形式存儲(chǔ)。分析該芯片數(shù)據(jù)結(jié)構(gòu)的具體實(shí)施過程如下:
提取并打開鏡像文件:通過NAND FLASH讀取設(shè)備提取該NAND FLASH存儲(chǔ)芯片的物理鏡像,該存儲(chǔ)芯片內(nèi)部包括兩個(gè)晶圓,因此得到的物理鏡像是兩個(gè)文件A-0與A-1。根據(jù)存儲(chǔ)芯片的型號(hào)信息直接查看數(shù)據(jù)手冊(cè),獲知該芯片的物理參數(shù)為:一個(gè)物理頁(yè)大小為4320字節(jié),一個(gè)物理塊包含128個(gè)頁(yè)。使用十六進(jìn)制編輯器以只讀方式打開鏡像文件A-0、A-1,為方便觀察分析首先將鏡像文件A-0、A-1轉(zhuǎn)化成磁盤形式,設(shè)置一個(gè)扇區(qū)大小為一個(gè)物理頁(yè)的大小(4320字節(jié)),轉(zhuǎn)化前后對(duì)比結(jié)果如圖2所示。
有效塊判斷:設(shè)門限值min取值為物理頁(yè)大小4320字節(jié)。全盤逐字節(jié)搜索鏡像文件A-0、A-1,例如鏡像文件A-0中,在第3個(gè)頁(yè)內(nèi)偏移15104字節(jié)處起連續(xù)出現(xiàn)0xFF,統(tǒng)計(jì)該連續(xù)出現(xiàn)0xFF的個(gè)數(shù)n為1090800個(gè),這個(gè)數(shù)值遠(yuǎn)大于門限值min,判斷這段連續(xù)數(shù)據(jù)所在的物理塊是無效塊,繼續(xù)進(jìn)行全盤搜索,找到并記錄所有無效塊的物理塊號(hào),剩余物理塊為有效塊。
頁(yè)結(jié)構(gòu)分析:在存在所述連續(xù)數(shù)據(jù)的有效塊中,選取所述連續(xù)數(shù)據(jù)所在的物理頁(yè)進(jìn)行統(tǒng)計(jì),本實(shí)施例中,在鏡像文件A-0第32641個(gè)頁(yè)處,如圖3所示,找到第一個(gè)連續(xù)512字節(jié)的數(shù)據(jù)片段,即為首個(gè)數(shù)據(jù)扇區(qū),接下來依次查找其余數(shù)據(jù)扇區(qū),數(shù)據(jù)扇區(qū)以外的數(shù)據(jù)片段為管理區(qū),共找到8個(gè)連續(xù)512字節(jié)數(shù)據(jù)為0x00的數(shù)據(jù)片段,在任意兩個(gè)連續(xù)512個(gè)全0字節(jié)之間的數(shù)據(jù)部分為管理區(qū),可看出,8個(gè)數(shù)據(jù)扇區(qū)對(duì)應(yīng)的管理區(qū)大小都為24字節(jié)。即頁(yè)結(jié)構(gòu)為8*(512DA+24SA)+32EXT。
邏輯塊號(hào)、邏輯頁(yè)號(hào)比特位判斷:在同一個(gè)塊內(nèi)任意一個(gè)頁(yè)中包含的管理區(qū)內(nèi),存在數(shù)值不變的比特位{a},比特位{a}=邏輯塊號(hào)+邏輯頁(yè)號(hào)+標(biāo)識(shí)位,本實(shí)施例中,鏡像文件A-0任取一有效塊(例如物理塊號(hào)為0x004B5),在該塊中任 取一個(gè)物理頁(yè)(例如第0x10個(gè)頁(yè)),分析該物理頁(yè)內(nèi)所有管理區(qū)片段,如圖4所示,多取幾個(gè)頁(yè)進(jìn)行綜合統(tǒng)計(jì),可得出每個(gè)管理區(qū)內(nèi)數(shù)值保持不變的比特位{a}為D0D1...D31;在同一個(gè)塊內(nèi)不同頁(yè)中任取一條管理區(qū)統(tǒng)計(jì),存在數(shù)值不變的比特位,比特位=邏輯塊號(hào)+標(biāo)識(shí)位,本實(shí)施例中,任取一有效塊(例如物理塊號(hào)為0xDC9),統(tǒng)計(jì)這個(gè)物理塊內(nèi)不同物理頁(yè)的第一個(gè)管理區(qū)內(nèi)容,如圖5所示發(fā)現(xiàn)依舊是前32位數(shù)值保持不變,多取幾個(gè)塊進(jìn)行綜合對(duì)比,可得出數(shù)值保持不變的比特位也為D0D1...D31;在不同塊中任取不同的頁(yè)進(jìn)行管理區(qū)統(tǒng)計(jì),存在數(shù)值不變的比特位{c},比特位{c}=標(biāo)識(shí)位,在有效塊中統(tǒng)計(jì)不同物理塊第一個(gè)頁(yè)的第一個(gè)管理區(qū)內(nèi)容,如圖6,綜合分析得出保持不變的比特位{c}為D0...D11與D24...D31兩段。
比特位{a}除去比特位后得到邏輯頁(yè)號(hào)所在比特位,比特位除去比特位{c}后得到邏輯塊號(hào)所在比特位。在本例中比特位{a}與比特位位置一致,故其沒有邏輯頁(yè)號(hào),邏輯頁(yè)內(nèi)數(shù)據(jù)按順序存儲(chǔ);比特位除去比特位{c}后得到比特位D12...D23為邏輯塊號(hào)所在比特位,而其余保持不變的比特位D0...D11與D24...D31為標(biāo)識(shí)位。
數(shù)據(jù)交錯(cuò)分析與數(shù)據(jù)合并:若芯片只包含一個(gè)晶圓,則不存在數(shù)據(jù)交錯(cuò),本實(shí)例包含2個(gè)晶圓,則存在數(shù)據(jù)交錯(cuò)的可能性。若芯片存儲(chǔ)的數(shù)據(jù)格式是FAT文件系統(tǒng),能夠體現(xiàn)該數(shù)據(jù)連續(xù)性的數(shù)據(jù)體是FAT表,F(xiàn)AT表用以描述文件簇的分配狀態(tài)及標(biāo)明文件或目錄的下一簇的簇號(hào),如果一個(gè)文件在設(shè)備中連續(xù)存儲(chǔ),則FAT表數(shù)據(jù)體現(xiàn)為簇號(hào)連續(xù)遞增。若芯片存儲(chǔ)的數(shù)據(jù)格式是NTFS文件系統(tǒng),能夠體現(xiàn)該數(shù)據(jù)連續(xù)性的數(shù)據(jù)體是MFT,MFT通常為連續(xù)存儲(chǔ),MFT項(xiàng)序號(hào)表現(xiàn)為連續(xù)遞增。本實(shí)施例中芯片存儲(chǔ)的數(shù)據(jù)格式是FAT32文件系統(tǒng),F(xiàn)AT32文件系統(tǒng)中FAT表開頭固定為“F8FFFF0F”,每個(gè)簇號(hào)用32位數(shù)據(jù)表示,例如“03000000”表示簇號(hào)為0x00000003。
如果同一晶圓內(nèi)相鄰物理塊存在按頁(yè)交錯(cuò)的情況,則相互交錯(cuò)的奇數(shù)塊和偶數(shù)塊的邏輯塊號(hào)應(yīng)相同,在本實(shí)施例中,F(xiàn)AT表起始位置處于物理鏡像A-0中物理塊號(hào)為0x2FE的塊的第1個(gè)物理頁(yè)中,如有交錯(cuò)則與物理塊號(hào)為0x2FF的塊進(jìn)行交錯(cuò),如圖7,分析管理區(qū)數(shù)據(jù),這兩個(gè)物理塊的邏輯塊號(hào)分別為0x004與0x2F4,并不相同,故排除在同一晶圓內(nèi)相鄰物理塊按頁(yè)交錯(cuò)的情況。
物理鏡像A-0中物理塊號(hào)為0x2FE的塊的第1個(gè)物理頁(yè)里,末個(gè)數(shù)據(jù)扇區(qū)的 結(jié)尾數(shù)據(jù)為簇號(hào)0x00000400,物理鏡像A-1中相同序號(hào)物理塊的第1個(gè)物理頁(yè)里,首個(gè)數(shù)據(jù)扇區(qū)的起始數(shù)據(jù)為簇號(hào)0x00000401,如圖8,二者內(nèi)容剛好相連續(xù),故本實(shí)施例中不同晶圓間相同序號(hào)物理塊數(shù)據(jù)以頁(yè)為單位相互交錯(cuò),而沒有以塊為單位進(jìn)行交錯(cuò)。所以將該芯片兩個(gè)晶圓的鏡像文件A-0與A-1的相同序號(hào)物理塊按頁(yè)進(jìn)行數(shù)據(jù)合并,得到中間文件B。
數(shù)據(jù)分段:提取芯片某晶圓任一奇數(shù)序號(hào)塊的邏輯塊號(hào),本實(shí)施例中為0x2F4,統(tǒng)計(jì)該邏輯塊號(hào)的重復(fù)情況,如圖9所示發(fā)現(xiàn)塊號(hào)為2F4的邏輯塊在一個(gè)晶圓中出現(xiàn)了8次。利用相同的方法提取其他奇數(shù)序號(hào)塊的邏輯塊號(hào),并統(tǒng)計(jì)該邏輯塊號(hào)的重復(fù)情況,綜合分析可知重復(fù)次數(shù)N=8,所以該實(shí)例中數(shù)據(jù)分成了8段。將前述得到的中間文件B平均分成8個(gè)子中間文件C。
數(shù)據(jù)重組:對(duì)前面生成的每個(gè)中間文件C,剔除無效塊后,各有效塊數(shù)據(jù)按邏輯塊號(hào)順序組合。對(duì)每個(gè)塊內(nèi)的數(shù)據(jù),本實(shí)施例中管理區(qū)內(nèi)無邏輯頁(yè)號(hào),故數(shù)據(jù)按物理頁(yè)順序組合,將數(shù)據(jù)重組后的8個(gè)子中間文件C順序拼接,即得到結(jié)果文件D。
刪除管理區(qū):將結(jié)果文件D中每個(gè)頁(yè)的管理區(qū)數(shù)據(jù)全部刪除,即得到以扇區(qū)為單位的邏輯鏡像文件E。
至此,NAND FLASH存儲(chǔ)芯片的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)分析完畢,最終邏輯鏡像文件存儲(chǔ)結(jié)構(gòu)與硬盤等塊設(shè)備的存儲(chǔ)結(jié)構(gòu)相同,使用普通硬盤恢復(fù)軟件即可完成對(duì)該NAND FLASH結(jié)果文件的數(shù)據(jù)恢復(fù)與取證。
以上所述,僅是本發(fā)明的優(yōu)選實(shí)施例,并非對(duì)本發(fā)明作任何形式上的限制,凡是利用本發(fā)明的設(shè)計(jì)思路對(duì)以上實(shí)施例所作的任何簡(jiǎn)單修改與等同變化,均仍屬本發(fā)明技術(shù)方案的保護(hù)范圍。