在fat32中,扇區是否使用資訊儲存在 fattable 中,通過解析fattable即可知道哪些扇區已經被使用。
具體解析的步驟如下:
1. 解析fat32檔案系統頭
2. 獲取fattable的位置及大小
3. 根據fattable計算有效資料位置
1. fat檔案系統所在分割槽的第乙個扇區儲存檔案系統的基本資訊,也就是檔案系統的頭
2. 大小為乙個扇區,也就是512個位元組,以 0x55aa 結束
以下為fat32檔案系統頭部資料結構體
typedef struct fat32_dbr;
通過winhex模板可以檢視具體的資料
fattable資料儲存的起始位置位於保留扇區後。
需要獲取fattable的位置,首先來看下分割槽資料的儲存結構:
通過解析頭部資料可以得到如下資訊:
1. 保留扇區大小 : reservedseccnt = 6206
2. fattable大小 : fatseccnt32 = 993
3. fattable數量 : fatscnt = 2
4. 扇區大小 : bytespersec = 512
通過計算可得:
fattable起始位址 = 保留扇區數 * 扇區大小 = 6206 * 512 = 3177472位元組
fattable大小 = fattable大小 * 扇區大小 = 993 * 512 = 508416位元組
跳轉至偏移位址檢視資料:
0號表項值總是「f8ffff0f」
1號表項可能被用於記錄髒標誌
1. 磁碟資料讀取的基本單位為1個扇區,通常為512位元組
2. fat32檔案系統通過簇來管理,乙個簇中包含多個扇區
3. fattable中的表項表示對應簇是否存在資料
4. fat32檔案系統中fattable表項大小為32個位元組,fat16檔案系統表項大小為16個位元組
1. fat32檔案系統的保留扇區資料為有效資料
2. 從fattable的2號表項開始記錄簇的資料有效性,0表示沒有儲存資料,非0表示儲存的資料
FAT32的協議總結
讀了fat32協議等,做了一些工作,學會不少東西,但是也有很多不懂得地方,希望明白人多來指教。在u盤進行fat32格式化後,發現除了mbr,dbr,data資料區外,還有一些資料區。就是用winhex發現的,有些資料段都沒見過,不知道是幹什麼的。就是那兩個unpartitioned space。fa...
FAT32學習筆記(一)
從最簡單的開始,如何在fat32格式的u盤裡找到乙個檔案?如果有u盤,那麼可以拿實際的u盤做試驗,這裡可以使用乙個image檔案來做試驗,效果一樣。在整個實驗過程當中,會不停的用到如下幾條命令 mount test.img mnt umount mnt hexdump c s x n x test....
FAT32的幾個問題
參考 在 中的mbr和dbr的6處,指出了當前分割槽的扇區數,占用4個位元組。每個扇區是512位元組,那麼最大容量為 2 32 1 512 2tb。fat32是以4個位元組代表1簇,但4個位元組中只用到了低28位 高4位保留 因此有2 28個簇,即268435456簇。如果每簇位4kb,那麼2684...