Tải bản đầy đủ (.pdf) (53 trang)

Khảo sát hệ thống NTFS

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (4.71 MB, 53 trang )

Khảo sát

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

NTFS

Lê Gia Công


NTFS

Lê Gia Công

Khảo sát

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

NTFS

Lê Gia Công

Đà Lạt, 29/5/2014
Trang 2


NTFS

Lê Gia Công

Mục lục
Mở đầu .......................................................................................................................... 4


Tổ chức của đĩa cứng ................................................................................................... 5
Master Boot Record................................................................................................................ 5
Tổ chức của MBR................................................................................................................. 5
Bảng thông tin phân vùng..................................................................................................... 7
Địa chỉ dạng CHS ................................................................................................................. 9
Địa chỉ dạng LBA ............................................................................................................... 12
Kiểu của phân vùng ............................................................................................................ 12
Lưu dữ liệu theo định dạng little-endian ............................................................................ 13
Extended Boot Record (EBR).............................................................................................. 14
Tổ chức của EBR ................................................................................................................ 14
Ví dụ về EBR ...................................................................................................................... 16

Hệ thống quản lý tập tin NTFS.................................................................................20
Một vài lưu ý ...................................................................................................................... 20
Tổng quan về NTFS ........................................................................................................... 21
VBR .................................................................................................................................... 21
BPB ..................................................................................................................................... 22
Đọc VBR và BPB ............................................................................................................... 23
MFT .................................................................................................................................... 27
MFT entry ........................................................................................................................... 29
Attribute .............................................................................................................................. 33
Attribute $STANDARD_INFORMATION ....................................................................... 38
Attribute $FILE_NAME .................................................................................................... 42
Attribute $DATA ................................................................................................................ 46

Phụ lục .........................................................................................................................49
Hướng dẫn đọc đĩa cứng bằng phần mềm Disk Editor ...................................................... 49

Tài liệu tham khảo .....................................................................................................53


Trang 3


NTFS

Lê Gia Công

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.
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.

Hình 1. Tạo một tập tin văn bản trong ổ đĩa C:\

Trang 4


NTFS

Lê Gia Công

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.

C:\

D:\

E:\
Extended partition


Primary partition

Hình 2. Đĩa cứng gồm hai partition, ba ổ đĩa logic
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.

EBR1

MBR

C:\

EBR2

D:\

E:\

Hình 3. Tổ chức đĩa cứng theo MBR, EBR
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.

Trang 5



NTFS

Lê Gia Công

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)
Hệ 16 Hệ 8
0000

0000

Mô tả

Hệ 10
0

Vùng mã khởi động

Số byte

(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

64

(Partition table)
01FE 0776


510

55h

01FF

511

Aah

0777

Dấu hiệu nhận biết MBR
(0xAA55)

Tổng kích thước của MBR

2

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.

Trang 6


NTFS


Lê Gia Công

Physical Sector: Absolute Sector 0
00000000: 33 C0 8E D0 BC 00 7C 8E
00000010: 06 B9 00 02 FC F3 A4 50
00000020: BD BE 07 80 7E 00 00 7C
00000030: E2 F1 CD 18 88 56 00 55
00000040: B4 41 BB AA 55 CD 13 5D
00000050: F7 C1 01 00 74 03 FE 46
00000060: 26 66 68 00 00 00 00 66
00000070: 7C 68 01 00 68 10 00 B4
00000080: 9F 83 C4 10 9E EB 14 B8
00000090: 8A 76 01 8A 4E 02 8A 6E
000000A0: 4E 11 75 0C 80 7E 00 80
000000B0: 55 32 E4 8A 56 00 CD 13
000000C0: AA 75 6E FF 76 00 E8 8D
000000D0: E8 83 00 B0 DF E6 60 E8
000000E0: 00 FB B8 00 BB CD 1A 66
000000F0: 43 50 41 75 32 81 F9 02
00000100: 00 66 68 00 02 00 00 66
00000110: 53 66 55 66 68 00 00 00
00000120: 61 68 00 00 07 CD 1A 5A
00000130: 18 A0 B7 07 EB 08 A0 B6
00000140: 05 00 07 8B F0 AC 3C 00
00000150: 10 EB F2 F4 EB FD 2B C9
00000160: 24 02 C3 49 6E 76 61 6C
00000170: 74 69 6F 6E 20 74 61 62
00000180: 20 6C 6F 61 64 69 6E 67
00000190: 6E 67 20 73 79 73 74 65

000001A0: 67 20 6F 70 65 72 61 74
000001B0: 65 6D 00 00 00 63 7B 9A
000001C0: 01 00 07 FE FF FF 3F 00
000001D0: C1 FF 0F FE FF FF 40 3A
000001E0: 00 00 00 00 00 00 00 00
000001F0: 00 00 00 00 00 00 00 00

-

C0
68
0B
C6
72
10
FF
42
01
03
0F
5D
00
7C
23
01
68
00
32
07
74

E4
69
6C
20
6D
69
3D
00
83
00
00

8E
1C
0F
46
0F
66
76
8A
02
CD
84
EB
75
00
C0
72
08
66

F6
EB
09
64
64
65
6F
00
6E
74
00
02
00
00

D8
06
85
11
81
60
08
56
BB
13
8A
9E
17
B0
75

2C
00
68
EA
03
BB
EB
20
00
70
4D
67
76
01
BD
00
00

BE
CB
0E
05
FB
80
68
00
00
66
00
81

FA
FF
3B
66
00
00
00
A0
07
00
70
45
65
69
20
08
3A
C5
00
00

00
FB
01
C6
55
7E
00
8B
7C

61
B2
3E
B0
E6
66
68
00
7C
7C
B5
00
24
61
72
72
73
73
00
83
7C
00
00

7C
B9
83
46
AA
10

00
F4
8A
73
80
FE
D1
64
81
07
66
00
00
07
B4
02
72
72
61
73
79
00
02
00
00
00

BF
04
C5

10
75
00
68
CD
56
1C
EB
7D
E6
E8
FB
BB
53
00
00
32
0E
E0
74
6F
74
69
73
80
00
00
00
55


00
00
10
00
09
74
00
13
00
FE
84
55
64
75
54
00
66
66
CD
E4
CD
F8
69
72
69
6E
74
01
00
00

00
AA

3.....|......|..
.......Ph.......
....~..|........
.....V.U.F...F..
.A..U..]r...U.u.
....t..F.f`.~..t
&fh....f.v.h..h.
|h..h...B.V.....
............|.V.
.v..N..n...fas..
N.u..~..........
U2..V...]...>.}U
.un.v....u.....d
......`.|....d.u
.......f#.u;f..T
CPAu2....r,fh...
.fh....fh....fSf
SfUfh....fh.|..f
ah.....Z2...|...
..............2.
......<.t.......
......+..d..$...
$..Invalid parti
tion table.Error
loading operati
ng system.Missin
g operating syst

