淺談數(shù)據(jù)恢復(fù)原理

數(shù)據(jù)恢復(fù)是一門比較有用的技術(shù),尤其是當(dāng)硬盤蠢壹、U盤嗓违、手機(jī)存儲(chǔ)卡等發(fā)生數(shù)據(jù)丟失時(shí),如何找回丟失的文件和數(shù)據(jù)則成為最關(guān)鍵的問(wèn)題图贸。能否找回?cái)?shù)據(jù)不僅和存儲(chǔ)介質(zhì)有關(guān)蹂季,而且和操作系統(tǒng)以及介質(zhì)所在的文件系統(tǒng)有很大的關(guān)系,基本上疏日,分區(qū)表及文件系統(tǒng)(File System乏盐,簡(jiǎn)稱FS)是決定數(shù)據(jù)能否找回的關(guān)鍵,因?yàn)樗鼪Q定了數(shù)據(jù)存儲(chǔ)的邏輯結(jié)構(gòu)制恍,一旦FS被破壞父能,即便物理上數(shù)據(jù)依然存在,可因?yàn)閿?shù)據(jù)已經(jīng)失去完整性和連續(xù)性净神,所以找回?cái)?shù)據(jù)就變得相當(dāng)困難何吝。分區(qū)表則是決定整個(gè)磁盤的布局溉委,從分區(qū)表可以得知分區(qū)數(shù)量、主/擴(kuò)展分區(qū)及邏輯分區(qū)的位置與大小等爱榕,所以分區(qū)表丟失對(duì)數(shù)據(jù)的破壞也是異常嚴(yán)重的瓣喊。本文僅談?wù)撐募到y(tǒng)的結(jié)構(gòu)。

? ? Windows上常見(jiàn)的文件系統(tǒng)有FAT16/32黔酥,NTFS藻三,exFAT等,F(xiàn)AT目前基本只有U盤上使用跪者,硬盤上一般都用NTFS棵帽,因?yàn)镕AT32下單個(gè)文件最大不能超4G而且文件信息有限,NTFS則不受這個(gè)限制渣玲,而且加入了安全描述符(Security Descriptor)逗概,也就是我們可以為文件或目錄設(shè)置不同的權(quán)限。但是FAT32在U盤下有時(shí)還是很方便忘衍,當(dāng)然也可以格式化成NTFS逾苫,不過(guò)格成NTFS會(huì)遇到一種特殊的情況,比如到了某臺(tái)不受你控制的電腦枚钓,你可能因?yàn)楫?dāng)前權(quán)限原因而無(wú)法刪除U盤上的文件铅搓,問(wèn)題就變得麻煩了。除此之外搀捷,也可格成exFAT狸吞,exFAT介于FAT和NTFS兩者之間,exFAT下文件大小可以超過(guò)4G指煎,所以比FAT32好用蹋偏。雖然FAT32和NTFS的存儲(chǔ)數(shù)據(jù)方式不同,但某些原理還是相似的至壤,所以威始,了解了FAT,也就更容易了解NTFS像街。下面以FAT32為例簡(jiǎn)單談一下如何實(shí)現(xiàn)FAT下數(shù)據(jù)的讀取和恢復(fù)黎棠。

