He thong quan ly tap tin NTFS - 1 - MBR



Hệ thống quản lý tập tin NTFS



Mở đầu

NTFS (New Technology File System) là một trong những hệ thống quản lý tập tin được Microsoft phát triển từ năm 1993. Hiện nay đã qua một số phiên bản như: 1.0, 1.1, 1.2, 3.0, và hiện nay (2014) là 3.1.

Tài liệu này sẽ trình bày về hệ thống quản lý tập tin NTFS ở mức đơn giản, để người đọc có những hình dung ban đầu về nó.

Để dễ theo dõi, và tiện cho người đọc tự kiểm tra, tài liệu sẽ vừa trình bày nội dung lý thuyết, vừa minh họa trên dữ liệu được trích ra từ một máy tính đang chạy hệ điều hành Windows 7, có ổ đĩa logic định dạng NTFS.

Phần mềm để đọc đĩa cứng dạng thô (hex) được sử dụng là Norton Disk Editor 2002, phần mềm này có trong đĩa Hiren’s Boot 10.1. Đọc thêm phần “Hướng dẫn đọc đĩa cứng bằng phần mềm Disk Editor” ở phần Phụ lục.

Phần mềm WinHex đọc đĩa cứng tiện hơn nhiều so với Norton Disk Editor (bổ sung 2016)

Tình huống ví dụ được sử dụng để minh họa là:

-         Trong ổ đĩa logic C:\, được định dạng theo NTFS, tạo tập tin Test.txt.

-         Nhập nội dung cho tập tin là một vài dòng văn bản tiếng Việt không dấu.

-         Sử dụng phần mềm Disk Editor đọc đĩa cứng dạng hex, phân tích theo cấu trúc tổ chức của NTFS để làm sao đọc được phần văn bản trong tập tin Test.txt (Hình 1).

Tài liệu sẽ viết dựa trên tình huống này.




Tổ chức của đĩa cứng

Đĩa cứng vật lý thường được chia thành các phân vùng (partition).

Có hai loại phân vùng là: phân vùng chính (primary partititon) và phân vùng mở rộng (extended partition). Hình 2 là một ví dụ về đĩa cứng có hai phân vùng. Phân vùng chính không thể chia nhỏ, được xem như một ổ đĩa logic, trong trường hợp này là ổ đĩa C:\. Phân vùng mở rộng có thể chia tiếp thành các vùng nhỏ hơn gọi là các ổ đĩa logic (D:\, E:\).

Dưới cái nhìn của người sử dụng, đĩa cứng sẽ gồm ba ổ đĩa logic (C:\, D:\, E:\) như trong Hình 2.




Thực tế, thông tin về tổ chức của đĩa cứng đã bị ẩn đi đối với người sử dụng. Để quản lý tổ chức của đĩa cứng có thể sử dụng cấu trúc MBR, EBR. Tất nhiên, ngoài cấu trúc này còn có nhiều cấu trúc khác.

Đĩa cứng tổ chức theo cấu trúc MBR, EBR được thể hiện trong Hình 3.




Master Boot Record

Tổ chức của MBR


Master Boot Record (MBR) là bản ghi khởi động chính. Một đĩa cứng vật lý chỉ có một MBR. MBR là sector vật lý đầu tiên của đĩa cứng, thường gọi là sector 0.

MBR chứa: mã khởi động (code area), bảng thông tin về các phân vùng trên đĩa cứng (partition table)...v.v.

Trong quá trình khởi động, 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 và chạy đoạn mã khởi động trong phân này, để tiếp tục quá trình tìm và nạp hệ điều hành.

Cấu trúc của MBR được minh họa trong bảng sau:

Địa chỉ (dạng offset)
Mô tả
Số byte
Hệ 16
Hệ 8
Hệ 10
0000
0000
0
Vùng mã khởi động
 (Code area)
440
(tối đa 446)
01B8
0670
440
Mô tả đĩa (Optional disk signature)
4
01BC
0674
444
Không sử dụng (0x0000)
2
01BE
0676
446
Bảng thông tin về các phân vùng
(Partition table)
64
01FE
0776
510
55h
Dấu hiệu nhận biết MBR (0xAA55)
2
01FF
0777
511
Aah
Tổng kích thước của MBR
512

Hình 4 là nội dung của MBR dạng hex. Trong đó, vùng màu trắng là Code area, vùng màu đỏ là Optional Disk signature, vùng màu xám không sử dụng, vùng màu vàng là Partition table, và vùng màu xanh là dấu hiệu nhận biết MBR.