em...c{.=tv.....
......?....:....
......@:....|...
................
..............U.

Hình 4. 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.
Trang 7


NTFS


Lê Gia Công
-

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ỉ Số
(offset) Byte
0x00 1
Trạng thái khởi động:

Mô tả

- 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

0x01
0x02

Đị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.

1Chỉ số head của CHS, kí hiệu là H.
1Chỉ 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.
1Tám bit thấp của chỉ số cylinder (chỉ số của cylinder
gồm 10 bit).

0x03
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.

Trang 8


NTFS

Lê Gia Công

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).

Physical Sector: Absolute Sector 0
...
000001B0: 65 6D 00 00 00 63 7B 9A
000001C0: 01 00 07 FE FF FF 3F 00
000001D0: C1 FF 0F FE FF FF 40 3A
000001E0: 00 00 00 00 00 00 00 00
000001F0: 00 00 00 00 00 00 00 00

-

3D
00
83
00
00

74
00
02
00
00

76
01
BD
00
00

08
3A

C5
00
00

00
83
7C
00
00

00
02
00
00
00

80
00
00
00
55

01
00
00
00
AA

em...c{.=tv.....
......?....:....

......@:....|...
................
..............U.

Hình 5. Entry 1 (phần chữ đậm)
Nội dung cụ thể của Entry 1 được thể hiện trong bảng sau:
Địa chỉ
Số
Mô tả
(offset) Byte
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
11 (head)
0x02
11 (sector)
0x03
10 (cylinder)
0x04
1
“07”: NTFS
0x05
3
“FE FF FF”: ba byte địa chỉ kết thúc - dạng CHS.
0x05

1254 (head)
0x06
163 (sector)
0x07
11023 (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.
Địa chỉ dạng CHS

Đĩa cứng thường sử dụng hai phương pháp đánh địa chỉ: CHS và LBA. Phương pháp CHS
được sử dụng cho các đĩa theo chuẩn IDE. Trong khi phương pháp LBA được sử dụng cho các
đĩa theo chuẩn IDE, EIDE, và SCSI.
Để hiểu về địa chỉ dạng CHS, trước hết cần biết một số khái niệm liên quan đến tổ chức vật lý
và logic của đĩa cứng.
-

1

Track1: là một vòng tròn đồng tâm của các bit từ (magnetic bit).

/>
Trang 9


NTFS


Lê Gia Công
-

Sector: là các đoạn bit bằng nhau trên track. Mỗi sector thường có kích thước là 512
byte, có một định danh (ID) riêng. Định danh của sector là một số kiểu nguyên,
thường gọi là chỉ số của sector. Cấu trúc của một sector gồm: header, mã sửa lỗi
(error correction code – ECC) và phần chứa dữ liệu. Hình 6 2 minh họa về track và
sector.

-

Cylinder: là tập hợp các track có cùng bán kính trên các mặt đĩa (các vòng tròn màu
đỏ trong Hình 73 là một cylinder).

-

Head: là đầu từ đọc/ghi, số head tương ứng với số mặt đĩa.

-

Platter: phiến đĩa, là những phiến tròn làm bằng kim loại, thủy tinh, hoặc gốm…v.v.
Trên bề mặt được phủ một lớp chất nhạy từ tính. Mỗi phiến đĩa thường được sử
dụng cả hai mặt.

Hình 6. Ví dụ về track và sector
CHS là dạng viết rút gọn của Cylinder-Head-Sector, là một phương pháp đánh địa chỉ cho các
khối dữ liệu trên đĩa cứng. Với ba giá trị cylinder, head và sector sẽ xác định được vị trí duy
nhất của các khối dữ liệu, khối dữ liệu ở đây có thể hiểu là sector.
Địa chỉ dạng CHS gồm ba byte. Trong đó, H (head) gồm tám bit của byte đầu tiên, S (sector)

gồm sáu bit thấp của byte thứ hai, cuối cùng C (cylinder) gồm tám bit của byte thứ ba và hai
bit cao của byte thứ hai (Hình 84).

2

/>
3

/>
4

/>
Trang 10


NTFS

Lê Gia Công

Các head

3 platter

Hình 7. Ví dụ về platter, head, track, sector, và cylinder (các track màu đỏ
là một cylinder)

Hình 8: Định dạng của ba byte CHS
Từ Hình 8, với ba byte dữ liệu của CHS (byte 1, 2, 3), tính ra giá trị hệ 10 là: H = 254, S = 63
và C = 723.
Hạn chế của CHS là chỉ có thể đánh địa chỉ cho đĩa có dung lượng không vượt quá 504MB. Cụ

thể, số cylinder không vượt quá 1024, số head không vượt quá 16, số sector trên một track là
63, kích thước của một sector là 512 byte, thì ta có:
1024 x 16 x 63 x 512 = 504 MB.
Trang 11


NTFS

Lê Gia Công

Để khắc phục hạn chế này, một phương pháp đánh địa chỉ khác đã được giới thiệu là ECHS
(Extended CHS). ECHS là cải tiến của phương pháp CHS. Tuy nhiên, phương pháp này cũng
chỉ đánh được địa chỉ cho đĩa có dung lượng không vượt quá 7560 MB.
Hiện nay (năm 2014), phương pháp đánh địa chỉ được sử dụng rộng rãi là phương pháp LBA.
Địa chỉ dạng LBA

LBA (logical block addressing) là một hệ thống đánh địa chỉ, được sử dụng để đánh địa chỉ
cho các khối dữ liệu (block hay sector) trên các thiết bị lưu trữ của máy tính, thường là các
thiết bị lưu trữ thứ cấp, ví dụ: đĩa cứng.
LBA là hệ thống đánh địa chỉ tuyến tính đơn giản, các khối dữ liệu được đánh dấu bằng các số
nguyên. Khối đầu tiên mang giá trị 0, các khối tiếp theo mang giá trị 1, 2, 3 ...v.v.
Đĩa cứng theo chuẩn IDE sử dụng địa chỉ LBA 22-bit, chuẩn ATA-1 (1994) là 28-bit, chuẩn
ATA-6 (2003) là 48-bit. Hầu hết các ổ đĩa cứng sản xuất sau năm 1996 sử dụng hệ thống đánh
địa chỉ LBA.
Kiểu của phân vùng

Để dễ quản lý và đảm bảo an toàn dữ liệu, đĩa cứng vật lý thường được chia thành các đơn vị
lưu trữ logic nhỏ hơn gọi là các phân vùng (partition), trong mỗi partition lại có thể được chia
nhỏ hơn nữa thành các ổ đĩa logic (logical drive).
Các hệ thống máy tính chạy hệ điều hành DOS, Windows, Linux và các hệ thống tương thích

với IBM PC khác, thường sử dụng hai loại partition là: primary partition và extended partition.
Sau đây là một số tùy chọn liên quan đến việc chia đĩa cứng dựa trên primary partition và
extended partition:
-

Có thể tạo nhiều nhất bốn primary partition, hoặc

-

Ba primary partition + một extended partition, hoặc

-

Hai primary partition + một extended partition, hoặc

-

Một primary partition + một extended partition (hay được chọn).

Các thông tin về chia partition này được lưu trong các entry 16-byte tại partition table của
MBR.
Trong mỗi entry 16-byte, hệ thống sử dụng một trường có kích thước một byte, để lưu một giá
trị là một số nguyên, giá trị này cho biết kiểu của partition. Giá trị này được thống nhất và
được dùng như một “mã nhận diện”. Ví dụ:
-

0x05: là extended partition.

-


0x07: là ổ đĩa logic, định dạng theo NTFS.

-

0x0B: là ổ đĩa logic, định dạng theo FAT32.

Tham khảo thêm các mã khác trên Internet.

Trang 12


NTFS

Lê Gia Công

Đoạn mã khởi động dựa vào “mã nhận diện” này để xác định xem nó có thể truy cập tới
partition đó hay không.
Ngoài ra, mã này còn là cơ sở để hệ thống thực hiện các thao tác khác, như ẩn partition không
cho hệ điều hành thấy. Mã này có thể bị thay đổi bởi phần mềm tiện ích.
Lưu dữ liệu theo định dạng little-endian

Little-endian là một trong hai cách thức lưu dữ liệu trên đĩa cứng, loại khác là big-endian.
Để dễ hiểu, xét việc lưu dữ liệu xuống đĩa cứng theo đơn vị byte. Giả sử, cần lưu một số có giá
trị không vượt quá khả năng biểu diễn của một byte, ví dụ, số 2A hệ 16. Số 2A sẽ được lưu
xuống một byte nào đó trên đĩa cứng theo đúng định dạng 2A, tức là: số 2 nằm ở phần bit cao
(bốn bit phía trái của byte) và số A nằm ở phần bit thấp (bốn bit phía phải của byte).
Tuy nhiên, nếu cần lưu một số có giá trị từ hai byte trở lên, hệ thống sẽ sử dụng kiểu lưu dữ
liệu little-endian.
Các byte trên đĩa cứng được ngầm hiểu là đã được đánh số thứ tự theo chiều tăng dần, tính từ
đầu đĩa.

Đặc điểm của kiểu little-endian: nội dung trên byte thấp của biến, hoặc thanh ghi sẽ được lưu
vào byte có số thứ tự nhỏ trên đĩa cứng, và nội dung trên byte cao của biến, hoặc thanh ghi sẽ
được lưu vào byte có số thứ tự lớn trên đĩa cứng.
Ví dụ:
-

Một ổ đĩa logic có kích thước là 3992 MB, hệ thống đĩa cứng sử dụng một trường bốn
byte (32-bit) để lưu kích thước này.

-

Vì dữ liệu lưu trên đĩa cứng là hệ 16, và kích thước đĩa được tính theo đơn vị là sector,
nên cần đổi 3992 MB sang số sector ở hệ 16 trước khi lưu. Giả sử một sector có kích
thước 512 byte, vậy 3992 MB tương đương 8 177 085 sector, đổi sang hệ 16 là
0x7CC5BD. Để lấp đầy bốn byte, cần thêm giá trị 0 vào byte đầu tiên, kích thước đĩa
khi đó là 0x007CC5BD.

-

Bây giờ cần lưu số 32-bit hệ-16 này vào đĩa cứng. Cách lưu được thể hiện trong Hình 9.

Trang 13


NTFS

Lê Gia Công

Physical Sector: Absolute Sector 0
...

...
000001A0: 67 20 6F 70 65 72 61 74
000001B0: 65 6D 00 00 00 63 7B 9A
000001C0: 01 00 07 FE FF FF 3F 00
000001D0: C1 FF 0F FE FF FF 40 3A
000001E0: 00 00 00 00 00 00 00 00
000001F0: 00 00 00 00 00 00 00 00

-

69
3D
00
83
00
00

6E
74
00
02
00
00

67 20 73 79 73 74
g operating syst
76 08 00 00 80 01
em...c{.=tv.....
01 3A 83 02 00 00
......?....:....

BD C5 7C 00 00 00 ......@:....|...
00 00 00 00 00 00
................
00 00 00 00 55 AA
..............U.

00 7C C5 BD

Hình 9. Ví dụ về lưu dữ liệu kiểu little-endian
Extended Boot Record (EBR)
Tổ chức của EBR

Quay trở lại tình huống ví dụ, do tập tin Test.txt được tạo trong ổ đĩa logic C:\ nên có thể
không cần thông tin về EBR vẫn đọc được nội dung của tập tin. Tuy nhiên, nếu tập tin Test.txt
được tạo trong ổ đĩa D:\ hoặc E:\ thì việc đọc nội dung của tập tin sẽ phức tạp hơn. Vì ổ đĩa D:\
và E:\ nằm trên extended partition nên cần có thông tin về tổ chức của EBR mới có thể tìm và
đọc được nội dung của Test.txt.
Quan sát hình dưới đây.

EBR1

MBR

C:\

EBR2

D:\

E:\


Hình 10. Tổ chức đĩa cứng theo MBR, EBR
Khi chia ổ đĩa, nếu có tạo extended partition, hệ thống sẽ sử dụng một entry của partition table
trong MBR để chứa thông tin mô tả cho extended partition. Thông tin của entry này được xem
là đầu mối để đi đến các ổ đĩa logic còn lại trên đĩa (không tính ổ đĩa C:\), và đi đến các EBR.
Ví dụ, entry có đánh dấu sao trong Hình 10 là đầu mối để đi đến EBR1, từ EBR1 sẽ đến được
ổ đĩa logic D:\, và từ EBR1 cũng sẽ có đầu mối để đi đến EBR2, từ EBR2 sẽ đến được ổ đĩa
logic E:\...v.v.

Trang 14


NTFS

Lê Gia Công

EBR là sector nằm ngay phía trước của mỗi ổ đĩa logic trong extended partition (phân vùng mở
rộng). EBR gồm 512 byte. Dựa vào EBR, hệ thống sẽ có thông tin để đi đến các ổ đĩa logic kế
tiếp. Như vậy, mỗi ổ đĩa logic được tạo trong extended partition sẽ có một EBR được tạo ra.
Tổ chức của EBR được mô tả trong bảng dưới đây.
Địa chỉ (offset)
Hệ 16 Hệ 8

Mô tả

Hệ 10

0000

0000


0

01BE

0676

446

Số byte

Không sử dụng

446

Bảng thông tin về các phân vùng

64

(Partition table)
01FE

0776

510

55h

01FF


0777

511

AAh

Dấu hiệu nhận biết EBR
(0xAA55)

Tổng kích thước:

2

512

Thông tin quan trọng trong EBR là Bảng thông tin về các phân vùng (partititon table), bắt đầu
tại địa chỉ (offset) 0x01BE, gồm 64 byte.
Tương tự như trong MBR, partitition table tại EBR cũng được chia thành bốn entry, trong đó:
-

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.

Tuy nhiên, EBR chỉ sử dụng hai entry là Entry 1 và Entry 2. Entry 1 mô tả thông tin về ổ đĩa
logic nằm ngay sau EBR này. Entry 2 chứa thông tin mô tả để tới được EBR kế tiếp, trong đó
có thông tin về vị trí bắt đầu. Trong trường hợp là EBR cuối cùng thì chỉ có Entry 1 được sử
dụng, các entry còn lại chứa giá trị 0.
Mỗi entry có kích thước 16 byte, gồm các trường được mô tả trong bảng dưới đây.
Địa chỉ Số
(offset) byte
0x00 1
Trạng thái khởi động:

Mô tả

- 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ệ

Trang 15


NTFS

Lê Gia Công
0x01

3


0x01
0x02

Địa chỉ bắt đầu của ổ đĩa logic hoặc EBR kế tiếp. Sử
dụng địa chỉ dạng CHS. Giá trị CHS được mô tả cụ thể
trong ba byte dưới đây.
1Chỉ số head của CHS, kí hiệu là H.
1Chỉ 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.
1Tám bit thấp của chỉ số cylinder (chỉ số của cylinder
gồm 10 bit).

0x03
0x04

1

Kiểu định dạng của ổ đĩa logic (FAT32, NTFS…v.v)
hoặc kiểu của partition (partition type).

0x05

3

Địa chỉ kết thúc của ổ đĩa logic hoặc vùng đĩa chứa
EBR kế tiếp. Sử dụng địa chỉ dạng CHS. Giá trị CHS
được mô tả cụ thể trong 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 ổ đĩa logic hoặc EBR kế tiếp. Lưu ý,
địa chỉ này được tính từ vị trí bắt đầu của extended
partition, chứ không tính từ đầu đĩa cứng vật lý. (sector
được đánh số theo dạng LBA – Logical Block
Address). Được lưu theo định dạng little-endian.

0x0C

4

Tổng số khối (block, sector) của ổ đĩa logic, hoặc vùng
đĩa chứa EBR kế tiếp. Được lưu theo định dạng littleendian.


Ví dụ về EBR

Quan sát một phần MBR của đĩa cứng trong Hình 11.

Trang 16


NTFS

Lê Gia Công

...
00000180:
00000190:
000001A0:
000001B0:
000001C0:
000001D0:
000001E0:
000001F0:

00
00
00
00
01
41
81
00


00
00
00
00
00
FE
FD
00

00
00
00
00
0B
17
0F
00

00
00
00
00
FE
FE
FE
00

00
00

00
00
7F
BF
FF
00

00
00
00
2C
FD
FC
FF
00

00
00
00
44
3F
7E
BD
00

00
00
00
63
00

04
86
00

-

00
00
00
B9
00
7D
BB
00

00
00
00
8F
00
00
00
00

00
00
00
B9
3F
3F

57
00

00
00
00
8F
04
82
64
00

00
00
00
00
7D
3E
44
00

00
00
00
00
00
00
00
00


00
00
00
80
00
00
00
55

00
00
00
01
00
00
00
AA

................
................
................
.....,Dc........
....  .?...?.}...
A.....~.}.?.>...
..........WdD...
..............U.

Hình 11. Entry mô tả thông tin cho extended partition (phần tô vàng)
Xét entry thứ ba của partition table, bắt đầu tại địa chỉ 0x01DE, kết thúc tại 0x01ED (phần tô
vàng), có trường partition type mang giá trị 0x0F, giá trị này cho biết đây là entry chứa thông

tin mô tả extended partition (đọc thêm về Kiểu của phân vùng).
Các trường cụ thể của entry thứ ba được mô tả trong bảng bên dưới.
Offset
0x00 1
0x01 3
0x01
0x02
0x03
0x04 1
0x05 3
0x05
0x06
0x07
0x08 4
0x0C 4

Số
byte

Mô tả
“00”: không có khả năng khởi động.
“00 81 FD”: ba byte địa chỉ bắt đầu dạng CHS.
1 0 (head)
1 1 (sector)
1 765 (cylinder)
0x0F: extended partition.
“FE FE FF”: ba byte địa chỉ kết thúc dạng CHS.
1 254(head)
1 63(sector)
1 1023(cylinder)

“BD 86 BB 00”: sector bắt đầu của extended partition là
12289725.
“57 64 44 00”: tổng số sector của extended partition là
4482135; tính ra kích thước: ~2,3GB.

Từ thông tin mô tả về extended partition ở trên, có hai thông tin quan trọng là: sector bắt đầu
của extended partition là 12 289 725 và kích thước của extended partition là ~2,3GB.
Vị trí bắt đầu của extended partition cũng là vị trí của EBR đầu tiên trên đĩa cứng, tạm gọi là
EBR1. Nội dung của EBR1 nằm tại sector 12 289 725.
Hình 12 minh họa một phần của sector 12 289 725, trong đó có nội dung của partition table tại
EBR1.

Trang 17


NTFS

Lê Gia Công

Physical Sector: Absolute Sector 12,289,725
00000000: 00 00 00 00 00 00 00 00 - 00 00 00
00000010: 00 00 00 00 00 00 00 00 - 00 00 00
.....
.....
.....
000001B0: 00 00 00 00 00 00 00 00 - 00 00 00
000001C0: 81 FD 0B FE FF 7C 3F 00 - 00 00 41
000001D0: C1 7D 05 FE FF FF 80 60 - 1F 00 D7
000001E0: 00 00 00 00 00 00 00 00 - 00 00 00
000001F0: 00 00 00 00 00 00 00 00 - 00 00 00


00 00 00 00 00
00 00 00 00 00

................
................

00
60
03
00
00

................
.....|?...A`...
.}.....`...%...
................
..............U.

00
1F
25
00
00

00
00
00
00
00


00
00
00
00
55

01
00
00
00
AA

Hình 12. Nội dung partition table tại EBR1( phần chữ đậm)
EBR1 gồm 512 byte. Trong đó, partition table bắt đầu tại địa chỉ 0x01BE, gồm 64 byte, chỉ có
hai entry đầu tiên trong partition table là có dữ liệu (phần tô màu vàng và xanh). Cụ thể:
-

Entry 1 (tô màu vàng): thông tin mô tả về ổ đĩa logic D:\.

-

Entry 2 (tô màu xanh): thông tin mô tả để đi tới EBR tiếp theo (EBR2).

Bảng sau là nội dung các trường của Entry 1.
Offset Số byte
Mô tả
0x00 1
“00”: không có khả năng khởi động.
0x01 3

“01 81 FD”: ba byte địa chỉ bắt đầu dạng CHS.
0x01
11 (head)
0x02
11 (sector)
0x03
1765 (cylinder)
0x04 1
0x0B: FAT32
0x05 3
“FE FF 7C”: ba byte địa chỉ kết thúc dạng CHS.
0x05
1 254(head)
0x06
1 63(sector)
0x07
1 892(cylinder)
0x08 4
“3F 00 00 00”: sector bắt đầu của ổ đĩa logic D:\ là 63, tính
từ vị trí bắt đầu của EBR1.
0x0C 4
“41 60 1F 00”: tổng số sector của ổ đĩa logic D:\ là
2056257; tính ra kích thước là ~1GB.
Bảng sau là nội dung các trường của Entry 2, thông tin quan trọng cần quan tâm là sector bắt
đầu của EBR2.
Offset
0x00 1
0x01 3
0x01


Số
byte

Mô tả
“00”: không có khả năng khởi động.
“00 C1 7D”: 3 byte địa chỉ bắt đầu dạng CHS.
10 (head)
Trang 18


NTFS

Lê Gia Công
0x02
0x03
0x04 1
0x05 3
0x05
0x06
0x07
0x08 4
0x0C 4

11 (sector)
1893 (cylinder)
“05”: extended partition
“FE FF FF”: 3 byte địa chỉ kết thúc dạng CHS.
1 254(head)
1 63(sector)
1 1023(cylinder)

“80 60 1F 00”: vị trí của EBR2 là sector 2 056 320.
“D7 03 25 00”: tổng số sector là 2 425 815; tính ra kích
thước là ~1,2GB.

Từ thông tin về EBR2, biết được EBR2 nằm tại sector 2 056 320. Đây là sector tương đối, tức
là tính từ vị trí bắt đầu của extended partition, nên để đọc được EBR2, cần phải cộng thêm
sector bắt đầu của extended partition: 2 056 320 + 12 289 725 = 14 346 045.
Sector 14 346 045 chứa nội dung của EBR2, Hình 13 dưới đây là nội dung partition table tại
EBR2.
Physical Sector: Absolute Sector 14,346,045
00000000: 00 00 00 00 00 00 00 00 - 00 00 00
00000010: 00 00 00 00 00 00 00 00 - 00 00 00
00000020: 00 00 00 00 00 00 00 00 - 00 00 00
...
...
000001B0: 00 00 00 00 00 00 00 00 - 00 00 00
000001C0: C1 7D 0B FE FF FF 3F 00 - 00 00 98
000001D0: 00 00 00 00 00 00 00 00 - 00 00 00
000001E0: 00 00 00 00 00 00 00 00 - 00 00 00
000001F0: 00 00 00 00 00 00 00 00 - 00 00 00

00 00 00 00 00
00 00 00 00 00
00 00 00 00 00

................
................
................

00

03
00
00
00

................
.}....?.....%...
................
................
..............U.

