He thong quan ly tap tin NTFS - 4 - VBR - BPB

(tiếp theo của He thong quan ly tap tin NTFS - 3 - EBR)





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