Hệ thống quản lý tập tin NTFS
Một vài lưu ý
Trong phần MBR và EBR, tài liệu đã trình bày các thông tin
cần thiết để có thể định vị được vị trí bắt đầu của một ổ đĩa logic bất kì, dù
là ổ đĩa logic nằm trên primary partition hay extended partition.
Lưu ý: khi cài hệ điều hành Windows 7 trên các đĩa cứng chưa
được chia phân vùng, Windows 7 luôn tạo ra một phân vùng có kích thước 100MB và
đặt tên là system reserved.
Phân vùng system reserved được thiết lập là “active”, phân
vùng này thường không được đặt tên, và ẩn đối với người dùng. Có thể xem phân
vùng này bằng tiện ích Disk Management của Windows hoặc các phần mềm tiện ích
khác. Như vậy, mặc dù người sử dụng thực hiện cài đặt hệ điều hành vào ổ đĩa
C:\, nhưng thực sự ổ đĩa C:\ không nằm trên phân vùng đầu tiên của ổ đĩa cứng,
mà nó đang nằm ở phân vùng thứ hai. Xem minh họa trong Hình 14.
Mỗi ổ đĩa logic có thể sử dụng một hệ thống quản lý tập tin
bất kì, như: NTFS, hoặc FAT32, hoặc Ext2, hoặc Ext3, …v.v. Có thể lựa chọn hệ
thống quản lý tập tin cho ổ đĩa logic bằng chức năng định dạng cấp cao (high
format).
Phần tiếp theo trình bày tổ chức của hệ thống quản lý tập
tin NTFS ở mức đơn giản, đủ để có thể đọc được nội dung của tập tin Test.txt
như trong tình huống ví dụ đã đề cập.
Tổng quan về NTFS
NTFS (New Technology File System) là hệ thống quản lý tập
tin có độ tin cậy cao, có tính bảo mật và hỗ trợ cho các thiết bị lưu trữ có
dung lượng lớn. Được phát triển bởi tập đoàn Microsoft.
NTFS là một hệ thống quản lý tập tin có cấu trúc tổ chức khá
phức tạp, hiện tại (2014) Microsoft chưa công bố tài liệu đặc tả chi tiết về hệ
thống quản lý tập tin này. Tuy nhiên, có nhiều nhóm đã tìm hiểu và công bố các
kết quả của họ về hệ thống NTFS.
NTFS được sử dụng nhiều trong các hệ điều hành Windows, các
bản Unix mã nguồn mở.
Trong hệ thống NTFS, thông tin về cấu trúc tổ chức của hệ
thống quản lý tập tin được lưu trong các tập tin, như các tập tin dữ liệu thông
thường. Trong khi ở các hệ thống quản lý tập tin khác (ví dụ FAT32), các thông
tin về cấu trúc tổ chức của hệ thống thường bị ẩn.
Hệ thống đĩa định dạng theo NTFS không có cơ cấu tổ chức cố
định, toàn bộ hệ thống đĩa được xem như một vùng duy nhất, một sector có thể
được cấp phát cho một tập tin bất kỳ. Trong hệ thống, chỉ có một vùng được cấp
phát cố định, đó là Boot Sector hay còn được gọi là VBR (Volume Boot Record).
Tổ chức của ổ đĩa logic định dạng NTFS được minh họa ở Hình
15.
VBR
VBR (Volume Boot Record) là bản ghi khởi động của ổ đĩa
logic, nó luôn nằm ở vị trí đầu tiên của mỗi ổ đĩa logic. VBR chứa: mã khởi
động, BPB, thông báo lỗi, và một số thông tin khác.
Nhắc lại quá trình khởi động của một hệ điều hành Windows,
sau quá trình POST, máy tính sẽ đọc và thực thi đoạn mã khởi động trong MBR.
Nhiệm vụ của đoạn mã này là xác định xem đĩa cứng đã được chia thành mấy phân
vùng, phân vùng nào đã được thiết lập là phân vùng khởi động chính (active).
Nếu không tìm thấy phân vùng khởi động chính, hệ thống sẽ báo lỗi. Nếu có phân
vùng khởi động chính, hệ thống sẽ tìm kiếm đoạn mã khởi động trong VBR, đoạn mã
trong VBR sẽ được thực thi để triệu gọi chương trình tìm kiếm và khởi động hệ
điều hành (Windows boot loader). Với Windows
XP, boot loader là NTLDR; với Windows 7 về sau là BOOTMGR.
Cấu trúc cụ thể của
VBR được thể hiện ở bảng sau.
Địa chỉ
(offset)
|
Mô tả
|
Kích thước
(byte)
|
0 -> 2
|
Lệnh nhảy
|
3
|
3 -> A
|
Giá trị OEM ID
hoặc tên hệ thống quản lý tập tin
|
8
|
B -> 53
|
BPB
|
73
|
54 -> 18B
|
Mã khởi động
|
312
|
18C -> 1F7
|
Thông báo lỗi
|
108
|
1F8 -> 1FD
|
Message offset
|
6
|
1FE -> 1FF
|
Dấu hiệu kết thúc
VBR
|
2
|
Với hệ thống Windows 7, VBR thực tế gồm 16 sector liên tiếp
nhau. Trong đó, 8 sector đầu tiên và 40 byte của sector thứ 9 là có dữ liệu,
phần còn lại được lấp đầy bằng giá trị 0. Khi khởi động toàn bộ 16 sector này
sẽ được nạp vào bộ nhớ.
Vậy số byte của VBR có dữ liệu là: 8 x 512 + 40 = 4 136 byte.
Để xác định vị trí của VBR trên ổ đĩa C:\ cần lưu ý hai
trường hợp sau:
-
Trường hợp 1: với một đĩa chưa được chia sẵn
phân vùng, khi cài đặt hệ điều hành (ví dụ Windows 7), hệ thống sẽ dành riêng
một vùng có kích thước 2 048 sector ở phần đầu đĩa cứng vật lý để chứa MBR và
để dự trữ. Ngoài ra hệ thống cũng tạo ra một phân vùng có kích thước 100MB tên
là System Reversed.
Để xác định vị
trí của VBR trên ổ đĩa C:\, cần đổi 100MB ra sector:
100MB = (100 x 1024 x 1024)/512 =
204 800 (sector)
Cộng với 2 048 sector ở phần đầu:
204 800 + 2 048 = 206 848 (sector).
Như vậy, VBR của ổ đĩa C:\ sẽ bắt
đầu tại sector 206 848.
-
Trường
hợp 2: với đĩa cứng đã được chia phân vùng bằng tiện ích Partition Magic hoặc
phần mềm chia phân vùng bất kì, VBR sẽ bắt đầu tại sector 63.
Trong cấu
trúc của VBR có hai vùng dữ liệu quan trong là: đoạn mã khởi động và BPB.
BPB
BPB (Bios
Parameter Block) bắt đầu tại offset 0xB tới offset 0x53 trong VBR, có kích
thước 73 byte. BPB chứa một số thông tin mô tả về tổ chức của một ổ đĩa logic
và hệ thống quản lý tập tin. Ví dụ: kích thước của một sector, số sector trong
một cluster, tổng số sector trong ổ đĩa logic, vị trí bắt đầu của vùng MFT…v.v.
Trong quá
trình khởi động BPB được nạp vào RAM tại địa chỉ 0x7C0B đến 0x7C53.
Cấu trúc
các trường của BPB được minh họa trong bảng sau.
Địa chỉ
(offset)
|
Kích thước
(byte)
|
Mô tả
|
0Bh
|
2
|
Kích thước một
sector. Đơn vị tính là byte.
|
0Dh
|
1
|
Số sector trong
một cluster.
|
0Eh
|
2
|
Chưa sử dụng.
|
10h
|
1
|
Với hệ thống NTFS
luôn mang giá trị 0.
|
11h
|
2
|
Với hệ thống NTFS
luôn mang giá trị 0.
|
13h
|
2
|
Luôn mang giá trị
0, hệ thống NTFS không sử dụng tới trường này.
|
15h
|
1
|
Mã xác định loại
đĩa.
|
16h
|
2
|
Với hệ thống NTFS
luôn mang giá trị 0.
|
18h
|
2
|
Số sector/track.
|
1Ah
|
2
|
Số mặt đĩa (head
hay side).
|
1Ch
|
4
|
Sector bắt đầu
của ổ đĩa logic.
|
20h
|
4
|
Luôn mang giá trị
0, hệ thống NTFS không sử dụng tới trường này.
|
24h
|
4
|
Hệ thống NTFS
luôn thiết lập giá trị này là “80008000”.
|
28h
|
8
|
Số sector của ổ đĩa logic.
|
30h
|
8
|
Cluster bắt đầu
của MFT.
|
38h
|
8
|
Cluster bắt đầu của MFT dự phòng (MFTMirror).
|
40h
|
1
|
Kích thước của một
bản ghi trong MFT (MFT entry), đơn vị tính là byte.
|
41h
|
3
|
Luôn mang giá trị
0, hệ thống NTFS không sử dụng tới trường này.
|
44h
|
1
|
Số cluster của Index Buffer.
|
45h
|
3
|
Luôn mang giá trị
0, hệ thống NTFS không sử dụng tới trường này.
|
48h
|
8
|
Số seri của ổ đĩa (volume serial number).
|
50h
|
4
|
Không được sử
dụng bởi NTFS.
|
Đọc VBR và BPB
Hình 16 là
tóm tắt các bước để đọc được nội dung BPB. Qua
Hình 16, người đọc sẽ dễ dàng hình dung về cấu trúc tổ chức của đĩa cứng đã
được trình bày từ đầu tài liệu.
Các bước để
đọc BPB:
-
Đọc
sector 0 để có nội dung của MBR.
-
Trong
MBR, tìm tới địa chỉ (offset) 0x01BE, đây là nội dung của partition table.
-
Giả
sử entry số 1 mô tả thông tin cho ổ đĩa C:\, dựa vào entry này tìm sector bắt
đầu của ổ đĩa C:\, đây cũng là địa chỉ bắt đầu của VBR.
-
Trong
VBR, tìm tới địa chỉ (offset) 0xB, đây là nội dung của BPB, gồm 73 byte, kết
thúc tại 0x53.
-----------------------------
Tài liệu đã tham khảo:
Brian Carrie, File System Forensic Analysis, Addison Wesley Professional, 2005
-------------------Cập nhật 2014/5/28
-------------------
Đọc thêm
He thong quan ly tap tin NTFS - 5 - VBR - BPB (tt)
-----
Bạn muốn tự học HTML bài bản? Xem thêm