00
25
00
00
00

00
00
00
00
00

00
00
00
00
55

01

00
00
00
AA

Hình 13. Nội dung partition table tại EBR2 (phần chữ đậm)
Partition table tại EBR2 chỉ có Entry 1 có dữ liệu (phần tô màu vàng), đây là thông tin mô tả
cho ổ đĩa logic E:\. EBR2 không có thông tin mô tả cho EBR kế tiếp, nên đây là EBR cuối.
Nội dung của Entry 1 được minh họa trong bảng sau.
Offset
0x00 1
0x01 3
0x01
0x02
0x03
0x04 1
0x05 3

Số
Byte

Mô tả
“00”: không có khả năng khởi động.
“01 C1 7D”: 3 byte địa chỉ bắt đầu - dạng CHS.
1 1 (head)
1 1 (sector)
1 893 (cylinder)
“0B”: FAT32
“FE FF FF”: 3 byte địa chỉ kết thúc - dạng CHS.
Trang 19



NTFS

Lê Gia Công
0x05
0x06
0x07
0x08 4
0x0C 4

1 254(head)
1 63(sector)
1 1023(cylinder)
“3F 00 00 00”: sector bắt đầu là 63, tính từ vị trí bắt đầu
của EBR2.
“98 03 25 00”: tổng số sector là 2 425 752; tính ra kích
thước là ~1,2GB.

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.

