Directory (thư mục)
Directory là cấu trúc dữ liệu tương tự như Root Directory,
nó cũng chứa các Directory Entry.
Trong khi Root Directory thường nằm ở phần đầu của vùng
Data, thì Directory có thể nằm ở vị trí bất kì trong vùng Data.
Directory thực tế là một tập tin, tập tin này chứa các cấu
trúc dữ liệu (Directory Entry) mô tả thông tin về các tập tin hay thư mục con của
Directory.
Trong một ổ đĩa logic chỉ có một Root Directory, nhưng có
nhiều Directory.
Root Directory là đầu mối để hệ thống truy cập tới các tập
tin, các Directory con nằm trong thư mục gốc của ổ đĩa. Các Directory lại là đầu
mối để đi đến các tập tin hoặc Directory con trong nó.
Directory trong hệ thống FAT32 được tổ chức theo cấu trúc
cây, trong đó, Root Directory là nút gốc.
Hình sau minh họa về cấu trúc của Directory.
Directory Entry
Directory Entry có kích thước 32 byte. Mỗi Directory Entry sẽ
mô tả thông tin về một tập tin (thư mục), gồm: tên tập tin, kích thước, địa chỉ
bắt đầu của vùng nội dung và một số thông tin khác.
Các trường của một Directory Entry được minh họa trong bảng
dưới đây:
Byte thứ
|
Mô tả
|
0-0
|
Kí tự đầu tiên của
tên tập tin, hoặc trạng thái cấp phát (0xE5 hoặc 0x00: nếu chưa được cấp
phát)
|
1-10
|
Kí tự thứ 2 đến
11 của tên tập tin
|
11-11
|
Byte thuộc tính
(xem bảng về Byte thuộc tính)
|
12-12
|
Chưa sử dụng
|
13-13
|
Thời gian tạo tập
tin (mili giây)
|
14-15
|
Thời gian tạo tập
tin (giờ:phút:giây)
|
16-17
|
Ngày tạo tập tin
|
18-19
|
Thời gian truy cập
mới nhất (gồm thao tác đọc/ ghi), nếu là ghi thì giá trị của trường này sẽ giống
với trường WrtTime.
|
20-21
|
Phần byte cao
(High word) của cluster bắt đầu.
|
22-23
|
Thời gian ghi tập
tin mới nhất. Chú ý: tạo tập tin cũng được coi là ghi tập tin (giờ:phút:giây).
|
24-25
|
Ngày ghi tập tin
mới nhất. Chú ý: tạo tập tin cũng được coi là ghi tập tin. Kí hiệu WrtTime.
|
26-27
|
Phần byte thấp
(Low word) của cluster bắt đầu.
|
28-31
|
Kích thước của tập
tin, đơn vị tính là byte. (nếu là thư mục, giá trị này là 0).
|
Chú ý: nếu tên của tập tin có kí tự đầu tiên là 0xE5, hệ thống
sẽ thay thế giá trị này bằng 0x05. Nếu tên tập tin không sử dụng hết 8 byte,
các byte không dùng sẽ được chèn bằng khoảng trắng (0x20).
Trường lưu kích thước của tập tin là bốn byte, do vậy kích
thước tối đa của tập tin là 4GB. Với Entry là thư mục, trường này sẽ có giá trị
là 0.
Các trường liên quan đến ngày tháng năm, gồm hai byte, được
chia làm ba phần: năm bit thấp chứa Ngày (giá trị hợp lệ từ 1–31), bit 5–8 chứa
Tháng (giá trị hợp lệ từ 1–12), bit 9-15 chứa Năm (giá trị hợp lệ 0-127), giá
trị Năm này cộng với 1980 sẽ ra giá trị thật của Năm. Ví dụ về Ngày:Tháng:Năm
được minh họa trong hình sau:
Ví dụ, biểu diễn ngày 10/4/2013.
Các trường liên quan đến thời gian, gồm 16 bit, được chia
làm ba phần: năm bit thấp là Giây, hệ thống đếm từng hai giây một, nên giá trị
hợp lệ là 0-29, và giá trị giây thực tế là 0-58. Sáu bit kế tiếp là Phút, giá
trị hợp lệ là 0-59. Năm bit cuối cùng là Giờ, giá trị hợp lệ là 0-23.
Ví dụ về Giờ:Phút:Giây được minh họa trong hình sau:
Giá trị cụ thể các trường trong Byte thuộc tính được thể hiện
trong bảng dưới đây.
Giá trị
|
Mô tả
|
0000 0001 (0x01)
|
READ_ONLY: chỉ đọc
|
0000 0010 (0x02)
|
HIDDEN: ẩn
|
0000 0100 (0x04)
|
SYSTEM: hệ thống
|
0000 1000 (0x08)
|
VOLUME_ID: tên ổ
đĩa
|
0001 0000 (0x10)
|
DIRECTORY: thư mục
|
0010 0000 (0x20)
|
ARCHIVE: lưu trữ
|
0000 1111 (0x0f)
|
LONG_NAME: tên tập
tin dài
|
Hai bit cao của Byte thuộc tính là 2 bit dự trữ, được thiết
lập giá trị 0.
Các Entry có thiết lập thuộc tính LONG_NAME sẽ có cấu trúc dữ
liệu khác để thể hiện tên tập tin dài.
Ví dụ về Directory Entry, xét Entry số hai trong Root
Directory.
Nội dung của Entry số hai:
Byte thứ
|
Mô tả
|
0-0
|
W
|
1-10
|
INDOWS
|
11-11
|
0x10 => thư mục
|
12-12
|
0
|
13-13
|
0x8E
|
14-15
|
0x5228 => giờ tạo: 10h:17:17 AM
|
16-17
|
0x425C => ngày
tạo: 28/2/2013
|
18-19
|
0x425C
|
20-21
|
0x0000 => byte
cao của cluster bắt đầu
|
22-23
|
0x5229
|
24-25
|
0x425C
|
26-27
|
0x5003 => byte
thấp của cluster bắt đầu
|
28-31
|
0x00000000 =>
không thể hiện dung lượng
|
LGC.
-------------------------------------------Cập nhật 23/4/2013
------------------------------
Tham khảo:
[3] FAT32_Hardware White Paper
[5] Brian Carrie, File
System Forensic Analysis, Addison Wesley Professional, 2005