? ? FAT12/16由DBR(保留區(qū))、FAT表镰绎、根目錄和數(shù)據(jù)區(qū)組成脓斩,F(xiàn)AT32則沒(méi)有根目錄,根目錄位于數(shù)據(jù)區(qū)和文件放在一起畴栖。目錄(Directory)和文件夾是一樣的東西随静,只是不同的叫法,以下統(tǒng)稱目錄。DBR扇區(qū)中記錄了分區(qū)基本信息燎猛,如每扇區(qū)字節(jié)數(shù)恋捆、每簇扇區(qū)數(shù)、保留扇區(qū)數(shù)等等重绷。DBR開(kāi)頭三個(gè)字節(jié)是匯編指令沸停,類似于EB XX XX,意思是跳轉(zhuǎn)到引導(dǎo)代碼處昭卓。如果將首字節(jié)0xEB改成其它數(shù)字比如00愤钾,分區(qū)便無(wú)法訪問(wèn),雙擊分區(qū)會(huì)提示未格式化什么的候醒,不過(guò)這只是當(dāng)前電腦的操作系統(tǒng)不識(shí)別能颁,如果把U盤或TF卡放到其它系統(tǒng)中去,比如放到隨身播放器中還是能夠聽(tīng)音樂(lè)的火焰,因?yàn)椴シ牌飨到y(tǒng)不一定會(huì)檢查這個(gè)字節(jié)的合法性劲装。下面說(shuō)一下簇胧沫,簇是文件系統(tǒng)的存儲(chǔ)單位昌简,由若干扇區(qū)組成,一個(gè)文件若存放了一個(gè)簇的前半部分绒怨,那簇的后半部分就不能再存放其它文件纯赎,也就是說(shuō),一個(gè)簇不能同時(shí)存兩個(gè)文件南蹂。比如假設(shè)一個(gè)簇大小是8192字節(jié)犬金,有個(gè)文件大小是1字節(jié),那么它會(huì)占據(jù)某個(gè)簇的第1個(gè)字節(jié)六剥,實(shí)際上它所占的空間是8192字節(jié)晚顷,剩余8191字節(jié)就被浪費(fèi)了,所以理論上簇是越小越好疗疟,但也不能太小该默,否則尋址不方便。下面看FAT表的結(jié)構(gòu)策彤,F(xiàn)AT表中栓袖,每4個(gè)字節(jié)也就是32位為一項(xiàng),每一項(xiàng)中記錄著簇的編號(hào)店诗,前兩項(xiàng)不記錄簇號(hào)裹刮,第三項(xiàng)在偏移0x8處,為第一個(gè)簇庞瘸,也就是2號(hào)簇捧弃,后面是3號(hào),依次編號(hào)擦囊,每個(gè)FAT項(xiàng)的內(nèi)容是下一個(gè)簇的編號(hào)塔橡。如果內(nèi)容是FF FF FF 0F梅割,則說(shuō)明該簇沒(méi)有下一下關(guān)聯(lián)的簇,是獨(dú)立簇葛家,獨(dú)立簇存放的是不超過(guò)一個(gè)簇大小的文件內(nèi)容户辞,就這樣,每個(gè)簇都指向下一個(gè)簇癞谒,如此不停地跳來(lái)跳去底燎,最終就能找到一個(gè)文件的所有內(nèi)容,當(dāng)跳到FF FF FF 0F弹砚,說(shuō)明這是文件內(nèi)容的最后一個(gè)簇双仍。文件內(nèi)容的位置在FAT表中記錄,那文件的名字和大小等信息保存在哪里呢桌吃?文件的大小等信息其實(shí)是另一個(gè)目錄的內(nèi)容朱沃。根目錄中首先保存著根目錄下所有文件和目錄(以下不說(shuō)明,文件將包括目錄茅诱,目錄也是文件)的信息逗物,每一項(xiàng)信息大小是32個(gè)字節(jié),其中有文件短名瑟俭、長(zhǎng)名翎卓、刪除標(biāo)記、屬性摆寄、創(chuàng)建時(shí)間失暴、大小、起始簇號(hào)等信息微饥,一項(xiàng)信息開(kāi)頭為0逗扒,說(shuō)明已經(jīng)到頭了,系統(tǒng)會(huì)認(rèn)為下面沒(méi)有子目錄和文件了欠橘,表示已經(jīng)搜索完該目錄內(nèi)的所有文件矩肩。如果將根目錄中第一個(gè)字節(jié)改為0,那該分區(qū)下就成了空白简软,將看不到任何文件蛮拔,其實(shí)這不完全等于隱藏,因?yàn)槿绻到y(tǒng)再創(chuàng)建文件時(shí)會(huì)尋找目錄項(xiàng)開(kāi)頭為0的項(xiàng)痹升,然后替換它建炫。如果一目錄項(xiàng)是文件(通過(guò)屬性判斷),項(xiàng)中保存著文件內(nèi)容所在的第一個(gè)簇疼蛾,如果是目錄肛跌,則項(xiàng)中保存著目錄的內(nèi)容,目錄的內(nèi)容正是目錄內(nèi)文件和子目錄信息,這些信息又是一系列目錄項(xiàng)衍慎,甚至占多個(gè)簇(如果目錄內(nèi)文件過(guò)多)转唉,這樣一層一層就能遍歷目錄內(nèi)所有文件。