Hình 14. Hiển thị phân vùng System Reserved bằng Disk Management

Trang 20


NTFS

Lê Gia Công

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

MFT

Nội dung của tập tin
(loại non-resident)

MFT dự
phòng

Chưa sử
dụng

Hình 15. tổ chức của ổ đĩa định dạng NTFS
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


Trang 21


NTFS

Lê Gia Công

(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)
0 -> 2
3 -> A
B -> 53
54 -> 18B
18C -> 1F7
1F8 -> 1FD
1FE -> 1FF

Mô tả
Lệnh nhảy
Giá trị OEM ID hoặc tên
hệ thống quản lý tập tin
BPB
Mã khởi động
Thông báo lỗi
Message offset
Dấu hiệu kết thúc VBR


Kích thước
(byte)
3
8
73
312
108
6
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.
Trang 22


NTFS

Lê Gia Công

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)

0Bh
0Dh
0Eh
10h
11h

13h
15h
16h
18h
1Ah
1Ch
20h
24h
28h
30h
38h
40h

2
1
2
1
2
2
1
2
2
2
4
4
4
8
8
8
1


41h
44h
45h
48h
50h

3
1
3
8
4

Mô tả
Kích thước một sector. Đơn vị tính là byte.
Số sector trong một cluster.
Chưa sử dụng.
Với hệ thống NTFS luôn mang giá trị 0.
Với hệ thống NTFS luôn mang giá trị 0.
Luôn mang giá trị 0, hệ thống NTFS không sử dụng tới trường này.
Mã xác định loại đĩa.
Với hệ thống NTFS luôn mang giá trị 0.
Số sector/track.
Số mặt đĩa (head hay side).
Sector bắt đầu của ổ đĩa logic.
Luôn mang giá trị 0, hệ thống NTFS không sử dụng tới trường này.
Hệ thống NTFS luôn thiết lập giá trị này là “80008000”.
Số sector của ổ đĩa logic.
Cluster bắt đầu của MFT.
Cluster bắt đầu của MFT dự phòng (MFTMirror).

