Đĩa cứng - 9 - Directory Entry

(Tiếp theo của đĩa cứng 8)


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