劉宏斌
摘 要 FAT32文件分配表是Windows操作系統(tǒng)磁盤分區(qū)格式的一種。采用32位的文件分配表,使其對磁盤的管理能力增強。本文通過文件系統(tǒng)出現(xiàn)亂碼對FAT32的文件分配表進行研究和分析
關(guān)鍵詞 FAT32:FAT:文件分配表;MBR;DBR
中圖分類號 TP3
文獻標(biāo)識碼 A
文章編號 1674-6708(2016) 154-0085-02
在日常生活中,U盤,SD卡,MP3,MP4等存儲設(shè)備都有可能會產(chǎn)生一些亂碼文件或者亂碼文件夾,比如在磁盤正在讀取或者寫入的時候,直接把磁盤拔掉或者斷電,再有主板上的接口或者接線不是太好,也會使磁盤出現(xiàn)I/O故障,這情況都會導(dǎo)致存儲設(shè)備上的文件被損壞,好一點的情況出現(xiàn)亂碼的文件名或文件夾名,差一點格式就會出現(xiàn)不對應(yīng)打不開,還有就打開磁盤,就出磁盤損請你格式化磁盤,去格式化又顯示格式化無法完成,以上這些情況說明了這些磁盤出現(xiàn)了不同程度的損壞?;旧峡梢远ㄎ辉谖募峙浔沓鲥e了。
FAT32文件分配表是Windows操作系統(tǒng)磁盤分區(qū)格式的一種。采用32位的文件分配表,使其對磁盤的管理能力增強。又因FAT32分區(qū)內(nèi)無法存放大于4GB的單個文件,且性能不佳,易產(chǎn)生磁盤碎片。硬盤分區(qū)已被性能更優(yōu)異的NTFS分區(qū)格式所取代。FAT32目前常用于U盤,SD卡、TF卡等小容量存儲設(shè)備。
首先,先要了解一下FAT32位分配表的結(jié)構(gòu)
1) FAT32文件系統(tǒng)將邏輯盤的空間分為三塊,分別是引導(dǎo)區(qū)(BOOT區(qū))、文件分配表區(qū)(FAT區(qū))、數(shù)據(jù)區(qū)(DATA區(qū))。這兩個區(qū)域合起叫作系統(tǒng)區(qū)域。
2) 引導(dǎo)區(qū)是從O扇區(qū)開始,使用連續(xù)3個扇區(qū),用來保存這個每sector的BYTE數(shù),每個簇所對應(yīng)的sector數(shù)等一些重要的參數(shù)和boot記錄,最后還有一部分作為保留扇區(qū)。
3) 文件分配表區(qū)(FAT區(qū))保存了兩個完全相同的文件分配表(FAT),因為文件所占用的存儲空間(簇鏈)及空閑空間的管理全部是通過FAT表來實現(xiàn)的,F(xiàn)AT表非常重要,保存兩個FAT表即便是第一個FAT表損壞了,還有第二個FAT表可以使用。
其次,還要了解文件目錄表FDT(File DirectoryTable),即DIR區(qū),也叫做ROOT區(qū)緊跟在分區(qū)表2的后面一個扇區(qū)開始,記錄著根目錄里面每一個文件(目錄)的開始地址和文件的屬性等。在定位文件位置時,系統(tǒng)會依DIR中存在的開始地址,再看FAT表就可以算出文件在這塊硬盤的位置和大小。
如果是長文件名,每個表項就應(yīng)該是64個字節(jié),前32個字節(jié)作為鏈接說明;后32個字節(jié)就是文件的屬性說明,其中有文件的長度、文件開始地址、創(chuàng)建的日期及時間。
根目錄下面還包含有文件和子目錄,子目錄下面又包括有文件和下一級目錄.一個子目錄也要占用一個文件目錄項,它的屬性字節(jié)就變成了10H,文件的長度字節(jié)變?yōu)椤?0”。
下能通過一個案例來介紹FAT32文件系統(tǒng)出現(xiàn)亂碼的分析。
手里有一個U盤,就一個分區(qū),分區(qū)表格式為FAT32,通過磁盤管理的可顯示容量,但是通過資源管理器打開發(fā)現(xiàn)所有的文件夾和文件的名稱變成莫名其秒的名稱,無法打開任何一個文件和文件夾,如圖所示。
用R-Studio軟件進行掃描,軟件修復(fù)的目錄結(jié)構(gòu)根本無法打開。需要恢復(fù)的文件為里面又有子目錄和文件,數(shù)量非常的多,,就算恢復(fù)出也無法使用了。如果采用RaW模式來修復(fù),文件名將就要被更換,同樣也是無法使用的。
根據(jù)這種現(xiàn)象進行分析,磁盤的容量能夠正常顯示,可以認(rèn)為FAT表應(yīng)該完好。但根目錄下的文件夾及文件出現(xiàn)了其它不能出現(xiàn)在文件或文件夾的字符,可以肯定是根目錄下的目錄項出錯。
用十六位編輯器WINHEX進行分析,手工修改目錄項,使數(shù)據(jù)得以還原。
步驟如下:
1) 首先現(xiàn)在打開的是物理磁盤,為了方便分析,然后點擊“分區(qū)1””來打開這個邏輯磁盤。打開有后,就會彈出如圖所示的提示。
2) 看到這個提示框中出現(xiàn)的偏移處的值都是錯誤的,先定位到第一個顯示的錯誤偏移DEE040H處,可以用菜單上面的“位置一>轉(zhuǎn)到偏移量”,在彈出的窗口位置“轉(zhuǎn)到偏移量”框內(nèi)輸入顯示器第一個錯誤的“DEE040H”,跳轉(zhuǎn)到這個偏移地址處,這個偏移地址就是25382號扇區(qū)的開始位置。這里要注意DEE20H處的有一個“E5”值,這是一個定義為磁盤內(nèi)刪除的標(biāo)記。刪除標(biāo)記是目錄區(qū)里的第一個字節(jié),而目錄區(qū)的第一個字節(jié)應(yīng)該在本扇區(qū)里OOH、20H、40H、60H這些位置上,然而現(xiàn)在卻向后面偏移了16個字節(jié),但是前面一個扇區(qū)內(nèi)偏移DEE020H處的E5所在的位置是正確的。說明了,這個地址DEE040H~DEE05FH16個字節(jié)是被非正常情況下加進來的。向后面看,向后翻過一個扇區(qū),到到25383號扇區(qū)的開始位置,看到這個位置的目錄項已經(jīng)是正常的了,也就是說異常偏移了1個扇區(qū)。
3) 回過去再看錯誤列表,就會發(fā)現(xiàn)前面所顯示的錯誤偏移都在這個扇區(qū)里面。通過DBR里的信息得知根目錄是從25382扇區(qū)開始的,這個扇區(qū)在根目錄內(nèi),這就是根目錄下的文件和文件夾出現(xiàn)亂碼的根本原因。
下面將這個扇區(qū)16字節(jié)刪除,再把16后的內(nèi)容寫入到25382號扇區(qū)起始偏移處。保存這些后,重新加載,就會發(fā)現(xiàn)文件和文件夾都有正常珠顯示出來了。