在sd卡根目錄下複製乙個abc.txt的測試檔案進入,檔案中包含一些內容,如下圖所示:
在分析之前,先回顧一下使用者目錄項的基礎知識
exfat檔案系統中每個使用者檔案至少有三個目錄項,稱為三個屬性:
屬性1: 目錄項首位元組的特徵值為「85h」
描述檔案的基本資訊,修改日期等
屬性2: 目錄項首位元組的特徵值為「c0h」
屬性2主要用來查詢檔案所在的簇, 大小等
屬性3: 目錄項首位元組的特徵值為「c1h」
描述檔名;
通過目錄項查詢,找到的紅色框中的資料,即abc.txt檔案的描述,分析如下(起始位址為0x3180d0):
屬性1("85h"):
位元組偏移
長度欄位名和定義
實際值(hex)
0x00
表示目錄型別
85h(表示使用者檔案目錄項)
0x01
附屬目錄項數
02 (包含兩個目錄項,乙個目錄項大小為32位元組,即後續c0,c1)
0x02
校驗和0beb(計算方式參考)
0x04
檔案屬性
20000000 (含義參考下表)
0x08
檔案建立時間
1d440151
0x0c
檔案最後修改時間
19440151
0x10
檔案最後訪問時間
1d440151
0x14
1檔案建立時間精確至10ms
b20x15~0x1f
保留(表7--5屬性具體含義)
二級制值
屬性含義
二進位制值
屬性含義
00000000
讀寫00001000
卷標00000001
唯讀00010000
子目錄00000010
隱藏00100000
存檔00000100
系統屬性2("c0"):
位元組偏移
字段長度(位元組)
內容及含義
實際值(hex)
0x00
1目錄項的型別(特徵值為「c0h」)
c0 表示屬性2
0x01
1檔案碎片標誌
03 乜有碎片(注: 有碎片用01表示)
0x021保留
0x03
1檔名字元數n
07檔名長度,用unicode 表示,每個字元佔2位元組
0x04
2檔名hash值
0028
0x062保留
0x08
8檔案大小1
0000000012
0x104保留
0x14
4起始簇號
00000009
0x18
8檔案大小2
0000000012
屬性3("c1"):
位元組偏移
字段長度(位元組)
內容及含義
0x00
1目錄項的型別(特徵值為「c1h」)
0x011保留
0x02
2n檔名
從第二個字段開始,全是檔名,長度請看屬性2中長度字段;
這裡有個問題,如果檔案長度很長,會怎麼樣呢?
構造乙個長檔名的空檔案如下:
夠長了吧! 重新整理一下winhex
在最後乙個紅色區域,為了支援長檔名,可以發現,差異點在:
1 在屬性1(85開頭)中的附屬目錄項個數變成了05,
2 屬性3(c1開頭)的項一共有3個,用來儲存檔名資料;
比較好奇的是,中間紅色框,多了一共05開頭的目錄項??, 直接上結果:
「85h」、「」c0h、「c1h」改變為「05h」、「40h」、「41h」, 是刪除的目錄項標記;
可能是別的應用在這其間建立臨時檔案,後由刪除了;
根據上一章節,對目錄項屬性2的分析,可知道abc.txt檔案內容所在簇為 00000009;
計算所在扇區=0x1800 + (9-2)* 64= 0x19c0 (2號簇起始扇區 + 偏移簇所佔扇區)
是不是與檔案寫入的資料是一樣的!!
然後,fat表應該是什麼樣子呢?
找到fat表,第9個簇項,
依舊是0,
但並不能說這些fat項對應的簇就是空簇。這一點和fat16、fat32 是不一樣的;
那簇位**件是什麼樣子呢?
找到簇位**件,
第乙個位元組為 ffh, 二進位制為 1111 1111 , 對應資料區的8個簇,即2~9 這8個簇,說明9號簇是被應用狀態的;
其他的後續再做介紹!
exfat檔案系統(二)
獲取到exfat nofuse 後,先看看 中自帶的readme.md文件,check發現該開源 是在linux系統中以命令modprobe exfat方式load the driver manually,然後使用標準的mount載入exfat檔案系統。modprobe exfat的控制主要是執行 ...
exFAT檔案系統介紹
exfat 全稱extended file allocation table file system,擴充套件fat,即擴充套件檔案分配表 是microsoft在windows embeded 5.0以上 包括windows ce 5.0 6.0 windows mobile5 6 6.1 中引入的...
微軟最新檔案系統ExFAT
微軟檔案系統經歷了fat12 fat16 fat32 ntfs幾個階段,ntfs檔案系統以其非常好的安全性及可恢復性得到廣泛認可,也是微軟力推的一種檔案系統。目前,微軟又對fat系列檔案系統做了進一步發展,推出了exfat extended file allocation table file sy...