Bảng thông tin phân vùng


Bảng thông tin phân vùng (Partition table) là bảng thông tin về các phân vùng trên đĩa cứng. Nó cho biết đĩa cứng vật lý hiện tại được chia thành mấy phân vùng, bắt đầu từ đâu, kết thúc ở đâu, kích thước mỗi phân vùng là bao nhiêu…v.v.

Theo tình huống ví dụ, tập tin Test.txt được tạo ra trong ổ đĩa logic C:\. Vì vậy, cần phải định vị xem ổ đĩa C:\ bắt đầu ở đâu?

Dựa vào cấu trúc của MBR, định vị được vùng Partition table (màu vàng) bắt đầu tại địa chỉ (offset) 0x01BE.

Partition table gồm 64 byte, được chia thành bốn phần bằng nhau, các phần bằng nhau này gọi là các entry. Mỗi entry có kích thước 16 byte, mô tả thông tin về một partition.

-         Entry 1: bắt đầu tại địa chỉ 0x01BE, kết thúc tại 0x01CD.

-         Entry 2: bắt đầu tại địa chỉ 0x01CE, kết thúc tại 0x01DD.

-         Entry 3: bắt đầu tại địa chỉ 0x01DE, kết thúc tại 0x01ED.

-         Entry 4: bắt đầu tại địa chỉ 0x01EE, kết thúc tại 0x01FD.

Cấu trúc của mỗi entry gồm:


Địa chỉ
(offset)
Số
byte
Mô tả
0x00
1
Trạng thái khởi động:
 - 0x80: có khả năng khởi động.
 - 0x00: không có khả năng khởi động.
 - Giá trị khác: không hợp lệ.
0x01
3
Địa chỉ bắt đầu của partition. Sử dụng địa chỉ dạng CHS. Giá trị CHS được mô tả cụ thể trong ba byte dưới đây.
0x01
1
Chỉ số head của CHS, kí hiệu là H.
0x02
1
Chỉ số sector của CHS, được lưu trong sáu bit thấp (bit 5–0); hai bit: thứ 6 và thứ 7 được chuyển qua thành bit thứ 8 và thứ 9 của chỉ số cylinder.
0x03
1
Tám bit thấp của chỉ số cylinder (chỉ số của cylinder gồm 10 bit).
0x04
1
Kiểu của partition (partition type).
0x05
3
Địa chỉ kết thúc của partition. Sử dụng địa chỉ dạng CHS. Giá trị CHS được mô tả cụ thể trong ba byte dưới đây.
0x05
1
Chỉ số head của CHS, kí hiệu là H.
0x06
1
Chỉ số sector của CHS, được lưu trong sáu bit thấp (bit 5–0); hai bit: thứ 6 và thứ 7 được chuyển qua thành bit thứ 8 và thứ 9 của chỉ số cylinder.
0x07
1
Tám bit thấp của chỉ số cylinder (chỉ số của cylinder gồm 10 bit).
0x08
4
Sector bắt đầu của partition (địa chỉ dạng LBA – Logical Block Address).
0x0C
4
Tổng số khối (block, sector) của partition, được lưu trữ theo định dạng little-endian.


Theo tình huống ví dụ, Entry 1 trong partition table là entry mô tả cho ổ đĩa C:\. Ổ đĩa C:\ chính là primary partition. (Hình 5).


Nội dung cụ thể của Entry 1 được thể hiện trong bảng sau:

Địa chỉ
(offset)
Số
byte
Mô tả
0x00
1
“80”: có khả năng khởi động, đã được thiết lập là  active.
0x01
3
“01 01 00”: ba byte địa chỉ bắt đầu - dạng CHS.
0x01
1
1 (head)
0x02
1
1 (sector)
0x03
1
0 (cylinder)
0x04
1
“07”: NTFS
0x05
3
“FE FF FF”: ba byte địa chỉ kết thúc - dạng CHS.
0x05
1
254 (head)
0x06
1
63 (sector)
0x07
1
1023 (cylinder)
0x08
4
“3F 00 00 00”: sector bắt đầu là 63.
0x0C
4
“01 3A 83 02”: tổng số sector của ổ đĩa C:\ là 42154497; tính ra kích thước là ~20GB.
 

---------------------

Tài liệu đã tham khảo

[2] Lê Gia Công, FAT32, Khoa CNTT, Đại học Đà Lạt
[3] 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 - 2 - MBR (tt)