徐健



摘? 要: MAC產品應用廣泛,對MAC OS的HFS+文件系統的解析和數據恢復的需求也逐漸增加。借助存儲介質底層數據編輯軟件Winhex,詳細分析HFS+文件系統文件存儲的基本原理,通過實例介紹對所需要文件的提取。
關鍵詞: Winhex; HFS+; 數據恢復; 實例研究
中圖分類號:TP309? ? ? ? ? 文獻標志碼:A? ? ?文章編號:1006-8228(2019)08-53-04
Abstract: MAC products are widely used, and the demand for MAC OS HFS+ file system parsing and data recovery is increasing. This paper analyzes the basic principle of HFS+ file system file storage in detail with the help of the Winhex, the underlying data editing software of storage medium, and the extraction of required documents is described by a case.
Key words: Winhex; HFS+; data recovery; case study
0 引言
Winhex是由X-Ways軟件技術公司開發的專業磁盤編輯工具,win表示Windows,hex表示十六進制,即Windows下運行的十六進制編輯器,通過其完善的分區管理功能和文件管理功能,可以自動分析分區表鏈和文件鏈簇,可以執行不同級別的備份工作,它的編輯功能可以編輯物理磁盤或邏輯磁盤的任何扇區,內存編輯器可以直接編輯內存,支持Windows、UNIX、Linux、MAC等各種系統下的磁盤分區結構及文件系統結構的解析[1]。
本文以HFS+文件系統為例,分析其文件系統的結構,并通過實例研究的方法找到所需要的文件并準確提取。
1 HFS+文件系統結構分析
HFS+文件系統是目前的Apple電腦中默認的最常用的文件系統,由卷頭,5種特殊的“元文件”--分別是分配文件(Allocation File)、盤區溢出文件(Extents Overflow file)、編錄文件(Catalog File)、 屬性文件(Attributes File)、啟動文件(Startup File)以及用戶數據區組成。這5個元文件是用于存儲文件系統結構的數據和屬性,它們的起始地址和大小在文件系統的卷頭中描述[2]。HFS+文件系統總體結構如圖1所示。
HFS+文件系統的卷頭位于宗卷的2號扇區(0、1號扇區保留),占用一個扇區,其作用類似于FAT文件系統和NTFS文件系統中的DBR,記錄構建 HFS+文件系統的基本信息,有塊(類似于NTFS文件系統的簇)、每塊字節數、日志位置信息以及一些重要的元文件的位置信息[3]。
HFS+文件系統用B-樹結構組織數據,B-樹是一種可以快速搜索、 插入和刪除的結構,由節點構成,分為頭節點、位圖節點、索引節點、葉節點四種類型,其中索引節點和葉節點中包含關鍵字,對B-樹進行的所有操作最終都是針對索引節點和葉節點以及存儲在它們中的關鍵字進行的。
關鍵字在索引節點和葉節點有定的排序規則[4],具體規則如下:
⑴ 關鍵字必須以升序方式排列在節點中;
⑵ 同一個層次中的所有節點必須由“下一個節點號”和“上一個節點號”兩個參數鏈接起來;
⑶ 關鍵字值最小的節點必須位于鏈表的第一位,且“上一個節點號”參數值為0;
⑷ 關鍵字值最大的節點必須位于鏈表的最后,且“下一個節點號”參數值為0;
⑸ 對于任何一個節點,其中存放的所有關鍵字值必須小于鏈表中下一個節點中存放的關鍵字值,且大于鏈表中上一個節點中存放的關鍵字值。
對關鍵字采用上述這種排列規則可以快速地在B-樹中搜索到需要的關鍵字,以便訪問與關鍵字相關聯的數據。
下面用個簡單的例子描述上述規則,在該例子中,我們用數字作為關鍵字, 如圖2所示。
從圖2來看,在訪問數據的時候,由頭節點定位到根節點,從根節點的第一個記錄開始,在關鍵字值小于等于要搜索的關鍵字值的記錄范圍內尋找更大的關鍵字值記錄。
搜索的過程可以延伸到孩子節點,其中索引節點是典型的孩子節點,搜索往往需重復進行,一直延伸到一個葉節點[5]。如果葉節點中的關鍵字值與要搜索的關鍵字值相等,則該關鍵字所關聯的就是要訪問的數據的相關信息。如果葉節點中的關鍵字值與要搜索的關鍵字值不相等,則說明要訪問的數據不在這個B-樹中,需要到其他B-樹中搜索。
2 HFS+文件系統文件提取實驗
為了能更好地說明HFS+文件系統的結構及其數據存儲原理,準備一個U盤,通過MAC系統的磁盤工具對其格式化成Mac OS文件系統,在其卷宗根目錄下放置四個文件夾和88個txt文件,實驗要求準確定位80.txt文件并將其提取出來(所需定位及提取的文件可以修改,本文以80.txt為例)。在Windows系統下不能夠讀取Apple系統的分區,通過運行Winhex程序來分析此U盤的文件系統并提取指定文件。
根據HFS+文件系統的結構,我們可以通過以下步驟來手工提取80.txt,注意Mac OS系統使用Big-Endian字節序[6]。
⑴ 定位卷頭。通過該卷宗所在硬盤的Apple分區映射表定位到卷宗的開始位置在409640號扇區,而卷頭位于卷宗的第三個扇區,也就是409642號扇區,根據偏移地址0x28~0x2B得知該分區的每塊字節數為4096。