? ? 創(chuàng)建文件時(shí)稳捆,首先在FAT中為該文件分配簇赠法,0大小文件不分配。然后在根目錄一層層找到它的父目錄乔夯,然后在父目錄中為它分配目錄項(xiàng)砖织,記錄文件起始簇、文件時(shí)間等信息末荐。如果文件名超過(guò)8.3或名字含有特殊字符或中文侧纯,就為它建立長(zhǎng)文件名目錄項(xiàng),短名按一定規(guī)則重新命名甲脏。刪除文件時(shí)眶熬,一是清除文件FAT表中的簇號(hào),將簇標(biāo)記為沒(méi)有使用块请,以便讓給其它文件娜氏,二是目錄項(xiàng)開(kāi)頭字節(jié)被改成0xE5,表示已刪除负乡,整個(gè)過(guò)程文件內(nèi)容沒(méi)有做任何改變牍白。若只改刪除標(biāo)記文件也會(huì)消失脊凰,但簇未釋放抖棘,文件暫時(shí)被隱藏,但不代表系統(tǒng)以后不會(huì)清理它狸涌,模擬這個(gè)過(guò)程我們可以實(shí)現(xiàn)強(qiáng)刪任意文件切省,不管它是否有保護(hù)或正在運(yùn)行。一個(gè)文件被刪除帕胆,目錄項(xiàng)并沒(méi)有被立即清空朝捆,里面仍記錄著文件內(nèi)容的首簇,所以我們能找到文件內(nèi)容開(kāi)始一少部分字節(jié)懒豹,假設(shè)1個(gè)簇大小為8192字節(jié)芙盘,如果文件大小小于1個(gè)簇,比如512字節(jié)脸秽,那么只要簇沒(méi)有被立即占用儒老,我們就能完全恢復(fù)該文件,如果文件為16384字節(jié)记餐,就要占兩個(gè)簇驮樊,第一個(gè)簇讀完,這時(shí)我們到FAT中查看該簇記錄的下一個(gè)簇,因?yàn)槲募粍h囚衔,文件所有簇被清空挖腰,改為00 00 00 00,所以就不能再繼續(xù)讀取了练湿,恢復(fù)就變得困難多了猴仑,至少不能按常規(guī)方法恢復(fù),除非文件是連續(xù)存儲(chǔ)的肥哎,這樣我們按簇順序讀取宁脊,就能把它恢復(fù)。因而贤姆,在FAT下恢復(fù)文件具有一定概率榆苞。用過(guò)數(shù)據(jù)恢復(fù)軟件的人可能會(huì)遇到這種情況,有時(shí)已經(jīng)看到一個(gè)文件的名字霞捡,恢復(fù)出來(lái)卻是亂碼坐漏,出現(xiàn)這種情況正是前面說(shuō)的原因。其實(shí)碧信,看到0還不算可怕赊琳,如果看到非0,那才悲劇砰碴,說(shuō)明已經(jīng)被另一個(gè)文件替換了躏筏,這樣就連首簇內(nèi)容也無(wú)法恢復(fù)了。從可恢復(fù)性上看呈枉,NTFS和FAT32就不同趁尼,NTFS下如果文件簇沒(méi)有被覆蓋,理論上文件百分之百可以被恢復(fù)猖辫,或者說(shuō)酥泞,相對(duì)而言NTFS文件系統(tǒng)可恢復(fù)性更高。下面說(shuō)隱藏啃憎。FAT32下能否簡(jiǎn)單隱藏一個(gè)文件呢芝囤?要隱藏一個(gè)文件,可以通過(guò)改屬性標(biāo)志實(shí)現(xiàn)辛萍,但不是改變我們通常所說(shuō)的Hidden(隱藏)屬性悯姊,而是指改卷標(biāo)屬性。設(shè)置普通的隱藏屬性后贩毕,文件還會(huì)在資源管理器中看到悯许,但設(shè)置了卷標(biāo)屬性,文件無(wú)法再通過(guò)文件管理器看到耳幢,不過(guò)一旦改了驅(qū)動(dòng)器卷標(biāo)名岸晦,文件目錄項(xiàng)會(huì)丟失欧啤,所以最好只對(duì)目錄進(jìn)行隱藏∑羯希可以將一個(gè)目錄增加卷標(biāo)屬性邢隧,它就看不到了冈在,從而實(shí)現(xiàn)了底層隱藏,就連殺毒軟件也檢測(cè)不到它的存在包券。事實(shí)上真有這么強(qiáng)大嗎?事實(shí)上確實(shí)是這樣付秕,因?yàn)榫瓦B操作系統(tǒng)或許都已經(jīng)檢測(cè)不到它了,因?yàn)槟闫茐牧怂慕Y(jié)構(gòu)询吴。文件是邏輯上的東西亮元,改了關(guān)鍵字節(jié),文件的邏輯結(jié)構(gòu)會(huì)發(fā)生改變爆捞,換句話說(shuō),操作系統(tǒng)已經(jīng)不認(rèn)為它是一個(gè)有效的文件了盗温,它只是磁盤上的一堆數(shù)據(jù)苛秕。其實(shí)對(duì)于物理磁盤而言肌访,并不存在什么文件艇劫,只存在數(shù)據(jù)0和1惩激,硬盤也根本不知道什么叫文件,就像CPU不知道什么是操作系統(tǒng)一樣风钻,它只關(guān)心寄存器指令。經(jīng)過(guò)測(cè)試鸣个,通過(guò)這種方法將目錄隱藏后改卷標(biāo)名并不影響目錄本身羞反,取消屬性后仍然能看到該目錄及其下面的所有文件囤萤,不過(guò)卷標(biāo)屬性是只讀的,不能通過(guò)SetFileAttributes函數(shù)更改澄惊,所以只能用DDM(Direct Disk Manipulation富雅,意為“直接磁盤操作”掸驱,即直接操作磁盤來(lái)訪問(wèn)文件)技術(shù)實(shí)現(xiàn)没佑。那能不能禁止文件被復(fù)制和訪問(wèn)呢?辦法是有的,還是改屬性远剩,將屬性第6bit設(shè)為1,它就不能被運(yùn)行和復(fù)制了锥余,任何對(duì)該文件或目錄的訪問(wèn)都會(huì)提示“拒絕訪問(wèn)”,有人順便會(huì)把第7bit也就是最后1位也設(shè)為1驱犹,這個(gè)其實(shí)沒(méi)有必要足画,7bit其實(shí)是Normal(標(biāo)準(zhǔn))屬性,值為0x80淹辞,就是不含其它屬性的屬性,F(xiàn)AT中值存儲(chǔ)為0象缀,兩者一樣,只是在設(shè)置屬性時(shí)加以區(qū)分霞怀。目前為止莉给,F(xiàn)AT下文件的遍歷廉沮、隱藏、保護(hù)和刪除都已講完废封,了解更多請(qǐng)上網(wǎng)丧蘸。具體實(shí)現(xiàn)方法及代碼請(qǐng)參考《自己動(dòng)手寫數(shù)據(jù)恢復(fù)軟件》一文。

