FAT32檔案系統之目錄項分析 (四)

2021-08-07 23:12:29 字數 4497 閱讀 3326

在fat32檔案系統下,分割槽根目錄下的檔案及資料夾的目錄項存放在根目錄區中,分割槽子目錄下的檔案及檔案

夾的目錄項存放在子目錄區中,根目錄和子目錄區都在資料區中。

fat32與fat16目錄項一樣分為四類

短檔名目錄項

長檔名目錄項

「.」目錄項和「..」目錄項

卷標目錄項

fat32與fat16只有短檔案有區別,其他三類完全一樣,這裡只是講述fat32的短檔名

fat32

短檔名目錄項的含義

位元組偏移

字段長度

字段內容及含義

0x00

8

主檔名

0x08

3

檔案的副檔名

0x0b

1

檔案屬性

00000000(讀/

寫)0x00

00000001

(唯讀)

0x01

00000010

(隱藏)

0x20

00000100

(系統)

0x40

00001000

(卷標)

0x08

00010000

(子目錄)

0x10

00100000

(存檔)

0x20

0x0c

1

未用0x0d

1

檔案建立時間精確到

10ms

的值0x0e

2

檔案建立時間,包括時,分,秒

0x10

2

檔案建立日期,包括年,月,日

0x12

2

檔案最近訪問日期,包括年,月,日

0x14

2

檔案起始簇號的最高位

0x16

2

檔案修改時間,包括時,分,秒

0x18

2

檔案修改日期,包括年,月,日

0x1a

2

檔案的起始簇號的低位

0x1c

4

檔案大小(以位元組為單位)

引數詳細分析

(1)主檔名

檔名用不完8個位元組,後面用空格(0x20)填充。

另外該位置的第乙個位元組也用來表示目錄項的分配狀態,當這個位元組為 0x00時,表示該目錄從未用過,當這個

位元組是0xe5

時,表示該目錄項曾經使用過,但目前已經被刪除。

(2)副檔名

沒有副檔名的用空格填充

(3)檔案屬性

檔案的各種屬性,表示的方法是按二進位制位定義,最高兩位保留未用,

(1)      未用

(5)檔案建立時間精確到10ms的值

檔案在建立時的時間值中精確到10ms的值用該位元組表示。例如:86h,十進位制為134,所以檔案建立的時間為

1340ms,即1.34s.

(6)檔案建立時間

a:0-4位,這5位記錄秒的值,單位是2s,也就是把這四位的值乘以

2,才是秒的值,其取值範圍為0-29.

b:5-10位,這6位記錄分的值,其取值範圍為0-59.

c:11-15位,這5位記錄時的值,其取值範圍為0-23

計算出來的值再加上1340ms。才是檔案最終的建立時間。.

(7)檔案建立日期

a:0-4位,這5位記錄日的值,其取值範圍為0-31

b:5-8位,這4位記錄月的值,其取值範圍為0-12.

c:9-15位,這7位記錄年的值,其取值相對於2023年開始計數的,其值必須加上1980。

(8)檔案最近訪問日期

同檔案建立日期演算法一樣

(1)      檔案起始簇號的高位

是指檔案的內容所在的第乙個簇號

(2)      檔案修改時間略

(3)      檔案修改日期略

(12)檔案起始簇號低位

是指檔案的內容所在的第乙個簇號

(13)檔案大小以位元組大小為單位小端儲存

長檔名目錄項

為了相容dos與winddows 3.x在winddows 95以上的系統中,超過8.3格式的檔案或目錄實際儲存著兩

個名字,乙個短檔名和乙個長檔名。當建立乙個長檔名時,其對應的短檔名的處理有以下三個原則:

a:系統取長檔名的前6個字元加上「~1」,形成短檔名,其副檔名保持不變

b:如果已經存在這個名字的檔案,數字自動加1,「~2」

c:如果有dos與winddows 3.x的非法字元,以「­_」替代。

長檔名儲存時,其屬性值為 ofh,能夠儲存13個字元,如果檔名很長,乙個長檔名需要多個目錄項,

這些目錄是倒序排放在其短檔名的前面。

