學(xué)習(xí)硬盤數(shù)據(jù)恢復(fù)必須先學(xué)會(huì)的基礎(chǔ)知識(shí)
學(xué)習(xí)硬盤數(shù)據(jù)恢復(fù)必須先學(xué)會(huì)的基礎(chǔ)知識(shí)
前兩天出于好奇發(fā)布了一些我的備件庫里部分硬盤的照片,得到各位版主還有觀光者的表揚(yáng),我雖然從事硬盤數(shù)據(jù)恢復(fù)五年,但是仍然認(rèn)為自己還有很多東西要學(xué)。也不敢在各位高手面前班門弄斧。所以還是寫點(diǎn)自己擅長的東西吧。
現(xiàn)在硬盤數(shù)據(jù)恢復(fù)越來越火了,而其學(xué)習(xí)的人越來越多,(主要是利潤比較厚一點(diǎn),只要技術(shù)高超隨便接個(gè)活都可以掙很多錢。)學(xué)硬盤數(shù)據(jù)恢復(fù)的前提當(dāng)然是了解硬盤的存儲(chǔ)機(jī)制。了解了數(shù)據(jù)存儲(chǔ)機(jī)制后再去學(xué)習(xí)一些硬盤數(shù)據(jù)恢復(fù)軟件,比如Winhex,就會(huì)得心應(yīng)手。所以現(xiàn)在我先講文件存儲(chǔ)機(jī)制,等這些講完了,我就會(huì)講硬盤的工作原理,等等關(guān)于開盤維修,磁頭矯正的問題等等。這些不是一句話的事情,我的文采不是太好,所以喜歡用圖片。不過這篇文章是不會(huì)有太多圖片。
(上面全是廢話,我們開講吧)
要進(jìn)行數(shù)據(jù)恢復(fù),就必須知道文件在硬盤上是如何存儲(chǔ)的,個(gè)人電腦操作系統(tǒng)主要使用FAT16,FAT32,NTFS三種文件系統(tǒng),要了解文件的存儲(chǔ)機(jī)制,必須先弄清楚“簇”的概念,“文件目錄標(biāo)”的結(jié)構(gòu)和“文件分配表”。下面我以FAT16文件系統(tǒng)為例進(jìn)行闡述。(其它的文件系統(tǒng)都是差不多的,類比一下就可以了)
首先我談一下“簇”(我剛開始學(xué)的時(shí)候,認(rèn)為簇是個(gè)很難的東西,可是學(xué)了一段時(shí)間之后才知道這個(gè)是最簡單的,學(xué)硬盤關(guān)鍵就是要有韌性)
簇是文件存儲(chǔ)的最小單位,1簇可以是1個(gè)扇區(qū),也可以是2個(gè),4個(gè)等。它與磁盤的容量大小有關(guān),如果1簇為兩個(gè)扇區(qū),哪么一個(gè)文件即使只有一個(gè)字節(jié)也要占用2個(gè)扇區(qū)的磁盤空間。講的不夠詳細(xì),因?yàn)槲艺J(rèn)為這個(gè)東西需要慢慢體會(huì)說的越多越麻煩。
其次我談一下“文件目錄表”
文件目錄表(File Directory Table,學(xué)硬盤尤其要多記憶單詞,達(dá)到看到單詞就知道漢語意思是就是你該出山的時(shí)候了)即根目錄區(qū),文件目錄表中的每條記錄占用32個(gè)字節(jié),記錄著每個(gè)文件的信息,包括文件名,類型名,屬性,建立時(shí)間,建立日期,簇號(hào)和文件長度,其中屬性占用1個(gè)字節(jié),該字節(jié)的0~5位為1分別表示只讀,隱藏,系統(tǒng),盤標(biāo)志,分目錄,存檔,這6種屬性有些可以組合。建立時(shí)間和建立日期共占用4個(gè)字節(jié),存放文件最后一次修改的時(shí)間日期,“簇號(hào)”占用2個(gè)字節(jié),標(biāo)識(shí)文件的首首簇號(hào),指向文件分配表。
第三 文件分配表
FAT16文件分配表的每一項(xiàng)占用2個(gè)字節(jié)(16個(gè)二進(jìn)制位),分別對(duì)應(yīng)數(shù)據(jù)區(qū)的每一簇,第0字節(jié)是表頭,標(biāo)志磁盤類型,表中的各個(gè)十六進(jìn)制各有含義,具體含義是什么只需要多琢磨一下就可以了,我這里就不一一說明了,太浪費(fèi)時(shí)間。
第四 文件數(shù)據(jù)組織方式
經(jīng)過上面的介紹,大家已經(jīng)了解了FAT16文件系統(tǒng)的文件目錄表和文件分配表的結(jié)構(gòu),哪么文件數(shù)據(jù)是如何組織存放呢?下面舉例說明。
假如有一個(gè)名為happy.doc的文件,操作系統(tǒng)會(huì)從“文件目錄表”中查找文件名為“happy.doc”的記錄,從記錄中知道了文件使用的首簇號(hào)為0003,接著轉(zhuǎn)到文件分配表的表項(xiàng)3,表項(xiàng)3指示文件的下一簇為0008簇,然后轉(zhuǎn)到表項(xiàng)第8項(xiàng),表項(xiàng)8指示文件還使用了0005簇,接著再轉(zhuǎn)到第5項(xiàng),表項(xiàng)5的數(shù)字表示此簇為文件的最后一簇,于是操作系統(tǒng)就知道了“happy.doc”文件使用了0003簇,0008簇,0005簇。最后操作系統(tǒng)按次序?qū)?shù)據(jù)區(qū)的0003簇,0008簇,0005簇的數(shù)據(jù)讀入緩沖區(qū),完成文件讀取過程。
文件的寫入過程跟文件的讀取過程相似。新建立文件時(shí),操作系統(tǒng)首先在文件目錄表中檢查是否有相同文件名(包括類型名)的記錄。若無,則使用一個(gè)空記錄寫下文件的信息(文件名,類型名,屬性,建立時(shí)間,建立日期,文件長度)接著從“文件分配表”中搜索一個(gè)沒有被使用的簇作為該文件的首簇假如是0002簇,同事將該簇號(hào)寫入“文件分配表”該文件記錄的簇號(hào)一欄。如果一個(gè)簇的空間不足以存放文件,哪么再從文件分配表搜索沒有使用的簇加入搜索到0004簇,然后將0004簇號(hào)寫入表項(xiàng)2,如果兩個(gè)簇的空間已足夠存放文件,哪么最后在表項(xiàng)4里寫上結(jié)束標(biāo)志FFF8.然后轉(zhuǎn)到數(shù)據(jù)區(qū)將文件數(shù)據(jù)按次序?qū)懭?002簇,0004簇,完成文件寫入過程。
文件分配表使用鏈表的形式將分散的空間組織起來存放數(shù)據(jù),每個(gè)文件對(duì)應(yīng)一個(gè)鏈表。文件的刪除就更簡單了,在刪除文件時(shí),操作系統(tǒng)只是將文件目錄表中的對(duì)應(yīng)文件記錄的第0個(gè)字節(jié)改為E5H。并在“文件分配表”中把該文件占用的各簇的表項(xiàng)清零,釋放空間。其實(shí)文件的內(nèi)容仍然在硬盤的數(shù)據(jù)區(qū)里,并沒有被真正的清除。這就給數(shù)據(jù)恢復(fù)提供了可能。
哎呀。寫到這里真的把我累死了,希望可以換來版主給我的加分。以后再接再勵(lì)!