Kích thước của một bản ghi trong MFT (MFT entry), đơn vị tính là
byte.
Luôn mang giá trị 0, hệ thống NTFS không sử dụng tới trường này.
Số cluster của Index Buffer.
Luôn mang giá trị 0, hệ thống NTFS không sử dụng tới trường này.
Số seri của ổ đĩa (volume serial number).
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.

Trang 23


NTFS

Lê Gia Công

Sector 0

Partition table
MBR
C:\

D:\

E:\


NTFS
BPB
VBR
Hình 16. các bước để đọc được nội dung BPB
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.

Sau đây là phần minh họa các bước để đọc được nội dung BPB trên đĩa cứng thật.
-

Sử dụng phần mềm Disk Editor, đọc MBR của đĩa cứng (sector 0). Định vị vùng
partition table, bắt đầu tại địa chỉ (offset) 0x01BE, xem Hình 17.

Physical Sector: Absolute Sector 0

...
...
000001A0: 67 20 6F 70 65 72 61 74
000001B0: 65 6D 00 00 00 63 7B 9A
000001C0: 01 00 07 FE FF FF 3F 00
000001D0: C1 FF 0F FE FF FF 40 3A
000001E0: 00 00 00 00 00 00 00 00
000001F0: 00 00 00 00 00 00 00 00