fat32長檔名目錄項的含義

位元組偏移

字段長度

字段內容及含義

0x001

序列號

0x0110

檔名的第1-5個unicode碼字元

0x0b1

屬性標誌 ofh固定值

0x0c1

保留未用

0x0d1

短檔名檢驗和

0x0e12

檔名的第6-11個unicode碼字元

0x1a2

始終為0

0x1c2

檔名的第12-13個unicode碼字元

特殊說明

(4)      序列號

0-4位描述了長檔名目錄項的順序號

6位若為1,則表明是目錄項的最後一項

如果檔案被刪除,該位元組會改為「e5」。

(5)      檔名字元

如果檔名已經記錄完,但該引數的空間中還有未用的位元組,就會在檔名最後乙個字元填充兩個00h,隨後

未用的填充ffh

(6)      短檔名檢驗和

長檔名目錄項通過這個檢驗和將其與短檔名目錄項關聯起來。檢驗和是通過短檔名計算而來的,同一長

檔名的檢驗和必須一致。

校驗和的計算方法是依次將短檔名的各個字元對應的二進位制相加,在每一步相加之前先將二進位制的值依

次向右移動一位,最右邊的位迴圈移動到最左邊,然後再加上下乙個字元所對應的二進位制值,直到把最後乙個字

符加完。

「.」目錄項(當前目錄)和「..」目錄項(上級目錄)

在子目錄所在的檔案目錄項區域中,總有兩個特殊的目錄,「.」目錄項和「..」目錄項可以用dos命令的dir查

看到。

說明 a:「.」目錄項所描述的起始簇號,是子目錄本身所在簇號,

c:這兩個目錄都大小被設定0,同其他的資料夾目錄項一樣。

系統利用「.」目錄項(當前目錄)和「..」目錄項實現目錄之間的雙向聯絡,從而把整個檔案系統聯絡在一起。

卷標目錄項

卷標可以被隨時修改,存放在fdt中,

a:卷標屬於短檔名,最大支援11個字元。

b:不記錄起始簇號與大小

c:不記錄建立時間和最後訪問時間,只記錄修改時間

fat32檔案系統對於根目錄下檔案和管理,統一在資料區中的根目錄為這些檔案建立目錄項,並由fat

表為檔案的內容分配簇存放資料。而根目錄的首簇由格式化程式決定,並存放在dbr的bpb中。如果根目錄

下的目錄項數目過多,這些檔案的目錄項在根目錄區的首簇存放不下,fat表就會為根目錄分配新的簇來存

放根目錄下檔案及資料夾的目錄項。

第1步:定位dbr

第2步:定位根目錄首簇

第3步:定位目錄項

第4步:定位fat

第5步:定位資料區

第1步:定位dbr

第2步:定位根目錄首簇

第3步:定位子目錄項

第4步:定位子目錄簇

第5步:定位子目錄檔案

第6步:定位fat

第7步:定位資料區

FAT32檔案系統

windows95 osr2和windows 98開始支援fat32檔案系統,它是對早期dos的fat16檔案系統的增強,由於檔案系統的核心 檔案分配表fat由16位擴充為32位,所以稱為fat32檔案系統。在一邏輯盤 硬碟的一分割槽 超過 512 兆位元組時使用這種格式,會更高效地儲存資料,減少硬...

解析Fat32檔案系統

1.第一分區的起始扇區 2.第乙個檔案檔案配置表 fat 的位置 3.資料區域的位置 4.檔案 file1.txt 所在的簇 1 首先,用hxd開啟所要解析的fat32的檔案 2 選擇所要分析的檔案,開啟後,在起始的sector0,也就是0扇區我們就會看到該系統的主引導,在結束標誌的55aa之前的6...

NTFS與FAT32檔案系統

磁碟 包括行動硬碟 u盤 軟盤等 在格式化時都必須指定檔案系統,目前常用的檔案系統有ntfs和fat32。一 ntfs 1 概述 ntfs,即nt檔案系統。是微軟在windows nt作業系統上使用的一種檔案系統。ntfs不斷在改進,現在主流的版本是v3.1,來自windows xp。由於windo...