固態(tài)硬盤(pán)Trim后的數(shù)據(jù)恢復(fù)
數(shù)據(jù)恢復(fù)技術(shù)是取證環(huán)節(jié)中是不可或缺的,或者說(shuō)非常重要的一項(xiàng)手段。取證人員往往能從嫌疑人已刪除的數(shù)據(jù)中發(fā)現(xiàn)一些重要線索,甚至可以影響案件的偵破方向。那么對(duì)于傳統(tǒng)的機(jī)械硬盤(pán)而言,一般情況下在不對(duì)硬盤(pán)進(jìn)行二次破壞或者數(shù)據(jù)覆蓋的情況下,大多數(shù)情況下是可以幾乎完整的恢復(fù)出刪除的數(shù)據(jù)。
比如NTFS文件系統(tǒng)下刪除某個(gè)文件后,對(duì)應(yīng)文件的MFT項(xiàng)只是更改了表示文件狀態(tài)的字節(jié)。比如由01改為00表示文件被刪除,那么文件的數(shù)據(jù)區(qū)并未發(fā)生變化;再比如FAT32文件系統(tǒng)下文件被刪除后對(duì)應(yīng)FDT首字節(jié)被E5標(biāo)記,但數(shù)據(jù)區(qū)域同樣不會(huì)有任何變化。
那么固態(tài)硬盤(pán)無(wú)論其讀寫(xiě)速度、硬盤(pán)體積以及工作條件都要優(yōu)于機(jī)械硬盤(pán),而且目前的價(jià)格還有硬盤(pán)容量都被我們普通用戶(hù)所能接受。所以在我們當(dāng)下乃至未來(lái)的取證工作中,固態(tài)硬盤(pán)都將是數(shù)據(jù)存儲(chǔ)的主要存儲(chǔ)介質(zhì)。但是在取證工作一個(gè)很棘手的問(wèn)題,那就是固態(tài)硬盤(pán)的數(shù)據(jù)恢復(fù)幾乎是不可能實(shí)現(xiàn)的。即便掌握了文件系統(tǒng)級(jí)的數(shù)據(jù)恢復(fù)技術(shù),非常了解NTFS文件系統(tǒng)、非常了解FAT32文件系統(tǒng)了,甚至都可以通過(guò)手工的方式在底層進(jìn)行數(shù)據(jù)提取。但是面對(duì)固態(tài)硬盤(pán)的刪除恢復(fù)同樣沒(méi)有辦法。所以,我們一般都認(rèn)為固態(tài)硬盤(pán)數(shù)據(jù)刪除相當(dāng)于底層數(shù)據(jù)清零,絕無(wú)數(shù)據(jù)恢復(fù)的可能。
當(dāng)然說(shuō)得并不嚴(yán)謹(jǐn),應(yīng)該說(shuō)開(kāi)啟了Trim后的固態(tài)硬盤(pán),數(shù)據(jù)恢復(fù)幾乎不可能實(shí)現(xiàn)。既然開(kāi)啟了Trim就不能做數(shù)據(jù)恢復(fù)了,那如果關(guān)閉Trim再繼續(xù)使用硬盤(pán)是不是就不用擔(dān)心數(shù)據(jù)恢復(fù)的問(wèn)題呢?答案是肯定的,但是對(duì)于固態(tài)硬盤(pán)而言為了增加硬盤(pán)的使用壽命,建議還是開(kāi)啟Trim機(jī)制。
什么是Trim機(jī)制
·TRIM 是一個(gè)專(zhuān)門(mén)為SSD設(shè)計(jì)的指令。當(dāng)在操作系統(tǒng)下刪除某個(gè)文件后會(huì)發(fā)送Trim指令給SSD,使其數(shù)據(jù)無(wú)效,在做垃圾回收的時(shí)無(wú)需做數(shù)據(jù)搬運(yùn)。
·最直觀可見(jiàn)的現(xiàn)象是,刪除的文件無(wú)法通過(guò)常規(guī)的手段恢復(fù)。
·有益于延長(zhǎng)Flash的損耗,以達(dá)到增加SSD使用壽命的目的。
那么對(duì)于取證工作而言呢,最直觀的表現(xiàn)就是,想要恢復(fù)固態(tài)硬盤(pán)中丟失的數(shù)據(jù)往往是無(wú)法實(shí)現(xiàn)的。經(jīng)過(guò)掃描發(fā)現(xiàn)文件的文件名,時(shí)間戳等信息都在,但是跳轉(zhuǎn)到數(shù)據(jù)區(qū)后發(fā)現(xiàn)全是零,或者甚至連文件名都掃描不出來(lái)。
雖然Trim給我們帶來(lái)了很多的困擾和阻礙,但數(shù)據(jù)安全存儲(chǔ)安全才是硬盤(pán)最該考慮的問(wèn)題。為了延長(zhǎng)硬盤(pán)的壽命所以Trim機(jī)制就沒(méi)發(fā)明出來(lái)了。
Trim數(shù)據(jù)恢復(fù)技術(shù)的適用范圍
那么是不是所有的固體硬盤(pán)經(jīng)過(guò)Trim后之后都可以做數(shù)據(jù)恢復(fù)呢?理論上來(lái)說(shuō),是這樣的。但是從實(shí)際操作角度而言,并非所有都支持。目前可按照硬盤(pán)的主控芯片作為判定標(biāo)準(zhǔn)的。我們都知道無(wú)論是傳統(tǒng)的機(jī)械硬盤(pán)還是固態(tài)硬盤(pán),都需要有主控芯片,主控芯片相當(dāng)于我們計(jì)算機(jī)的CPU,硬盤(pán)的一切工作和任務(wù)都需要主控芯片下達(dá)指令。
(SSD結(jié)構(gòu))
SSD主控是一個(gè)技術(shù)深度和市場(chǎng)廣度都很大的芯片產(chǎn)品,SSD發(fā)展初期主控芯片廠商較少,原因是涉及和生產(chǎn)一款新的芯片的要求和門(mén)檻較高。如今由于SSD的蓬勃發(fā)展和普及,配套的主控廠商看到了發(fā)展的前景和利潤(rùn),紛紛切入這個(gè)產(chǎn)品,圖中幾款常見(jiàn)的硬盤(pán)主控。
(常見(jiàn)SSD主控品牌)
·Marrvell是全球排名第一的HDD和SSD主控芯片供應(yīng)商,從2007年開(kāi)始在SSD主控領(lǐng)域布局,2008年推出第一代SATA SSD產(chǎn)品。Marrvel憑借著HDD領(lǐng)域二十多年的經(jīng)驗(yàn)積累,其主控技術(shù)均領(lǐng)先于一般供應(yīng)商。
·三星的主控基本上都是三星自己的SSD在使用,三星硬盤(pán)的品質(zhì)也得到了市場(chǎng)和消費(fèi)者的驗(yàn)證,確實(shí)十分優(yōu)秀這都要得益于三星自家的主控算法。
·當(dāng)然還有一些大廠都擁有自己的主控產(chǎn)品,比如東芝、因特爾等。
同樣國(guó)產(chǎn)主控在中低端市場(chǎng)的占比也是非??捎^的,常見(jiàn)的臺(tái)系主控有慧榮、群聯(lián),當(dāng)然還有智微、硅格等等。
慧榮可以說(shuō)是全球閃存控制芯片的技術(shù)領(lǐng)導(dǎo)者和先驅(qū)者,從2000年開(kāi)始就提供flash存儲(chǔ)的解決方案;群聯(lián)也是2000年成立,從提供全球首顆單芯片U盤(pán)控制芯片起家。目前這兩家國(guó)產(chǎn)芯片在中低端SSD中市場(chǎng)占比量是非常大的,我們?nèi)∽C和恢復(fù)過(guò)程中,ATA協(xié)議的 SSD大多采用這兩種主控。
那么對(duì)于采用慧榮和群聯(lián)主控方案的固態(tài)硬盤(pán)Trim后是可以恢復(fù)或者說(shuō)最容易恢復(fù)。那么對(duì)于其他品牌的主控或者其他品牌的硬盤(pán)理論上來(lái)說(shuō)也是支持?jǐn)?shù)據(jù)恢復(fù)的,只是操作起來(lái)十分困難。需要借助更為專(zhuān)業(yè)的工具,比如ACE的PC3000 Flash或者FE等工具。嘗試將flash存儲(chǔ)顆粒取下來(lái),然后進(jìn)行讀取以及重組工作。但比如因特爾的一些主控,寫(xiě)入數(shù)據(jù)都是加密的,或者有些主控我們不清楚數(shù)據(jù)是如何存儲(chǔ)的,所以即便直接通過(guò)讀取flash顆粒將數(shù)據(jù)讀出來(lái),但也無(wú)法進(jìn)行重組。所以說(shuō)恢復(fù)難度比較大。
圖中所展示的是目前所能支持的主控型號(hào),比如慧榮的SM2258XT、2246、2259等;以及群聯(lián)的PS3111/3110等。如果在取證工作中遇到采用這種主控方案的固態(tài)硬盤(pán),那么這塊硬盤(pán)即便經(jīng)過(guò)了Trim,但刪除和丟失的數(shù)據(jù)也是有幾率可以恢復(fù)的。
(支持的主控)
Trim機(jī)制的支持情況什么情況下會(huì)默認(rèn)開(kāi)啟Trim,或者說(shuō)哪些情況下Trim會(huì)被開(kāi)啟呢?有三個(gè)條件:
·第一,操作系統(tǒng)需要支持,對(duì)于Windows系統(tǒng)而言,Win7及以上版本的操作系統(tǒng)都可以支持Trim;
·第二,就是硬盤(pán)的主控需要支持Trim,在早期生產(chǎn)的固態(tài)硬盤(pán),其主控有不支持Trim的情況。但目前我們能遇到的幾乎所有硬盤(pán)都支持Trim;
·第三,文件系統(tǒng),Windows系統(tǒng)下NTFS是可以支持Trim的,而比如exfat是不支持的。
(支持情況)
判斷操作系統(tǒng)是否開(kāi)啟Trim·Windows系統(tǒng)
可以通過(guò)命令來(lái)查詢(xún)當(dāng)前Trim的開(kāi)啟狀態(tài),當(dāng)返回值為0時(shí)表示當(dāng)前系統(tǒng)已開(kāi)啟了Trim支持,而如果返回是1的話則表示未啟用Trim機(jī)制。也可以使用指令來(lái)控制Trim機(jī)制的開(kāi)啟與關(guān)閉。
指令:fsutil behavior query disabledeletenotify
(Trim狀態(tài)查詢(xún))
禁用Trim:fsutil behavior set disabledeletenotify 1
·macOS
同樣在macOS下可以點(diǎn)擊,關(guān)于本機(jī)-概覽-系統(tǒng)報(bào)告-NVMExpress這里查看Trim的狀態(tài),同樣可以利用相應(yīng)的指令來(lái)開(kāi)啟或關(guān)閉Trim。
(macOS下查看Trim狀態(tài))
Trim后的數(shù)據(jù)恢復(fù)原理
首先要清楚固態(tài)硬盤(pán)和機(jī)械硬盤(pán)是不同的,在《硬盤(pán)初檢在取證工作中的意義》中介紹了機(jī)械硬盤(pán)的相關(guān)知識(shí)。其中有提到,機(jī)械硬盤(pán)寫(xiě)入數(shù)據(jù)其實(shí)就是磁頭磁化盤(pán)片的過(guò)程,比如原來(lái)扇區(qū)中是0想要寫(xiě)入1,那么就改變磁極方向從新寫(xiě)入1就可以了;同理原來(lái)扇區(qū)里面是1想寫(xiě)0,那就直接寫(xiě)0就可以了。這是機(jī)械硬盤(pán)的數(shù)據(jù)寫(xiě)入。也就是機(jī)械硬盤(pán)寫(xiě)入數(shù)據(jù),不必考慮原本扇區(qū)內(nèi)是否有數(shù)據(jù),以及其中的數(shù)據(jù)是什么直接覆蓋寫(xiě)入就可以。但SSD不行,固態(tài)硬盤(pán)并不支持?jǐn)?shù)據(jù)覆蓋寫(xiě)入。
(機(jī)械硬盤(pán)數(shù)據(jù)寫(xiě)入)
圖中所示,固態(tài)硬盤(pán)底層沒(méi)有扇區(qū)磁道的概念,而是一個(gè)浮動(dòng)?xùn)牛ㄒ粋€(gè)cell),為了理解就暫且稱(chēng)之為一個(gè)扇區(qū)。
左側(cè)圖示,是寫(xiě)入數(shù)據(jù)的過(guò)程,可以看到當(dāng)在控制柵極通電,則電子會(huì)從下面襯底穿過(guò)隧穿層進(jìn)入到浮動(dòng)?xùn)牛辉倏从覀?cè)擦除過(guò)程也就是放電,在下面襯底加電使原本在浮動(dòng)?xùn)胖械碾娮恿鞒鰜?lái)。
(固態(tài)讀寫(xiě)數(shù)據(jù)原理)
所以通過(guò)這張圖可知,固態(tài)硬盤(pán)是通過(guò)浮動(dòng)?xùn)爬锩嬗袩o(wú)電子來(lái)表示0和1的。所以這就是為什么固態(tài)硬盤(pán)是不支持?jǐn)?shù)據(jù)覆蓋寫(xiě)入,是因?yàn)樗强扛淖兤渲杏袥](méi)有電子或者說(shuō)一個(gè)浮動(dòng)?xùn)艓д?fù)電來(lái)表示數(shù)據(jù)狀態(tài)的。
所以固態(tài)硬盤(pán)里有個(gè)概念,叫寫(xiě)之前擦除(erase before overwrite)。想要寫(xiě)入數(shù)據(jù)就要先將浮動(dòng)?xùn)胚M(jìn)行放電,也就是所謂的擦除使其中沒(méi)有電子,也就是浮動(dòng)?xùn)艓д姡蝗缓笕绻胍獙?xiě)0進(jìn)去的話,就讓電子進(jìn)入浮動(dòng)?xùn)攀蛊鋷ж?fù)電。
那么在進(jìn)行擦除時(shí),硬盤(pán)不會(huì)單獨(dú)去操作一個(gè)浮動(dòng)?xùn)诺模且詁lock為單位進(jìn)行放電的,一個(gè)block由多個(gè)cell組成。那么可以思考一下,如果說(shuō)對(duì)整個(gè)block放電,那其中的數(shù)據(jù)不是就沒(méi)了嗎?那肯定不行的!這就要涉及GC垃圾回收的知識(shí)了。
文件的寫(xiě)入與刪除
圖中左側(cè)假如想要向硬盤(pán)中寫(xiě)入ABC這三個(gè)文件,那么其實(shí)對(duì)于操作系統(tǒng)而言呢,或者說(shuō)對(duì)于文件系統(tǒng)而言,這些不過(guò)是一個(gè)個(gè)的數(shù)據(jù)塊,將文件分成若干個(gè)塊之后被硬盤(pán)也是以數(shù)據(jù)塊的形式存儲(chǔ)在底層。
(文件的寫(xiě)入與刪除)
那么假設(shè)此時(shí)將C文件進(jìn)行刪除,那么對(duì)應(yīng)操作系統(tǒng)也會(huì)在文件系統(tǒng)層進(jìn)行數(shù)據(jù)塊的定位,然后進(jìn)行標(biāo)記刪除,同樣硬盤(pán)底層也會(huì)做同樣的操作。
對(duì)于機(jī)械硬盤(pán)而言,我們知道只是在文件系統(tǒng)層做了相應(yīng)的刪除標(biāo)記,而文件的數(shù)據(jù)區(qū)未發(fā)生任何改變;而對(duì)于固態(tài)硬盤(pán),此時(shí)操作系統(tǒng)則會(huì)向硬盤(pán)發(fā)送Trim指令,告訴硬盤(pán)這些數(shù)據(jù)塊是無(wú)效的,是垃圾數(shù)據(jù)。待空閑時(shí)將垃圾進(jìn)行回收。為什么做垃圾回收呢?前面說(shuō)過(guò),SSD寫(xiě)入前必須要擦除block,垃圾回收的過(guò)程就是在閑時(shí)將無(wú)效的block進(jìn)行放電擦除以備下次寫(xiě)入時(shí)使用。
(文件被刪除)
此時(shí)如果再次寫(xiě)入一個(gè)新的文件D,那么硬盤(pán)底層是如何處理的,首先是當(dāng)硬盤(pán)沒(méi)有開(kāi)啟Trim機(jī)制。
如果沒(méi)有開(kāi)啟Trim,操作系統(tǒng)層刪除了文件,文件系統(tǒng)層只是做了標(biāo)記。但SSD并不會(huì)認(rèn)為這些塊是垃圾,所以只會(huì)在垃圾數(shù)據(jù)其后繼續(xù)寫(xiě)數(shù)據(jù),同樣在做數(shù)據(jù)搬運(yùn)時(shí),還會(huì)搬運(yùn)這些已刪除的垃圾數(shù)據(jù),這無(wú)形中就增加了大量的工作量。
(未開(kāi)啟Trim時(shí)寫(xiě)入數(shù)據(jù))
接下來(lái)是當(dāng)硬盤(pán)開(kāi)啟了Trim,同樣是寫(xiě)入文件D的過(guò)程,圖中白色表示free塊,空白塊,操作系統(tǒng)層刪除文件之后發(fā)送Trim告知SSD,所以此時(shí)SSD就知道這些塊是垃圾,那么就不做數(shù)據(jù)搬運(yùn)了,然后把這些塊視為垃圾進(jìn)行塊回收其實(shí)數(shù)據(jù)搬運(yùn)是GC垃圾回收環(huán)節(jié)的一項(xiàng)非常重要的操作。
(開(kāi)啟Trim時(shí)寫(xiě)入數(shù)據(jù))
什么是垃圾回收(GC)
·GC(Garbage Collection,垃圾回收)的縮寫(xiě),是固態(tài)硬盤(pán)(SSD)的一項(xiàng)內(nèi)部存儲(chǔ)機(jī)制,其設(shè)計(jì)目的是為了增加SSD的性能和使用壽命。
·垃圾回收的目的是回收空閑數(shù)據(jù)塊,以便在SSD需要寫(xiě)入數(shù)據(jù)時(shí)直接寫(xiě)入空閑塊中,確保硬盤(pán)可以高效運(yùn)行并保持良好性能。
另一個(gè)前面一直提到的概念就是數(shù)據(jù)搬運(yùn),接下來(lái)來(lái)通過(guò)幾張圖了解一下,什么是數(shù)據(jù)搬運(yùn)?為什么要數(shù)據(jù)搬運(yùn)?其目的是什么?
數(shù)據(jù)搬運(yùn)是為了垃圾回收可以順利進(jìn)行,圖中block1和2是兩個(gè)數(shù)據(jù)塊,其中D1-D10表示有效數(shù)據(jù),其他灰色表示無(wú)效數(shù)據(jù)。當(dāng)硬盤(pán)沒(méi)有開(kāi)啟Trim時(shí),由于操作系統(tǒng)沒(méi)有發(fā)送Trim指令給SSD,所以SSD并不知道哪些數(shù)據(jù)是無(wú)效的,那么在做GC數(shù)據(jù)搬運(yùn)時(shí),就默認(rèn)所有的塊都是有效數(shù)據(jù),都要做數(shù)據(jù)搬運(yùn)。
(未開(kāi)啟Trim時(shí)的GC)
搬運(yùn)完畢后,就可以將block1和2進(jìn)行放電擦除,使其變?yōu)榭瞻讐K。
(放電擦除后的block)
接下來(lái)還是剛才的搬運(yùn)過(guò)程,假設(shè)當(dāng)開(kāi)啟了Trim后,操作系統(tǒng)會(huì)發(fā)送Trim指令給硬盤(pán),并告知哪些數(shù)據(jù)被刪除了,哪些數(shù)據(jù)是無(wú)效的。那么SSD就會(huì)進(jìn)行標(biāo)記,并認(rèn)定其無(wú)效化,那么在做數(shù)據(jù)搬運(yùn)時(shí),只需要將有效數(shù)據(jù)D1-D10搬運(yùn)到新的位置即可,而那些被Trim標(biāo)記的無(wú)效數(shù)據(jù)就不再進(jìn)行搬運(yùn)了。
(開(kāi)啟Trim時(shí)的GC)
然后呢,還是將原block1和2進(jìn)行擦除放電,以備接下來(lái)做數(shù)據(jù)寫(xiě)入時(shí)使用。但是要清楚,做硬盤(pán)做GC以及擦除是在硬盤(pán)閑時(shí)自主完成的,并非Trim標(biāo)記后立刻擦除放電的。
(放電擦除后的block)
到這里相信大家就清楚了為什么SSD必須要開(kāi)啟Trim了,雖然說(shuō)Trim的開(kāi)啟會(huì)影響取證工作,但之所以SSD具有Trim機(jī)制,才可以保障數(shù)據(jù)的安全和硬盤(pán)的使用壽命。
最后總結(jié)一下:
首先因?yàn)镾SD的設(shè)計(jì)是由一個(gè)個(gè)的浮動(dòng)?xùn)沤M成的,那么是沒(méi)有辦法像機(jī)械硬盤(pán)一樣直接通過(guò)覆蓋的方式寫(xiě)入數(shù)據(jù),只能通過(guò)浮動(dòng)?xùn)诺膸щ姞顟B(tài)表示0和1。所以這也就導(dǎo)致SSD在寫(xiě)入數(shù)據(jù)之前必須要先擦除放電block,叫寫(xiě)之前擦除。而為了節(jié)省時(shí)間,SSD不可能每次都要等到每次寫(xiě)數(shù)據(jù)的時(shí)候再擦除,而是在操作系統(tǒng)或者文件系統(tǒng)刪除數(shù)據(jù)時(shí)發(fā)送Trim指令給硬盤(pán),硬盤(pán)收到指令后對(duì)無(wú)效數(shù)據(jù)進(jìn)行標(biāo)記。那么在對(duì)block進(jìn)行擦除前,就要先把有效數(shù)據(jù)搬運(yùn)走,而那些被Trim標(biāo)記的無(wú)效數(shù)據(jù)就不做搬運(yùn)了,直接放電擦除即可。
實(shí) 驗(yàn)
首先是SSD經(jīng)過(guò)Trim后,直接對(duì)其進(jìn)行數(shù)據(jù)恢復(fù),就是日常取證工作通常面對(duì)的一個(gè)情況。嘗試在底層嘗試尋找文件的MFT項(xiàng)。
(搜索)
可以看到在211093768扇區(qū)找到一個(gè)MFT項(xiàng),這里可以看到文件名是“AXIOM痕跡...”,這個(gè)文件名上一條刪除線標(biāo)識(shí)這個(gè)文件已經(jīng)被刪除。
(被刪除的MFT)
接下來(lái)看這個(gè)文件的屬性,可以看到10、30、80屬性都是正常的,而偏移地址16-17,表示文件狀態(tài)的字節(jié)被清零了,比如正常沒(méi)刪除的這里可能是0100,刪除了就是0000。
(刪除標(biāo)記)
然后根據(jù)80屬性的run list,壓縮字節(jié)32進(jìn)行數(shù)據(jù)區(qū)的跳轉(zhuǎn),可以看到這個(gè)文件跳轉(zhuǎn)之后的數(shù)據(jù)區(qū)全為00。
(run list)
(數(shù)據(jù)區(qū)全為00)
也就是說(shuō)雖然這個(gè)文件的屬性頭、屬性體都正常,但偏移到數(shù)據(jù)區(qū)發(fā)現(xiàn)文件底層都是00。
再借助R-Studio比較直觀的看下文件的狀態(tài),文件名前面紅色xx表示文件被刪除,查看底層發(fā)現(xiàn)確實(shí)全為00。這就是日常取證工作中最常遇到的情況,對(duì)固態(tài)硬盤(pán)進(jìn)行掃描,可能能掃描到文件MFT項(xiàng),也就是能掃描到文件名之類(lèi)的,但是恢復(fù)出來(lái)發(fā)現(xiàn)文件沒(méi)有內(nèi)容,底層全是00。
(RTT掃描結(jié)果)
那么這是為什么呢?是因?yàn)楫?dāng)刪除某些數(shù)據(jù)后,操作系統(tǒng)會(huì)向硬盤(pán)發(fā)送Trim指令,而硬盤(pán)收到指令后會(huì)在硬盤(pán)底層對(duì)無(wú)效數(shù)據(jù)進(jìn)行標(biāo)記。
進(jìn)行標(biāo)記后,當(dāng)再次試圖去訪問(wèn)這些無(wú)效數(shù)據(jù)時(shí),其實(shí)在硬盤(pán)主控層面就已經(jīng)阻斷了與硬盤(pán)存儲(chǔ)之間的聯(lián)系。既然已經(jīng)被標(biāo)記了,那么主控就會(huì)認(rèn)為這部分無(wú)效數(shù)據(jù)已經(jīng)被GC了,所以根本就沒(méi)有去flash存儲(chǔ)顆粒層面的地址上去讀取數(shù)據(jù),而是在主控層面上直接給用戶(hù)返回00。這就是為什么我們恢復(fù)固態(tài)硬盤(pán)數(shù)據(jù),文件名正常,但恢復(fù)出的數(shù)據(jù)全是00的原因了,其實(shí)都是主控芯片的行為在控制的。
(返回00的根本原因)
再看用了大招后的實(shí)驗(yàn)效果
圖中所示是一個(gè)文件的MFT項(xiàng),同樣10、30、80屬性都是正常的,偏移地址16-17兩個(gè)字節(jié)為0000表示文件被刪除。
(刪除標(biāo)記)
接下來(lái)通過(guò)80屬性的run list以及通過(guò)DBR獲取到的每簇扇區(qū)數(shù),也就可以跳轉(zhuǎn)到文件的數(shù)據(jù)區(qū)。
(每簇扇區(qū)數(shù))
(run list)
進(jìn)行跳轉(zhuǎn)后,這里應(yīng)該就看到非常明顯的pdf標(biāo)志頭,表明數(shù)據(jù)區(qū)是有數(shù)據(jù)的并且是有效數(shù)據(jù)。
(數(shù)據(jù)區(qū)有效數(shù)據(jù))
放到rtt中看的比較直觀。文件名前面紅色xx表示文件被刪除了,查看文件底層發(fā)現(xiàn)數(shù)據(jù)是正常的。
(rtt中查看文件狀態(tài))
總結(jié)一下,也就是說(shuō)當(dāng)硬盤(pán)經(jīng)過(guò)了Trim后,通過(guò)常規(guī)鏡像方式進(jìn)行數(shù)據(jù)恢復(fù)發(fā)現(xiàn)數(shù)據(jù)恢復(fù)幾乎是不可能的。而通過(guò)特殊的方式是完全有可能恢復(fù)出那些丟失的數(shù)據(jù)的。
恢 復(fù) 步 驟
我們需要對(duì)硬盤(pán)進(jìn)行短接,短接的目的呢,是為了讓硬盤(pán)進(jìn)入到ROM安全模式,這里需要注意的是,需要先短接再對(duì)硬盤(pán)進(jìn)行通電,硬盤(pán)呢可以直接通過(guò)數(shù)據(jù)線接口與主板連接或者通過(guò)USB轉(zhuǎn)接板都可以。
那么短接點(diǎn)也是十分容易識(shí)別的,大部分硬盤(pán)都會(huì)打印在電路板上會(huì)寫(xiě)著ROMxx字樣;另外兩個(gè)短接點(diǎn),一個(gè)是圓的一個(gè)是方的,大多數(shù)是這樣。
(短接進(jìn)入ROM安全模式)
在成功進(jìn)入到安全模式后,可以轉(zhuǎn)到操作系統(tǒng)下的磁盤(pán)管理界面,可以看到最下面 1G未初始化狀態(tài)的磁盤(pán),這就表示成功進(jìn)入了安全模式,可以進(jìn)一步接下來(lái)的操作了。
(成功進(jìn)入安全模式)
然后運(yùn)行軟件,此時(shí)軟件會(huì)提示ROM Code Mode Device,然后根據(jù)Flash iD信息選擇合適的固件再接下來(lái)。
(運(yùn)行軟件識(shí)別到硬盤(pán))
點(diǎn)擊右側(cè)Datarecovery按鈕后,會(huì)提示我們首先要加載MPISP,然后再加載ROMDebug。
(加載固件)
成功加載之后軟件會(huì)自動(dòng)的回讀硬盤(pán)鏡像。最后可以直接對(duì)回讀的鏡像進(jìn)行常規(guī)的數(shù)據(jù)恢復(fù)就可以對(duì)固態(tài)硬盤(pán)中丟失的數(shù)據(jù)嘗試進(jìn)行數(shù)據(jù)恢復(fù)了。
(鏡像回讀)
那么是什么原理可以進(jìn)行的鏡像回讀呢?前文提到之所以硬盤(pán)反饋回來(lái)的是00,是主控芯片的行為,它認(rèn)為這部分?jǐn)?shù)據(jù)已經(jīng)被Trim標(biāo)記了也就自然會(huì)被GC,而實(shí)際中GC是閑時(shí)才會(huì)進(jìn)行的,并不是Trim后立刻執(zhí)行的,所以真實(shí)的情況是數(shù)據(jù)有可能沒(méi)有被立刻垃圾回收。
那么通過(guò)短接的方式讓硬盤(pán)進(jìn)入ROM安全模式,就好比計(jì)算機(jī)啟動(dòng)到BIOS。ROM安全模式下只有主控的淹膜ROM工作,讓其發(fā)送鏡像回讀指令便可在安全模式下直接訪問(wèn)flash顆粒,此時(shí)便可回讀出完整的dump物理鏡像。最后再對(duì)dump鏡像進(jìn)行重組和分析便可成功恢復(fù)出Trim之后丟失的那部分?jǐn)?shù)據(jù)了。
下一篇:大華T70移動(dòng)固態(tài)硬盤(pán),手機(jī)電腦都兼容