-

69
3D
00
83
00
00

6E
74
00
02
00
00

67
76
01
BD
00

00

20
08
3A
C5
00
00

73
00
83
7C
00
00

79
00
02
00
00
00

73
80
00
00
00
55


74
01
00
00
00
AA

g operating syst
em...c{.=tv.....
......?....:....
......@:....|...
................
..............U.

Hình 17. entry mô tả thông tin cho ổ đĩa C:\ (phần tô vàng)
-

Từ entry mô tả thông tin cho ổ đĩa C:\, xác định được địa chỉ bắt đầu của ổ đĩa C:\ là
“3F 00 00 00” = 63.

-

Đọc sector 63, đây là vị trí bắt đầu vùng VBR của ổ đĩa C:\. Kết quả được minh họa
trong Hình 18.
Trang 24


NTFS

Lê Gia Công


Physical Sector: Absolute Sector 63
00000000: EB 52 90 4E 54 46 53 20 00000010: 00 00 00 00 00 F8 00 00 00000020: 00 00 00 00 80 00 80 00 00000030: 00 00 0C 00 00 00 00 00 00000040: F6 00 00 00 01 00 00 00 00000050: 00 00 00 00 FA 33 C0 8E 00000060: 1F 1E 68 66 00 CB 88 16 00000070: 54 46 53 75 15 B4 41 BB 00000080: 55 AA 75 06 F7 C1 01 00 00000090: 18 68 1A 00 B4 48 8A 16 000000A0: 9F 83 C4 18 9E 58 1F 72 000000B0: 0F 00 C1 2E 0F 00 04 1E 000000C0: 66 FF 06 11 00 03 16 0F 000000D0: 4B 00 2B C8 77 EF B8 00 000000E0: 66 81 FB 54 43 50 41 75 000000F0: 68 07 BB 16 68 70 0E 16 00000100: 55 16 16 16 68 B8 01 66 00000110: 28 10 B9 D8 0F FC F3 AA 00000120: 06 66 A1 11 00 66 03 06 00000130: 00 66 50 06 53 68 01 00 00000140: 00 16 1F 8B F4 CD 13 66 00000150: 0F 82 16 00 66 FF 06 11 00000160: 0E 16 00 75 BC 07 1F 66 00000170: A0 FB 01 E8 03 00 F4 EB 00000180: 74 09 B4 0E BB 07 00 CD 00000190: 64 69 73 6B 20 72 65 61 000001A0: 6F 63 63 75 72 72 65 64 000001B0: 47 52 20 69 73 20 6D 69 000001C0: 42 4F 4F 54 4D 47 52 20 000001D0: 65 73 73 65 64 00 0D 0A 000001E0: 72 6C 2B 41 6C 74 2B 44 000001F0: 73 74 61 72 74 0D 0A 00 -

20
3F
00
02
F4
D0
0E
AA
75
0E
E1
5A
00
BB
24
68
61
E9
1C
68
59
00
61
FD
10
64

00
73
69
50
65
8C

20
00
3A
00
1D
BC
00
55
03
00
3B
33
8E
CD
81
09
0E
5F
00
10
5B
03
C3

B4
EB
20
0D
73
73
72
6C
A9

20
FF
83
00
B0
00
66
CD
E9
8B
06
DB
C2
1A
F9
00
07
01
1E
00

5A
16
A0
01
F2
65
0A
69
20
65
20
BE

00
00
02
00
28
7C
81
13
DD
F4
0B
B9
FF
66
02
66
CD

90
66
B4
66
0F
F8
8B
C3
72
42
6E
63
73
74
D6

02
3F
00
00
5B
FB
3E
72
00
16
00
00
06
23

01
53
1A
90
68
42
59
00
01
F0
0D
72
4F
67
6F
73
6F
00

08
00
00
00
B0
68
03
0C
1E
1F
75

20
16
C0
72
66
33
66
00
8A
66
8E
E8
AC
0A
6F
4F
00
6D
20
20
00

00
00
00
00
28
C0
00
81

83
CD
DB
2B
00
75
1E
53
C0
60
00
16
59
C2
09
3C
41
72
54
0D
70
43
72
55

00
00
00
00
B4

07
4E
FB
EC
13
A3
C8
E8
2D
16
66
BF
1E
00
0E
1F
FF
00
00
20
20
4D
0A
72
74
65
AA

.R.NTFS
.....

........?...?...
.........:......
................
...........([.(.
.....3.....|.h..
.hf......f.>..N
TFSu..A..U..r...
U.u.....u.......
.h...H.........
.....Xr.;...u..
........Z3... +.
f...............
K.+.w......f#.uf..TCPAu$....r..
h...hp..h..fSfSf
U...h..fa....3..
(........_...f`.
.f...f.....fh...
.fP.Sh..h...B...
......fY[ZfYfY
....f...........
...u..fa.......
..............<.
t.............A
disk read error
occurred...BOOTM
GR is missing...
BOOTMGR is compr
essed...Press Ct
rl+Alt+Del to re
start.........U.


Hình 18. nội dung VBR của ổ đĩa C:\
-

Từ VBR xác định vùng BPB, bắt đầu tại địa chỉ (offset) B đến 53, gồm 73 byte, xem
Hình 19.

Physical Sector: Absolute Sector 63
00000000: EB 52 90 4E 54 46 53 20 00000010: 00 00 00 00 00 F8 00 00 00000020: 00 00 00 00 80 00 80 00 00000030: 00 00 0C 00 00 00 00 00 00000040: F6 00 00 00 01 00 00 00 00000050: 00 00 00 00 FA 33 C0 8E ...

20
3F
00
02
F4
D0

20
00
3A
00
1D
BC

20
FF
83
00
B0
00


00
00
02
00
28
7C

02
3F
00
00
5B
FB

08
00
00
00
B0
68

00
00
00
00
28
C0

00

00
00
00
B4
07

.R.NTFS
.....
........?...?...
.........:......
................
...........([.(.
.....3.....|.h..

Hình 19. nội dung của BPB (phần chữ đỏ)
-

Giá trị cụ thể của các trường trong BPB được minh họa trong bảng sau.

Trang 25


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×