---------------------

作者:遠(yuǎn)方235

來(lái)源:CSDN

原文:https://blog.csdn.net/zzmzzff/article/details/80298379

版權(quán)聲明:本文為博主原創(chuàng)文章力喷,轉(zhuǎn)載請(qǐng)附上博文鏈接!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末贝咙,一起剝皮案震驚了整個(gè)濱河市拂募,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌陈症,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,843評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件趴腋,死亡現(xiàn)場(chǎng)離奇詭異论咏,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)厅贪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門养涮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人单寂,你說(shuō)我怎么就攤上這事⌒觯” “怎么了昏苏?”我有些...
    開(kāi)封第一講書人閱讀 163,187評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)洼专。 經(jīng)常有香客問(wèn)我,道長(zhǎng)屁商,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,264評(píng)論 1 292
  • 正文 為了忘掉前任雾袱,我火速辦了婚禮官还,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘林说。我一直安慰自己,他們只是感情好腿箩,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,289評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布劣摇。 她就那樣靜靜地躺著,像睡著了一般剑梳。 火紅的嫁衣襯著肌膚如雪滑潘。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,231評(píng)論 1 299
  • 那天追逮,我揣著相機(jī)與錄音,去河邊找鬼钮孵。 笑死眼滤,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的诅需。 我是一名探鬼主播荧库,決...
    沈念sama閱讀 40,116評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼分衫,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼般此!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起铐懊,我...
    開(kāi)封第一講書人閱讀 38,945評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤居扒,失蹤者是張志新(化名)和其女友劉穎概漱,沒(méi)想到半個(gè)月后喜喂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,367評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡照弥,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,581評(píng)論 2 333
  • 正文 我和宋清朗相戀三年这揣,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了影斑。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,754評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡片迅,死狀恐怖皆辽,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情驱闷,我是刑警寧澤,帶...
    沈念sama閱讀 35,458評(píng)論 5 344
  • 正文 年R本政府宣布盆耽,位于F島的核電站,受9級(jí)特大地震影響征字,放射性物質(zhì)發(fā)生泄漏娇豫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,068評(píng)論 3 327
  • 文/蒙蒙 一氮昧、第九天 我趴在偏房一處隱蔽的房頂上張望浦楣。 院中可真熱鬧,春花似錦振劳、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,692評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至吮旅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間檬嘀,已是汗流浹背责嚷。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,842評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留贸铜,地道東北人聂受。 一個(gè)月前我還...
    沈念sama閱讀 47,797評(píng)論 2 369
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像蛋济,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,654評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容