52
Cơ bn vHthng qun lý tp tin NTFS Lê Gia Công Đà Lt, 2014/5/29

Co ban ve NTFS

Embed Size (px)

DESCRIPTION

Co ban ve he thong quan ly tap tin NTFS

Citation preview

Page 1: Co ban ve NTFS

Cơ bản về

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

NTFS

Lê Gia Công

Đà L�t, 2014/5/29

Page 2: Co ban ve NTFS

NTFS Lê Gia Công

Trang 2

Mục lục

Mở ñầu ..........................................................................................................................3

Tổ chức của ñĩa cứng ...................................................................................................4

Master Boot Record................................................................................................................4

Tổ chức của MBR.................................................................................................................4

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

Địa chỉ dạng CHS.................................................................................................................8

Địa chỉ dạng LBA...............................................................................................................11

Kiểu của phân vùng ............................................................................................................11

Lưu dữ liệu theo ñịnh dạng little-endian ............................................................................12

Extended Boot Record (EBR)..............................................................................................13

Tổ chức của EBR................................................................................................................13

Ví dụ về EBR......................................................................................................................15

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

Một vài lưu ý ......................................................................................................................19

Tổng quan về NTFS ...........................................................................................................20

VBR ....................................................................................................................................20

BPB.....................................................................................................................................21

Đọc VBR và BPB...............................................................................................................22

MFT ....................................................................................................................................26

MFT entry...........................................................................................................................28

Attribute..............................................................................................................................32

Attribute $STANDARD_INFORMATION.......................................................................37

Attribute $FILE_NAME ....................................................................................................41

Attribute $DATA................................................................................................................45

Phụ lục.........................................................................................................................48

Hướng dẫn ñọc ñĩa cứng bằng phần mềm Disk Editor ......................................................48

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

Page 3: Co ban ve NTFS

NTFS Lê Gia Công

Trang 3

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:\

Page 4: Co ban ve NTFS

NTFS Lê Gia Công

Trang 4

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.

C:\ D:\ E:\

MBR EBR1 EBR2

Hình 3. Tổ chức ñĩa cứng theo MBR, EBR

C:\ D:\ E:\

Primary partition

Hình 2. Đĩa cứng gồm hai partition, ba ổ ñĩa logic

Extended partition

Page 5: Co ban ve NTFS

NTFS Lê Gia Công

Trang 5

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 Hệ 10 Mô tả Số byte

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

01FF 0777 511 Aah

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

2

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.

Page 6: Co ban ve NTFS

NTFS Lê Gia Công

Trang 6

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.

Physical Sector: Absolute Sector 0

00000000: 33 C0 8E D0 BC 00 7C 8E - C0 8E D8 BE 00 7C BF 00 3.....|......|..

00000010: 06 B9 00 02 FC F3 A4 50 - 68 1C 06 CB FB B9 04 00 .......Ph.......

00000020: BD BE 07 80 7E 00 00 7C - 0B 0F 85 0E 01 83 C5 10 ....~..|........

00000030: E2 F1 CD 18 88 56 00 55 - C6 46 11 05 C6 46 10 00 .....V.U.F...F..

00000040: B4 41 BB AA 55 CD 13 5D - 72 0F 81 FB 55 AA 75 09 .A..U..]r...U.u.

00000050: F7 C1 01 00 74 03 FE 46 - 10 66 60 80 7E 10 00 74 ....t..F.f`.~..t

00000060: 26 66 68 00 00 00 00 66 - FF 76 08 68 00 00 68 00 &fh....f.v.h..h.

00000070: 7C 68 01 00 68 10 00 B4 - 42 8A 56 00 8B F4 CD 13 |h..h...B.V.....

00000080: 9F 83 C4 10 9E EB 14 B8 - 01 02 BB 00 7C 8A 56 00 ............|.V.

00000090: 8A 76 01 8A 4E 02 8A 6E - 03 CD 13 66 61 73 1C FE .v..N..n...fas..

000000A0: 4E 11 75 0C 80 7E 00 80 - 0F 84 8A 00 B2 80 EB 84 N.u..~..........

000000B0: 55 32 E4 8A 56 00 CD 13 - 5D EB 9E 81 3E FE 7D 55 U2..V...]...>.}U

000000C0: AA 75 6E FF 76 00 E8 8D - 00 75 17 FA B0 D1 E6 64 .un.v....u.....d

000000D0: E8 83 00 B0 DF E6 60 E8 - 7C 00 B0 FF E6 64 E8 75 ......`.|....d.u

000000E0: 00 FB B8 00 BB CD 1A 66 - 23 C0 75 3B 66 81 FB 54 .......f#.u;f..T

000000F0: 43 50 41 75 32 81 F9 02 - 01 72 2C 66 68 07 BB 00 CPAu2....r,fh...

00000100: 00 66 68 00 02 00 00 66 - 68 08 00 00 00 66 53 66 .fh....fh....fSf

00000110: 53 66 55 66 68 00 00 00 - 00 66 68 00 7C 00 00 66 SfUfh....fh.|..f

00000120: 61 68 00 00 07 CD 1A 5A - 32 F6 EA 00 7C 00 00 CD ah.....Z2...|...

00000130: 18 A0 B7 07 EB 08 A0 B6 - 07 EB 03 A0 B5 07 32 E4 ..............2.

00000140: 05 00 07 8B F0 AC 3C 00 - 74 09 BB 07 00 B4 0E CD ......<.t.......

00000150: 10 EB F2 F4 EB FD 2B C9 - E4 64 EB 00 24 02 E0 F8 ......+..d..$...

00000160: 24 02 C3 49 6E 76 61 6C - 69 64 20 70 61 72 74 69 $..Invalid parti

00000170: 74 69 6F 6E 20 74 61 62 - 6C 65 00 45 72 72 6F 72 tion table.Error

00000180: 20 6C 6F 61 64 69 6E 67 - 20 6F 70 65 72 61 74 69 loading operati

00000190: 6E 67 20 73 79 73 74 65 - 6D 00 4D 69 73 73 69 6E ng system.Missin

000001A0: 67 20 6F 70 65 72 61 74 - 69 6E 67 20 73 79 73 74 g operating syst

000001B0: 65 6D 00 00 00 63 7B 9A - 3D 74 76 08 00 00 80 01 em...c{.=tv.....

000001C0: 01 00 07 FE FF FF 3F 00 - 00 00 01 3A 83 02 00 00 ......?....:....

000001D0: C1 FF 0F FE FF FF 40 3A - 83 02 BD C5 7C 00 00 00 ......@:....|...

000001E0: 00 00 00 00 00 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 55 AA ..............U.

Hình 4. MBR

Page 7: Co ban ve NTFS

NTFS Lê Gia Công

Trang 7

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

Page 8: Co ban ve NTFS

NTFS Lê Gia Công

Trang 8

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.

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

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

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

1 http://www.dataclinic.it/data-recovery/hard-disk-functionality.htm

Physical Sector: Absolute Sector 0

...

000001B0: 65 6D 00 00 00 63 7B 9A - 3D 74 76 08 00 00 80 01 em...c{.=tv.....

000001C0: 01 00 07 FE FF FF 3F 00 - 00 00 01 3A 83 02 00 00 ......?....:....

000001D0: C1 FF 0F FE FF FF 40 3A - 83 02 BD C5 7C 00 00 00 ......@:....|...

000001E0: 00 00 00 00 00 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 55 AA ..............U.

Hình 5. Entry 1 (phần chữ ñậm)

Page 9: Co ban ve NTFS

NTFS Lê Gia Công

Trang 9

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

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 http://flylib.com/books/2/48/1/html/2/images/0321268172/graphics/02fig09.gif

3 http://www.dataclinic.it/data-recovery/HDD7.gif

4 http://thestarman.pcministry.com/asm/mbr/PartTables.htm

Hình 6. Ví dụ về track và sector

Page 10: Co ban ve NTFS

NTFS Lê Gia Công

Trang 10

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.

Hình 8: Định dạng của ba byte CHS

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

3 platter

Các head

Page 11: Co ban ve NTFS

NTFS Lê Gia Công

Trang 11

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

Page 12: Co ban ve NTFS

NTFS Lê Gia Công

Trang 12

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

Page 13: Co ban ve NTFS

NTFS Lê Gia Công

Trang 13

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.

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.

C:\ D:\ E:\

MBR EBR1 EBR2

Hình 10. Tổ chức ñĩa cứng theo MBR, EBR

Physical Sector: Absolute Sector 0

...

...

000001A0: 67 20 6F 70 65 72 61 74 - 69 6E 67 20 73 79 73 74 g operating syst

000001B0: 65 6D 00 00 00 63 7B 9A - 3D 74 76 08 00 00 80 01 em...c{.=tv.....

000001C0: 01 00 07 FE FF FF 3F 00 - 00 00 01 3A 83 02 00 00 ......?....:....

000001D0: C1 FF 0F FE FF FF 40 3A - 83 02 BD C5 7C 00 00 00 ......@:....|...

000001E0: 00 00 00 00 00 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 55 AA ..............U.

Hình 9. Ví dụ về lưu dữ liệu kiểu little-endian

00 7C C5 BD

Page 14: Co ban ve NTFS

NTFS Lê Gia Công

Trang 14

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 Hệ 10 Mô tả Số byte

0000 0000 0 Không sử dụng 446

01BE 0676 446 Bảng thông tin về các phân vùng

(Partition table)

64

01FE 0776 510 55h

01FF 0777 511 AAh

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

2

Tổng kích thước: 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ỉ (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ệ

Page 15: Co ban ve NTFS

NTFS Lê Gia Công

Trang 15

0x01 3 Đị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.

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 ñị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 little-endian.

Ví dụ về EBR

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

Page 16: Co ban ve NTFS

NTFS Lê Gia Công

Trang 16

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 Số byte

Mô tả

0x00 1 “00”: không có khả năng khởi ñộng.

0x01 3 “00 81 FD”: ba byte ñịa chỉ bắt ñầu dạng CHS.

0x01 1 0 (head)

0x02 1 1 (sector)

0x03 1 765 (cylinder)

0x04 1 0x0F: extended partition.

0x05 3 “FE FE 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 “BD 86 BB 00”: sector bắt ñầu của extended partition là 12289725.

0x0C 4 “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.

...

00000180: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................

00000190: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................

000001A0: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................

000001B0: 00 00 00 00 00 2C 44 63 - B9 8F B9 8F 00 00 80 01 .....,Dc........

000001C0: 01 00 0B FE 7F FD 3F 00 - 00 00 3F 04 7D 00 00 00 ....�.?...?.}...

000001D0: 41 FE 17 FE BF FC 7E 04 - 7D 00 3F 82 3E 00 00 00 A.....~.}.?.>...

000001E0: 81 FD 0F FE FF FF BD 86 - BB 00 57 64 44 00 00 00 ..........WdD...

000001F0: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 55 AA ..............U.

Hình 11. Entry mô tả thông tin cho extended partition (phần tô vàng)

Page 17: Co ban ve NTFS

NTFS Lê Gia Công

Trang 17

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 1 1 (head)

0x02 1 1 (sector)

0x03 1 765 (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 Số byte

Mô tả

0x00 1 “00”: không có khả năng khởi ñộng.

0x01 3 “00 C1 7D”: 3 byte ñịa chỉ bắt ñầu dạng CHS.

0x01 1 0 (head)

Physical Sector: Absolute Sector 12,289,725

00000000: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................

00000010: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................

.....

.....

.....

000001B0: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 01 ................

000001C0: 81 FD 0B FE FF 7C 3F 00 - 00 00 41 60 1F 00 00 00 .....|?...A`...

000001D0: C1 7D 05 FE FF FF 80 60 - 1F 00 D7 03 25 00 00 00 .}.....`...%...

000001E0: 00 00 00 00 00 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 55 AA ..............U.

Hình 12. Nội dung partition table tại EBR1( phần chữ ñậm)

Page 18: Co ban ve NTFS

NTFS Lê Gia Công

Trang 18

0x02 1 1 (sector)

0x03 1 893 (cylinder)

0x04 1 “05”: extended partition

0x05 3 “FE FF FF”: 3 byte ñịa chỉ kết thúc dạng CHS.

0x05 1 254(head)

0x06 1 63(sector)

0x07 1 1023(cylinder)

0x08 4 “80 60 1F 00”: vị trí của EBR2 là sector 2 056 320.

0x0C 4 “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.

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 Số Byte

Mô tả

0x00 1 “00”: không có khả năng khởi ñộng.

0x01 3 “01 C1 7D”: 3 byte ñịa chỉ bắt ñầu - dạng CHS.

0x01 1 1 (head)

0x02 1 1 (sector)

0x03 1 893 (cylinder)

0x04 1 “0B”: FAT32

0x05 3 “FE FF FF”: 3 byte ñịa chỉ kết thúc - dạng CHS.

Physical Sector: Absolute Sector 14,346,045

00000000: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................

00000010: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................

00000020: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................

...

...

000001B0: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 01 ................

000001C0: C1 7D 0B FE FF FF 3F 00 - 00 00 98 03 25 00 00 00 .}....?.....%...

000001D0: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................

000001E0: 00 00 00 00 00 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 55 AA ..............U.

Hình 13. Nội dung partition table tại EBR2 (phần chữ ñậm)

Page 19: Co ban ve NTFS

NTFS Lê Gia Công

Trang 19

0x05 1 254(head)

0x06 1 63(sector)

0x07 1 1023(cylinder)

0x08 4 “3F 00 00 00”: sector bắt ñầu là 63, tính từ vị trí bắt ñầu của EBR2.

0x0C 4 “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

Page 20: Co ban ve NTFS

NTFS Lê Gia Công

Trang 20

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

Hình 15. tổ chức của ổ ñĩa ñịnh dạng NTFS

VBR

MFT MFT dự

phòng

Nội dung của tập tin

(loại non-resident)

Chưa sử

dụng

Page 21: Co ban ve NTFS

NTFS Lê Gia Công

Trang 21

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

Page 22: Co ban ve NTFS

NTFS Lê Gia Công

Trang 22

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.

Page 23: Co ban ve NTFS

NTFS Lê Gia Công

Trang 23

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.

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

Physical Sector: Absolute Sector 0

...

...

000001A0: 67 20 6F 70 65 72 61 74 - 69 6E 67 20 73 79 73 74 g operating syst

000001B0: 65 6D 00 00 00 63 7B 9A - 3D 74 76 08 00 00 80 01 em...c{.=tv.....

000001C0: 01 00 07 FE FF FF 3F 00 - 00 00 01 3A 83 02 00 00 ......?....:....

000001D0: C1 FF 0F FE FF FF 40 3A - 83 02 BD C5 7C 00 00 00 ......@:....|...

000001E0: 00 00 00 00 00 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 55 AA ..............U.

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

C:\ D:\ E:\

MBR Partition table

Hình 16. các bước ñể ñọc ñược nội dung BPB

VBR

BPB

NTFS

Sector 0

Page 24: Co ban ve NTFS

NTFS Lê Gia Công

Trang 24

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

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

Physical Sector: Absolute Sector 63

00000000: EB 52 90 4E 54 46 53 20 - 20 20 20 00 02 08 00 00 .R.NTFS .....

00000010: 00 00 00 00 00 F8 00 00 - 3F 00 FF 00 3F 00 00 00 ........?...?...

00000020: 00 00 00 00 80 00 80 00 - 00 3A 83 02 00 00 00 00 .........:......

00000030: 00 00 0C 00 00 00 00 00 - 02 00 00 00 00 00 00 00 ................

00000040: F6 00 00 00 01 00 00 00 - F4 1D B0 28 5B B0 28 B4 ...........([.(.

00000050: 00 00 00 00 FA 33 C0 8E - D0 BC 00 7C FB 68 C0 07 .....3.....|.h.. ...

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

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

Physical Sector: Absolute Sector 63

00000000: EB 52 90 4E 54 46 53 20 - 20 20 20 00 02 08 00 00 .R.NTFS .....

00000010: 00 00 00 00 00 F8 00 00 - 3F 00 FF 00 3F 00 00 00 ........?...?...

00000020: 00 00 00 00 80 00 80 00 - 00 3A 83 02 00 00 00 00 .........:......

00000030: 00 00 0C 00 00 00 00 00 - 02 00 00 00 00 00 00 00 ................

00000040: F6 00 00 00 01 00 00 00 - F4 1D B0 28 5B B0 28 B4 ...........([.(.

00000050: 00 00 00 00 FA 33 C0 8E - D0 BC 00 7C FB 68 C0 07 .....3.....|.h..

00000060: 1F 1E 68 66 00 CB 88 16 - 0E 00 66 81 3E 03 00 4E .hf......f.>..N

00000070: 54 46 53 75 15 B4 41 BB - AA 55 CD 13 72 0C 81 FB TFSu..A..U..r...

00000080: 55 AA 75 06 F7 C1 01 00 - 75 03 E9 DD 00 1E 83 EC U.u.....u.......

00000090: 18 68 1A 00 B4 48 8A 16 - 0E 00 8B F4 16 1F CD 13 .h...H.........

000000A0: 9F 83 C4 18 9E 58 1F 72 - E1 3B 06 0B 00 75 DB A3 .....Xr.;...u..

000000B0: 0F 00 C1 2E 0F 00 04 1E - 5A 33 DB B9 00 20 2B C8 ........Z3... +.

000000C0: 66 FF 06 11 00 03 16 0F - 00 8E C2 FF 06 16 00 E8 f...............

000000D0: 4B 00 2B C8 77 EF B8 00 - BB CD 1A 66 23 C0 75 2D K.+.w......f#.u-

000000E0: 66 81 FB 54 43 50 41 75 - 24 81 F9 02 01 72 1E 16 f..TCPAu$....r..

000000F0: 68 07 BB 16 68 70 0E 16 - 68 09 00 66 53 66 53 66 h...hp..h..fSfSf

00000100: 55 16 16 16 68 B8 01 66 - 61 0E 07 CD 1A 33 C0 BF U...h..fa....3..

00000110: 28 10 B9 D8 0F FC F3 AA - E9 5F 01 90 90 66 60 1E (........_...f`.

00000120: 06 66 A1 11 00 66 03 06 - 1C 00 1E 66 68 00 00 00 .f...f.....fh...

00000130: 00 66 50 06 53 68 01 00 - 68 10 00 B4 42 8A 16 0E .fP.Sh..h...B...

00000140: 00 16 1F 8B F4 CD 13 66 - 59 5B 5A 66 59 66 59 1F ......fY[ZfYfY

00000150: 0F 82 16 00 66 FF 06 11 - 00 03 16 0F 00 8E C2 FF ....f...........

00000160: 0E 16 00 75 BC 07 1F 66 - 61 C3 A0 F8 01 E8 09 00 ...u..fa.......

00000170: A0 FB 01 E8 03 00 F4 EB - FD B4 01 8B F0 AC 3C 00 ..............<.

00000180: 74 09 B4 0E BB 07 00 CD - 10 EB F2 C3 0D 0A 41 20 t.............A

00000190: 64 69 73 6B 20 72 65 61 - 64 20 65 72 72 6F 72 20 disk read error

000001A0: 6F 63 63 75 72 72 65 64 - 00 0D 0A 42 4F 4F 54 4D occurred...BOOTM

000001B0: 47 52 20 69 73 20 6D 69 - 73 73 69 6E 67 00 0D 0A GR is missing...

000001C0: 42 4F 4F 54 4D 47 52 20 - 69 73 20 63 6F 6D 70 72 BOOTMGR is compr

000001D0: 65 73 73 65 64 00 0D 0A - 50 72 65 73 73 20 43 74 essed...Press Ct

000001E0: 72 6C 2B 41 6C 74 2B 44 - 65 6C 20 74 6F 20 72 65 rl+Alt+Del to re

000001F0: 73 74 61 72 74 0D 0A 00 - 8C A9 BE D6 00 00 55 AA start.........U.

Page 25: Co ban ve NTFS

NTFS Lê Gia Công

Trang 25

Địa chỉ (offset)

Kích thước (byte)

Giá trị Giá trị hệ 10

Mô tả

0Bh 2 0x0200 512 Kích thước một sector là 512 byte.

0Dh 1 0x08 8 Số sector trong một cluster là 8, vậy kích thước một cluster là: 8 x 512 = 4096 B = 4 KB.

0Eh 2 “0000” 0 Chưa sử dụng.

10h 1 “00” 0 Với hệ thống NTFS, luôn mang giá trị 0.

11h 2 “0000” 0 Với hệ thống NTFS luôn mang giá trị 0.

13h 2 “0000” 0 Luôn mang giá trị 0, hệ thống NTFS không sử dụng tới trường này.

15h 1 0xF8 248 Mã xác ñịnh loại ñĩa. F8 = Fixed Disk.

16h 2 “0000” 0 Với hệ thống NTFS, luôn mang giá trị 0.

18h 2 0x003F 63 Số sector/track là 63.

1Ah 2 0x00FF 255 Số mặt ñĩa (head hay side) là 255.

1Ch 4 0x00003F 63 Sector bắt ñầu của ổ ñĩa logic C:\ là 63.

20h 4 “00000000” 0 Luôn mang giá trị 0, hệ thống NTFS không sử dụng tới trường này.

24h 4 “80008000” Hệ thống NTFS luôn thiết lập giá trị này là “80008000”.

28h 8 0x0000 0000 0283 3A00

42 154 496 Số sector của ổ ñĩa

30h 8 0x0000 0000 000C 0000

786 432 Cluster bắt ñầu của MFT.

38h 8 0x0000 0000 0000 0002

2 Cluster bắt ñầu của MFTMirror (MFT dự phòng)

40h 1 (số có dấu)

0xF6 -10 Kích thước của một bản ghi MFT (MFT entry). Đơn vị tính là byte.

0xF6 là một số có dấu, 0xF6 = 1111 0110 (dạng bù 2), tính ra ñược giá trị hệ thập

Page 26: Co ban ve NTFS

NTFS Lê Gia Công

Trang 26

phân = -10. Kích thước của một bản ghi MFT tính bằng 2 ^ |-10| = 1024 byte.

41h 3 “000000” Luôn mang giá trị 0, hệ thống NTFS không sử dụng tới trường này.

44h 1 (byte có dấu)

0x01 1 Số cluster của Index Buffer.

45h 3 “000000” Luôn mang giá trị 0, hệ thống NTFS không sử dụng tới trường này.

48h 8 0xB428 B05B 28B0 1DF4

Số seri của ổ ñĩa (volume serial number). Khi sử dụng lệnh dir trong cửa sổ dòng lệnh, hệ thống chỉ hiển thị giá trị của 4 byte cuối. Ví dụ: C:\> dir Volume in drive C has no lable. Volume Serial Number is 28B0-1DF4

50h 4 “0000 0000” 0 Không ñược sử dụng bởi NTFS.

MFT

MFT (Master File Table) là thành phần quan trọng nhất trong hệ thống NTFS. MFT chứa thông tin về tất cả các tập tin và thư mục trong ổ ñĩa logic.

Khi ñĩa ñược ñịnh dạng theo NTFS, Microsoft sẽ khởi tạo MFT với kích thước nhỏ nhất có thể, sau này sẽ mở rộng thêm khi có nhu cầu. Cách làm này giúp tăng tính linh hoạt của hệ thống NTFS, MFT có thể mở rộng một cách dễ dàng khi người dùng tăng dung lượng của ổ ñĩa logic.

MFT ñược xem là ñiểm bắt ñầu ñể ñi ñến các tập tin trên một ổ ñĩa logic, có thể xem nó như là “mục lục” của ổ ñĩa logic, xem Hình 20.

Vị trí bắt ñầu của MFT ñược tính bằng cluster, ñược lưu trong BPB tại offset 30h, là một số kích thước 8 byte.

Page 27: Co ban ve NTFS

NTFS Lê Gia Công

Trang 27

Đọc MFT

Từ bảng thông tin của BPB trong VBR, xét 8 byte tại offset 30h, giá trị của 8 byte này cho biết MFT bắt ñầu tại cluster: 0x0000 0000 000C 0000 = 786 432.

Đổi sang sector: (lưu ý, số sector của một cluster ñược lưu trong BPB)

Sector = Cluster * số sector của một cluster

= 786 432 * 8

= 6 291 456

Lưu ý: ñây là sector bắt ñầu logic, tức là tính từ ñầu ổ ñĩa logic. Như vậy, sector vật lý sẽ là: 6 291 456 + 63 = 6 291 519 (63 là số sector ñứng trước ổ ñĩa logic C:\).

Hình 21 dưới ñây là một phần nội dung của MFT bắt ñầu tại sector 6 291 519.

C:\ D:\ E:\

MBR Partition table

Hình 20. minh họa về MFT, MFT entry

VBR

BPB

NTFS

Sector 0

MFT

Các MFT entry

Page 28: Co ban ve NTFS

NTFS Lê Gia Công

Trang 28

MFT entry

MFT ñược chia nhỏ thành các phần bằng nhau gọi là MFT entry. Kích thước của một MFT entry ñược quy ñịnh trong BPB, thường là 1024 byte.

Khi một tập tin hoặc thư mục ñược tạo ra, sẽ có ít nhất một MFT entry ñược tạo ra trong MFT, ñể mô tả thông tin cho tập tin hoặc thư mục ñó.

Trong các hệ thống của Microsoft, MFT entry sẽ không bị xóa, khi ñã ñược tạo ra. Ví dụ, khi người dùng tạo tập tin A, một MFT entry cho tập tin A sẽ ñược tạo ra trong MFT. Khi tập tin A bị xóa, hệ thống sẽ không xóa MFT entry thuộc về tập tin A, mà nó chỉ ñánh dấu MFT entry ñó là chưa có tập tin nào sử dụng và có thể cấp cho các tập tin khác.

MFT bản chất là một tập tin, do vậy cũng có một MFT entry mô tả cho chính nó, ñó chính là MFT entry ñầu tiên trong MFT, có tên là $MFT. $MFT mô tả về kích thước và tổ chức của MFT.

Có hai loại MFT entry:

Physical Sector: Absolute Sector 6,291,519

00000000: 46 49 4C 45 30 00 03 00 - DB 84 5D 06 00 00 00 00 FILE0.....].....

00000010: 01 00 01 00 38 00 01 00 - A0 01 00 00 00 04 00 00 ....8...........

00000020: 00 00 00 00 00 00 00 00 - 06 00 00 00 00 00 00 00 ................

00000030: 26 00 71 88 00 00 00 00 - 10 00 00 00 60 00 00 00 &.q.........`...

00000040: 00 00 18 00 00 00 00 00 - 48 00 00 00 18 00 00 00 ........H.......

00000050: 10 80 47 AC EC 56 CD 01 - 10 80 47 AC EC 56 CD 01 ..G..V....G..V..

00000060: 10 80 47 AC EC 56 CD 01 - 10 80 47 AC EC 56 CD 01 ..G..V....G..V..

00000070: 06 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................

00000080: 00 00 00 00 00 01 00 00 - 00 00 00 00 00 00 00 00 ................

00000090: 00 00 00 00 00 00 00 00 - 30 00 00 00 68 00 00 00 ........0...h...

000000A0: 00 00 18 00 00 00 03 00 - 4A 00 00 00 18 00 01 00 ........J.......

000000B0: 05 00 00 00 00 00 05 00 - 10 80 47 AC EC 56 CD 01 ..........G..V..

000000C0: 10 80 47 AC EC 56 CD 01 - 10 80 47 AC EC 56 CD 01 ..G..V....G..V..

000000D0: 10 80 47 AC EC 56 CD 01 - 00 40 00 00 00 00 00 00 ..G..V...@......

000000E0: 00 40 00 00 00 00 00 00 - 06 00 00 00 00 00 00 00 .@..............

000000F0: 04 03 24 00 4D 00 46 00 - 54 00 00 00 00 00 00 00 ..$.M.F.T.......

00000100: 80 00 00 00 48 00 00 00 - 01 00 40 00 00 00 01 00 ....H.....@.....

00000110: 00 00 00 00 00 00 00 00 - FF 29 00 00 00 00 00 00 .........)......

00000120: 40 00 00 00 00 00 00 00 - 00 00 A0 02 00 00 00 00 @...............

00000130: 00 00 A0 02 00 00 00 00 - 00 00 A0 02 00 00 00 00 ................

00000140: 32 00 2A 00 00 0C 00 8A - B0 00 00 00 50 00 00 00 2.*.........P...

00000150: 01 00 40 00 00 00 05 00 - 00 00 00 00 00 00 00 00 ..@.............

00000160: 02 00 00 00 00 00 00 00 - 40 00 00 00 00 00 00 00 ........@.......

00000170: 00 30 00 00 00 00 00 00 - 08 20 00 00 00 00 00 00 .0....... ......

00000180: 08 20 00 00 00 00 00 00 - 31 01 FF FF 0B 11 01 FF . ......1.......

00000190: 31 01 1A 7C 06 00 71 88 - FF FF FF FF 00 00 00 00 1..|..q.........

000001A0: 00 00 04 00 00 00 00 00 - 31 40 00 00 0C 00 48 88 [email protected].

000001B0: B0 00 00 00 50 00 00 00 - 01 00 40 00 00 00 05 00 ....P.....@.....

000001C0: 00 00 00 00 00 00 00 00 - 01 00 00 00 00 00 00 00 ................

000001D0: 40 00 00 00 00 00 00 00 - 00 20 00 00 00 00 00 00 @........ ......

000001E0: 08 10 00 00 00 00 00 00 - 08 10 00 00 00 00 00 00 ................

000001F0: 31 01 FF FF 0B 11 01 FF - 00 00 01 00 00 50 26 00 1............P&.

Hình 21. một phần nội dung của MFT

Page 29: Co ban ve NTFS

NTFS Lê Gia Công

Trang 29

- MFT entry cho tập tin siêu dữ liệu (metadata file): chứa các thông tin mô tả về cấu trúc tổ chức của hệ thống NTFS.

- MFT entry cho tập tin dữ liệu (data file): chứa thông tin mô tả cho các tập tin dữ liệu, có thể chứa cả phần dữ liệu của tập tin.

Windows dành một số MFT entry ñầu tiên trong MFT cho các tập tin siêu dữ liệu. Các MFT entry còn lại cho các tập tin dữ liệu.

Cấu trúc của MFT entry

MFT entry gồm hai thành phần: header và các attribute.

Header gồm 42 byte ñầu tiên ñược sử dụng ñể chứa một số thông tin mô tả cho MFT entry.

Phần còn lại của MFT entry ñược sử dụng ñể chứa các attribute. Nếu các attribute không sử dụng hết 1024 byte, hệ thống sẽ sử dụng giá trị 0xffffffff ñể ñánh dấu kết thúc.

Hình 22 dưới ñây minh họa tổ chức của một MFT entry, gồm header và ba attribute.

Các trường cụ thể của header ñược thể hiện trong bảng sau.

Offset Số byte

Mô tả

0x0 – 0x03 4 Dấu hiệu nhận biết MFT entry.

0x04 – 0x05 2 Địa chỉ (offset) của Update sequence.

0x06 – 0x07 2 Số phần tử của mảng Fixup, mảng này chứa các giá trị bị thay thế trong quá trình thao tác với Update sequence.

0x08 – 0x0F 8 $LogFile Sequence Number (LSN): mã ñịnh danh MFT entry của file log (log record).

0x10 – 0x11 2 Sequence Number: cho biết số lần MFT entry này ñã ñược sử dụng lại. Giá trị này ñược tăng lên một ñơn vị sau mỗi lần tập tin tương ứng với MFT entry này bị xóa. Mang giá trị 0 nếu MFT entry này chưa ñược sử dụng.

0x12 – 0x13 2 Reference Count: cho biết số thư mục mà tập

Hình 22. cấu trúc của một MFT entry

Header

Các attribute Vùng chưa sử dụng

Page 30: Co ban ve NTFS

NTFS Lê Gia Công

Trang 30

tin này ñược hiển thị trong ñó, hay nói cách khác là số thư mục tham chiếu ñến tập tin này. Trường này còn có tên gọi khác là hard link count.

0x14 – 0x15 2 Địa chỉ (offset) bắt ñầu của các attribute.

0x16 – 0x17 2 Flags: - giá trị 0x01: MFT entry ñã ñược sử dụng - giá trị 0x02: MFT entry của một thư mục - giá trị 0x04, 0x08: không xác ñịnh

0x18 – 0x1B

4 Số byte ñã ñược sử dụng trong MFT entry.

0x1C – 0x1F

4 Kích thước vùng ñĩa ñã ñược cấp cho MFT entry.

0x20 – 0x27 8 Tham chiếu ñến MFT entry cơ sở của nó (Base MFT Record). Mang giá trị 0 nếu là MFT entry cơ sở. MFT entry cơ sở dùng ñể chứa các thông tin về các MFT entry mở rộng (Extension Record).

0x28 – 0x29 2 Next attribute ID: mã ñịnh danh của attribute kế tiếp sẽ ñược thêm vào MFT entry.

Ví dụ

Tập tin ñược tạo trong tình huống ví dụ là Test.txt, như vậy sẽ có một MFT entry cho tập tin Test.txt ñược tạo ra trong MFT. Để xác ñịnh MFT entry này, cách ñơn giản nhất là duyệt qua các khối 1024 byte (ñây là kích thước của một MFT entry) bằng mắt thường, tại mỗi MFT entry quan sát giá trị tại offset 0x00F2, nếu thấy chuỗi Test.txt thì ñó chính là MFT entry cho tập tin Test.txt. Ngoài ra, có thể sử dụng chức năng tìm kiếm của công cụ Disk Editor.

Hình 23 dưới ñây là một phần nội dung MFT entry của tập tin Test.txt, nằm tại sector vật lý 6 321 933.

Page 31: Co ban ve NTFS

NTFS Lê Gia Công

Trang 31

Header của MFT entry này gồm 42 byte ñầu tiên, phần tô vàng ở Hình 23. Giá trị của các trường ñược minh họa ở bảng sau.

Offset Số byte

Giá trị Ý nghĩa

0x0 – 0x03 4 “FILE” Dấu hiệu nhận biết MFT entry là “FILE”, nếu MFT entry bị lỗi giá trị của trường này sẽ là “BAAD”.

0x04 – 0x05 2 0x0030 Địa chỉ (offset) của Update sequence.

0x06 – 0x07 2 0x0003 Số phần tử của mảng Fixup, mảng này chứa các giá trị bị thay thế trong quá trình thao tác với Update sequence

0x08 – 0x0F 8 0x0000 0000 0934 357B

$LogFile Sequence Number (LSN): mã ñịnh danh MFT entry của file log (log record).

0x10 – 0x11 2 0x000B Sequence Number: cho biết số lần MFT entry này ñã ñược sử dụng lại. Giá trị này ñược tăng lên một ñơn vị sau mỗi lần tập tin tương ứng với MFT entry này bị xóa. Mang giá trị 0 nếu MFT entry này chưa ñược sử dụng. MFT entry này ñã ñược sử dụng 11

Physical Sector: Absolute Sector 6,312,933

00000000: 46 49 4C 45 30 00 03 00 - 7B 35 34 09 00 00 00 00 FILE0...{54.....

00000010: 0B 00 01 00 38 00 01 00 - 68 01 00 00 00 04 00 00 ....8...h.......

00000020: 00 00 00 00 00 00 00 00 - 04 00 00 00 D3 29 00 00 .............)..

00000030: 06 00 00 00 00 00 00 00 - 10 00 00 00 60 00 00 00 ............`...

00000040: 00 00 00 00 00 00 00 00 - 48 00 00 00 18 00 00 00 ........H.......

00000050: E4 73 BB 00 2F 35 CF 01 - D0 04 CA ED 2E 35 CF 01 .s../5.......5..

00000060: 54 33 88 04 2F 35 CF 01 - E4 73 BB 00 2F 35 CF 01 T3../5...s../5..

00000070: 20 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ...............

00000080: 00 00 00 00 D9 02 00 00 - 00 00 00 00 00 00 00 00 ................

00000090: 10 EC BA 00 00 00 00 00 - 30 00 00 00 70 00 00 00 ........0...p...

000000A0: 00 00 00 00 00 00 02 00 - 52 00 00 00 18 00 01 00 ........R.......

000000B0: 05 00 00 00 00 00 05 00 - E4 73 BB 00 2F 35 CF 01 .........s../5..

000000C0: E4 73 BB 00 2F 35 CF 01 - E4 73 BB 00 2F 35 CF 01 .s../5...s../5..

000000D0: E4 73 BB 00 2F 35 CF 01 - 00 00 00 00 00 00 00 00 .s../5..........

000000E0: 00 00 00 00 00 00 00 00 - 20 00 00 00 00 00 00 00 ........ .......

000000F0: 08 03 54 00 65 00 73 00 - 74 00 2E 00 74 00 78 00 ..T.e.s.t...t.x.

00000100: 74 00 00 00 00 00 00 00 - 40 00 00 00 28 00 00 00 t.......@...(...

00000110: 00 00 00 00 00 00 03 00 - 10 00 00 00 18 00 00 00 ................

00000120: A0 B9 07 6F 59 26 E3 11 - BC E2 00 0C 29 02 BC 73 ...oY&......)..s

00000130: 80 00 00 00 30 00 00 00 - 00 00 18 00 00 00 01 00 ....0...........

00000140: 15 00 00 00 18 00 00 00 - 44 75 20 6C 69 65 75 20 ........Du lieu

00000150: 64 61 6E 67 20 76 61 6E - 20 62 61 6E 21 00 00 00 dang van ban!...

00000160: FF FF FF FF 82 79 47 11 - 00 00 00 00 00 00 00 00 .....yG.........

00000170: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................

Hình 23. một phần nội dung MFT entry của tập tin Test.txt

Page 32: Co ban ve NTFS

NTFS Lê Gia Công

Trang 32

lần.

0x12 – 0x13 2 0x0001 Reference Count: cho biết số thư mục mà tập tin này ñược hiển thị trong ñó, hay nói cách khác là số thư mục tham chiếu ñến tập tin này. Trường này còn có tên gọi khác là hard link count.

0x14 – 0x15 2 0x0038 Địa chỉ (offset) bắt ñầu của attribute ñầu tiên, trong MFT entry này là byte thứ 56.

0x16 – 0x17 2 0x0001 Flags: - giá trị 0x01: MFT entry ñã ñược sử dụng

0x18 – 0x1B

4 0x0000 0168 Số byte trong MFT entry ñã ñược sử dụng. Ví dụ, trong trường hợp này ñã sử dụng 0x0168 = 360 byte.

0x1C – 0x1F

4 0x0000 0400 Kích thước vùng ñĩa ñã ñược cấp cho MFT entry, Ví dụ: 0x0400 = 1024 byte.

0x20 – 0x27 8 0x0000 0000 0000 0000

Tham chiếu ñến MFT entry cơ sở của nó (Base MFT Record). Mang giá trị 0 nếu là MFT entry cơ sở. MFT entry cơ sở dùng ñể chứa các thông tin về các MFT entry mở rộng (Extension Record).

0x28 – 0x29 2 0x0004 Next attribute ID: mã ñịnh danh của attribute kế tiếp sẽ ñược thêm vào MFT entry.

Attribute

Attribute là một cấu trúc dữ liệu, ñược sử dụng ñể chứa nội dung của tập tin, chứa các thông tin liên quan ñến tập tin, thư mục,…v.v trong hệ thống NTFS.

Có nhiều loại attribute, mỗi loại có cấu trúc tổ chức riêng, có một mã loại (type ID) riêng. Mã loại là một số nguyên. Microsoft sắp xếp thứ tự các attribute trong mỗi MFT entry theo chiều tăng dần của mã loại, nghĩa là, attribute nào có mã loại nhỏ sẽ ñứng trước, attribute nào có mã loại lớn sẽ ñứng sau.

Các attribute quan trọng thường sử dụng mã loại mặc ñịnh, tuy nhiên mã này có thể ñược ñịnh nghĩa lại trong siêu tập tin $AttrDef.

Mỗi loại attribute cũng có một tên gọi riêng, tên gọi ñược viết hoa toàn bộ, bắt ñầu bằng kí hiệu $.

Bảng sau liệt kê một số loại attribute.

Mã loại (hệ 10)

Loại attribute Mô tả

16 $STANDARD_INFORMATION Chứa thông tin chung, ví dụ: các cờ, thời gian

Page 33: Co ban ve NTFS

NTFS Lê Gia Công

Trang 33

tạo, thời gian truy cập mới nhất, thời gian ghi mới nhất, người sở hữu, ñịnh danh bảo mật (security ID).

32 $ATTRIBUTE_LIST Cho biết vị trí các attribute của một tập tin.

48 $FILE_NAME Chứa tên tập tin (dạng Unicode), thời gian tạo, thời ñiểm ghi tập tin mới nhất, thời ñiểm truy cập mới nhất.

64 $VOLUME_VERSION Chứa thông tin về ổ ñĩa. Chỉ có ở phiên bản 1.2

64 $OBJECT_ID Chứa ñịnh danh duy nhất của tập tin hoặc thư mục. Chỉ có ở phiên bản 3.0 trở về sau.

80 $SECURITY_DESCRIPTOR Chứa thông tin về bảo mật và thông tin kiểm soát truy cập của tập tin.

96 $VOLUME_NAME Chứa tên ổ ñĩa logic.

112 $VOLUME_INFORMATION Chứa thông tin về phiên bản của hệ thống quản lý tập tin và các cờ hiệu.

128 $DATA Chứa nội dung của tập tin.

144 $INDEX_ROOT Chứa nút gốc (root node) của cây chỉ mục (index tree).

160 $INDEX_ALLOCATION Chứa các nút của cây chỉ mục (index tree) có gốc thuộc attribute $INDEX_ROOT.

176 $BITMAP Chứa bitmap cho siêu tập tin $MFT và cho các chỉ mục.

192 $SYMBOLIC_LINK Chứa thông tin liên kết mềm. Chỉ có ở phiên bản 1.2

192 $REPARSE_POINT Chứa thông tin liên kết mềm. Có ở các phiên bản 3.0 về sau.

208 $EA_INFORMATION Chứa thông tin ñảm bảo việc tương thích với các ứng dụng trên nền OS/2.

224 $EA Chứa thông tin ñảm bảo việc tương thích với các ứng dụng trên nền OS/2.

Page 34: Co ban ve NTFS

NTFS Lê Gia Công

Trang 34

256 $LOGGED_UTILITY_STREAM Chứa khóa (key) và thông tin mã hóa attribute (encrypted attribute) trong các phiên bản từ 3.0 về sau.

Với hệ thống quản lý tập tin FAT32, có thao tác ñọc và ghi nội dung tập tin. Tuy nhiên, ñối với hệ thống NTFS, thao tác ñọc và ghi nội dung tập tin ñược thay thế bằng thao tác ñọc và ghi các attribute.

Cấu trúc của một attribute gồm hai phần: header của attribute và nội dung của attribute. Xem Hình 24 dưới ñây.

Header của attribute

Header của attribute là phần ñầu của mỗi attribute, có kích thước 16 byte. Header chứa thông tin về: mã loại, kích thước và tên của attribute. Header cũng chứa cờ báo cho biết attribute có ñược nén hay không? có ñược mã hóa hay không?

Cấu trúc cụ thể của header ñược minh họa trong bảng sau.

Byte thứ Mô tả

0 – 3 Mã loại của attribute (type ID)

4 – 7 Kích thước của attribute

8 – 8 Cờ báo non-resident

9 – 9 Chiều dài của tên attribute

10 – 11 Vị trí (offset) chứa tên của attribute

Hình 24. cấu trúc của một attribute

MFT entry

Các nội dung của attribute Vùng chưa

sử dụng Header của

MFT entry

Các header của attribute

Page 35: Co ban ve NTFS

NTFS Lê Gia Công

Trang 35

12 – 13 Các cờ báo

14 – 15 Định danh của attribute (ñịnh danh này là duy nhất trong phạm vi một MFT entry)

Một MFT entry có thể chứa nhiều attribute cùng loại. Mỗi attribute có một mã ñịnh danh riêng (identifier) ñể phân biệt, mã ñịnh danh cần ñảm bảo tính duy nhất trong phạm vi mỗi MFT entry.

Đọc nội dung header của attribute

Hình 25 dưới ñây minh họa việc ñọc header của attribute.

Từ header của MFT entry, ñịa chỉ (offset) 0x14 -> 0x15 cho biết nơi bắt ñầu của các attribute (ñơn vị tính là byte). Giá trị của trường này là 0x0038, ñổi sang hệ thập phân là 56. Nghĩa là, trong MFT entry này, các attribute sẽ ñược bắt ñầu từ byte thứ 56.

Đọc 16 byte, bắt ñầu từ byte thứ 56 sẽ là header của attribute ñầu tiên, phần tô màu xanh lá cây trong Hình 25.

Giá trị cụ thể các trường của header ñược thể hiện trong bảng sau.

Byte thứ Giá trị (Hệ 16 – Hệ 10) Mô tả

0 – 3 0x00000010 – 16 Mã loại là 16: $STANDARD_INFORMATION

4 – 7 0x00000060 – 96 Kích thước của attribute là 96 byte

8 – 8 0x00 – 0 Attribute thuộc kiểu resident

9 – 9 0x00 – 0 Attribute này không ñược ñặt tên, nên không có giá trị chiều dài của tên.

10 – 11 0x0000 – 0 Attribute này không ñược ñặt tên, nên không có thông tin về vị trí của tên.

Physical Sector: Absolute Sector 6,312,933

00000000: 46 49 4C 45 30 00 03 00 - 7B 35 34 09 00 00 00 00 FILE0...{54.....

00000010: 0B 00 01 00 38 00 01 00 - 68 01 00 00 00 04 00 00 ....8...h.......

00000020: 00 00 00 00 00 00 00 00 - 04 00 00 00 D3 29 00 00 .............)..

00000030: 06 00 00 00 00 00 00 00 - 10 00 00 00 60 00 00 00 ............`...

00000040: 00 00 00 00 00 00 00 00 - 48 00 00 00 18 00 00 00 ........H.......

00000050: E4 73 BB 00 2F 35 CF 01 - D0 04 CA ED 2E 35 CF 01 .s../5.......5..

00000060: 54 33 88 04 2F 35 CF 01 - E4 73 BB 00 2F 35 CF 01 T3../5...s../5..

00000070: 20 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ...............

00000080: 00 00 00 00 D9 02 00 00 - 00 00 00 00 00 00 00 00 ................

Hình 25. minh họa việc ñọc header của attribute

Header của

MFT entry

0x14 -> 0x15

Header của attribute

Page 36: Co ban ve NTFS

NTFS Lê Gia Công

Trang 36

12 – 13 0x0000 – 0 Giá trị cờ báo

14 – 15 0x0000 – 0 Định danh của attribute (attribute ID) là 0.

Nội dung của attribute

Phần nội dung của attribute ñược sử dụng ñể chứa dữ liệu ở ñịnh dạng bất kì, với kích thước bất kì. Ví dụ, attribute chứa nội dung của một tập tin có thể có kích thước từ vài MB tới hàng GB. Tuy nhiên, kích thước của một MFT entry chỉ là 1024 byte, nên việc chứa toàn bộ nội dung của attribute trong MFT entry là không thực tế.

Để giải quyết vấn ñề này, hệ thống NTFS cung cấp hai tùy chọn ñể lưu nội dung của attribute:

- lưu trực tiếp trong MFT entry,

- và lưu ở ngoài MFT entry.

Attribute có phần nội dung ñược lưu ngay trong MFT entry ñược gọi là resident attribute (attribute thường trú), thường áp dụng với các attribute có kích thước phần nội dung nhỏ.

Attribute lưu phần nội dung ở các cluster bên ngoài MFT entry ñược gọi là non-resident attribute (attribute không thường trú).

Trong header của attribute có trường cho biết attribute ñó là resident hay non-resident. Nếu attribute thuộc loại resident, phần nội dung sẽ ñược ñặt ngay sau header của attribute, ngược lại, nếu attribute thuộc loại non-resident, header sẽ cung cấp ñịa chỉ của cluster. Xem hình minh họa sau ñây, Hình 25: attribute thứ nhất, thứ hai thuộc loại resident, attribute thứ ba thuộc loại non-resident.

Tổ chức cụ thể của một attribute kiểu non-resident sẽ ñược trình bày sau.

Phần này sẽ trình bày về tổ chức của một attribute kiểu resident. Cấu trúc của một attribute kiểu resident ñược minh họa trong bảng sau.

Cluster 829

Hình 26. ví dụ về attribute kiểu resident và non-resident

MFT entry

Nội dung của attribute Vùng chưa

sử dụng Header của

MFT entry

Các header của attribute

Page 37: Co ban ve NTFS

NTFS Lê Gia Công

Trang 37

Byte thứ Mô tả

0 - 15 Cấu trúc header chuẩn (có trong tất cả các loại attribute – Hình 25).

16 – 19 Cho biết kích thước phần nội dung của attribute.

20 - 21 Cho biết nơi bắt ñầu (offset) của phần nội dung.

Tùy thuộc vào mỗi loại attribute, phần nội dung của attribute sẽ có cấu trúc tổ chức khác nhau.

Để hiểu rõ hơn về cấu trúc của attribute, phần tiếp theo sẽ trình bày chi tiết về các attribute: $STANDARD_INFORMATION, $FILE_NAME, $DATA.

Attribute $STANDARD_INFORMATION

Attribute $STANDARD_INFORMATION có trong tất cả các tập tin và thư mục, attribute này chứa một số thông tin quan trọng như: thời gian, ngày tháng, quyền sở hữu (ownership), phân quyền sử dụng (security), hạn ngạch ñĩa (quota). Những thông tin này không cần thiết ñối với việc lưu trữ tập tin, tuy nhiên, Windows rất cần ñến nó trong các ứng dụng.

Mã loại (type ID) mặc ñịnh của attribute này là 16. Trong Windows 2000 và XP, attribute này có kích thước 72 byte, trong Windows NT là 48 byte, trong Windows 7 là 96 byte.

Hệ thống Windows luôn sắp xếp các attribute trong một MFT entry theo thứ tự tăng dần của mã loại. Do mã loại của attribute $STANDARD_INFORMATION có giá trị nhỏ nhất nên nó luôn nằm ở vị trí ñầu tiên, ngay sau header của MFT entry.

Attribute này có bốn thông tin về thời gian, gồm:

- Thời gian tạo tập tin (created).

- Thời gian thay ñổi mới nhất nội dung hai attribute $DATA hoặc $INDEX (Modified Time).

- Thời gian thay ñổi mới nhất thông tin mô tả tập tin (metadata). Thời gian này không ñược hiển thị cho người dùng (MFT Modified Time).

- Thời gian truy cập nội dung tập tin mới nhất (Accessed Time).

Attribute này cũng chứa “cờ báo” (flag) cho biết thông tin về kiểu của tập tin: chỉ ñọc (read only), tập tin hệ thống (system), thông tin liên quan ñến việc lưu dự phòng (archive).

Với các MFT entry không phải là của tập tin hoặc thư mục, attribute $STANDARD_INFORMATION còn cung cấp thông tin về: nén, tập tin “thưa” (sparse) hoặc mã hóa (encrypted). Nếu là MFT entry của tập tin hoặc thư mục, các thông tin này sẽ ñược lưu trong header của MFT entry.

Trong các hệ thống NTFS phiên bản 3.0 về sau (Windows 2000, XP…v.v), attribute này có chứa thêm bốn thông tin gồm:

Page 38: Co ban ve NTFS

NTFS Lê Gia Công

Trang 38

- Thông tin về sở hữu (owner identity), ñược sử dụng trong việc tính hạn ngạch ñĩa của mỗi người dùng.

- Thông tin cho biết dung lượng của tập tin ñược tính vào hạn ngạch ñĩa của người dùng.

- Định danh bảo mật (Security ID), ñịnh danh này ñược sử dụng trong tập tin $Secure ñể xác ñịnh quyền truy cập tập tin.

- Giá trị USN (update sequence number), hỗ trợ trong việc tìm kiếm hàng loạt các tập tin ñã có thay ñổi trong một khoảng thời gian nhất ñịnh.

Hình 27 là attribute $STANDARD_INFORMATION trong MFT entry của tập tin Test.txt.

Quan sát Hình 27, trong phần header của MFT entry, offset 0x14 -> 0x15 cho biết vị trí bắt ñầu của các attribute, có giá trị là 0x0038 = 56.

Trong một MFT entry, các attribute ñược sắp xếp theo thứ tự tăng dần của mã loại (type ID). Attribute này có mã loại nhỏ nhất nên luôn luôn nằm ở vị trí ñầu tiên.

Cấu trúc của attribute $STANDARD_INFORMATION ñược thể hiện ở bảng sau.

Byte thứ Mô tả

0 – 15 Header của attribute $STANDARD_INFORMATION.

16 – 19 Kích thước phần nội dung của attribute $STANDARD_INFORMATION. 0x00000048 = 72 (byte).

20 – 21 Nơi bắt ñầu (offset) của phần nội dung attribute $STANDARD_INFORMATION. 0x0018 = 24 (byte thứ 24 tính từ ñầu attribute).

Physical Sector: Absolute Sector 6,312,933

00000000: 46 49 4C 45 30 00 03 00 - 7B 35 34 09 00 00 00 00 FILE0...{54.....

00000010: 0B 00 01 00 38 00 01 00 - 68 01 00 00 00 04 00 00 ....8...h.......

00000020: 00 00 00 00 00 00 00 00 - 04 00 00 00 D3 29 00 00 .............)..

00000030: 06 00 00 00 00 00 00 00 - 10 00 00 00 60 00 00 00 ............`...

00000040: 00 00 00 00 00 00 00 00 - 48 00 00 00 18 00 00 00 ........H.......

00000050: E4 73 BB 00 2F 35 CF 01 - D0 04 CA ED 2E 35 CF 01 .s../5.......5..

00000060: 54 33 88 04 2F 35 CF 01 - E4 73 BB 00 2F 35 CF 01 T3../5...s../5..

00000070: 20 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ...............

00000080: 00 00 00 00 D9 02 00 00 - 00 00 00 00 00 00 00 00 ................

00000090: 10 EC BA 00 00 00 00 00 - 30 00 00 00 70 00 00 00 ........0...p...

000000A0: 00 00 00 00 00 00 02 00 - 52 00 00 00 18 00 01 00 ........R.......

000000B0: 05 00 00 00 00 00 05 00 - E4 73 BB 00 2F 35 CF 01 .........s../5..

000000C0: E4 73 BB 00 2F 35 CF 01 - E4 73 BB 00 2F 35 CF 01 .s../5...s../5..

000000D0: E4 73 BB 00 2F 35 CF 01 - 00 00 00 00 00 00 00 00 .s../5..........

000000E0: 00 00 00 00 00 00 00 00 - 20 00 00 00 00 00 00 00 ........ .......

Hình 27. Attribute $STANDARD_INFORMATION

0x14 -> 0x15

Page 39: Co ban ve NTFS

NTFS Lê Gia Công

Trang 39

Bảng sau là nội dung header của attribute $STANDARD_INFORMATION.

Byte thứ Giá trị (Hệ 16 – Hệ 10) Mô tả

0 – 3 0x00000010 – 16 Mã loại là 16.

4 – 7 0x00000060 – 96 Kích thước của attribute $STANDARD_INFORMATION là 96 byte.

8 – 8 0x00 – 0 Attribute thuộc kiểu resident.

9 – 9 0x00 – 0 Attribute này không ñược ñặt tên, nên không có giá trị chiều dài của tên.

10 – 11 0x0000 – 0 Attribute này không ñược ñặt tên, nên không có thông tin về vị trí của tên.

12 – 13 0x0000 – 0 Giá trị cờ báo.

14 – 15 0x0000 – 0 Định danh của attribute (attribute ID) $STANDARD_INFORMATION là 0.

Phần nội dung của attribute $STANDARD_INFORMATION bắt ñầu tại byte 24 (tính từ ñầu attribute $STANDARD_INFORMATION), kích thước của phần nội dung là 72 byte.

Cấu trúc của phần nội dung attribute $STANDARD_INFORMATION ñược thể hiện ở bảng sau.

Byte thứ Giá trị hệ 16 – Hệ 10 Mô tả

0 – 7 0x01CF 352F 00BB 73E4 -130381390209053668

Thời gian tạo tập tin: Saturday, March 1, 2014 4:17:01AM UTC.

8 – 15 0x01CF 352E EDCA 04D0 – 130381389891241168

Thời gian thay ñổi mới nhất nội dung hai attribute $DATA hoặc $INDEX: Saturday, March 1, 2014 4:16:29AM UTC.

16 – 23 0x01CF 352F 0488 3354 – 130381390272803668

Thời gian thay ñổi mới nhất thông tin mô tả tập tin: Saturday, March 1, 2014 4:17:07AM UTC.

24 – 31 0x01CF 352F 00BB 73E4 – 130381390209053668

Thời gian truy cập nội dung tập tin mới nhất: Saturday, March 1, 2014 4:17:01AM UTC.

32 – 35 0x00000020 Giá trị cờ báo, tập tin ñược ñánh dấu là archive. (xem bảng về các giá trị của cờ ở bên dưới).

36 – 39 0x00000000 Maximum number of versions

Page 40: Co ban ve NTFS

NTFS Lê Gia Công

Trang 40

40 – 43 0x00000000 Version number

44 – 47 0x00000000 Class ID

48 – 51 0x00000000 Định danh sở hữu - Owner ID (từ phiên bản 3.0 về sau).

52 – 55 0x000002D9 Định danh bảo mật - Security ID (từ phiên bản 3.0 về sau). Lưu ý: ñây không phải là SID trong Windows.

56 – 63 0x00000000 00000000 Thông tin về hạn ngạch - Quota charged (từ phiên bản 3.0 về sau)

64 – 71 0x0000 0000 00BA EC10 Giá trị của USN (update sequence number) (từ phiên bản 3.0 về sau)

Giá trị về thời gian ñược biểu diễn bằng một số 64 bit, ñây là kết quả của: (số nano giây tính từ thời ñiểm 1/1/1601 UTC)/100, hay nói cách khác, ñây là số 100 nano giây tính từ thời ñiểm 1/1/1601 UTC. UTC là một thỏa hiệp viết tắt của Coordinated Universal Time, là giờ chuẩn quốc tế, tạm dịch là Giờ phối hợp quốc tế (wikipedia).

Ví dụ, thời gian tạo tập tin là: Saturday, March 1, 2014 4:17:01AM UTC sẽ ñược biểu diễn là: 0x01CF 352F 00BB 73E4, ñổi ra hệ 10 là 130381390209053668 (trăm nano giây). Có thể sử dụng công cụ ñổi tại website: www.silisoftware.com/tools/date.php.

Bảng sau là giá trị và ý nghĩa của cờ tại offset 32 –> 35.

Giá trị cờ Ý nghĩa

0x0001 Chỉ ñọc (read only).

0x0002 Ẩn (hidden).

0x0004 Thuộc hệ thống (system).

0x0020 Thông tin phục vụ việc lưu dự phòng. Tập tin ñược ñánh dấu là archive.

0x0040 Thuộc thiết bị (Device).

0x0080 #Normal.

0x0100 Temporary.

0x0200 Tập tin ‘thưa’ - Spares file.

Page 41: Co ban ve NTFS

NTFS Lê Gia Công

Trang 41

0x0400 Reparse point.

0x0800 Nén (compressed).

0x1000 Offline

0x2000 Nội dung không ñược tạo chỉ mục ñể tăng tốc ñộ tìm kiếm.

0x4000 Mã hóa (encrypted).

Attribute $FILE_NAME

Mỗi tập tin hoặc thư mục (từ ñây gọi tắt là tập tin) luôn có ít nhất một attribute $FILE_NAME trong MFT entry của nó. Một bản sao của attribute $FILE_NAME cũng ñược lưu trong index của thư mục cha (chứa nó), hai phiên bản này không nhất thiết phải giống nhau hoàn toàn về nội dung. Nội dung của attribute $FILE_NAME trong index của thư mục cha sẽ ñược ñề cập sau, phần này chỉ xem xét attribute $FILE_NAME trong MFT entry.

Mã loại của attribute này là 48. Kích thước của attribute này không cố ñịnh, tùy thuộc vào chiều dài của tên tập tin. Cụ thể, kích thước của attribute là: 66 + chiều dài của tên tập tin.

Tên của tập tin là một chuỗi kí tự kiểu UTF-16 Unicode, ñược ñịnh dạng theo kiểu DOS 8.3, Win32 hoặc POSIX. Windows thường yêu cầu một tập tin ít nhất phải có ñịnh dạng tên kiểu DOS 8.3, do ñó trong attribute $FILE_NAME sẽ có cả hai loại ñịnh dạng là: DOS và dạng tên ñầy ñủ. Tùy thuộc vào kiểu ñịnh dạng tên, sẽ có quy ñịnh những kí tự nào gọi là hợp lệ khi ñặt tên cho tập tin.

Attribute $FILE_NAME có chứa ñịa chỉ (file reference) MFT entry của thư mục cha chứa nó.

Attribute $FILE_NAME cũng chứa bốn thông tin về thời gian, tương tự như trong attribute $STANDARD_INFORMATION. Tuy nhiên, hệ thống Windows không cập nhật thông tin về thời gian thường xuyên như trong attribute $STANDARD_INFORMATION, thông thường nó chỉ ñược cập nhật khi tập tin ñược tạo ra, ñược di chuyển hoặc khi ñổi tên.

Trong attribute $FILE_NAME có trường cho biết kích thước của tập tin, tuy nhiên, giá trị trường này thường là 0.

Cuối cùng, attribute $FILE_NAME có chứa “cờ báo” cho biết một số thông tin liên quan ñến tập tin này, ví dụ như: là thư mục, là tập tin chỉ ñọc, là tập tin hệ thống, ñược nén, ñược mã hóa…v.v.

Nói chung, attribute $FILE_NAME chứa rất nhiều các thông tin tương tự như trong attribute $STANDARD_INFORMATION. Trong ñó có hai thông tin quan trọng là tên của tập tin, tên này cũng ñược sử dụng ñể tạo chỉ mục trong thư mục và ñịa chỉ của thư mục cha, ñịa chỉ này giúp xác ñịnh ñường dẫn.

Trong MFT entry, thông thường attribute $FILE_NAME nằm ở vị trí thứ hai và là attribute kiểu resident. Tuy nhiên, nếu một tập tin cần nhiều hơn một MFT entry thì sẽ có attribute

Page 42: Co ban ve NTFS

NTFS Lê Gia Công

Trang 42

$ATTRIBUTE_LIST nằm giữa attribute $STANDARD_INFORMATION và attribute $FILE_NAME.

Cũng như tất cả các attribute khác, cấu trúc của attribute $FILE_NAME gồm các phần sau.

Byte thứ Mô tả

0 – 15 Cấu trúc header chuẩn của attribute $FILE_NAME.

16 – 19 Kích thước phần nội dung của attribute $FILE_NAME.

20 – 21 Nơi bắt ñầu (offset) của phần nội dung attribute $FILE_NAME.

Để ñọc ñược nội dung của attribute $FILE_NAME, trước hết cần tính byte bắt ñầu của attribute này.

Attribute $FILE_NAME nằm ngay sau attribute $STANDARD_INFORMATION. Attribute $STANDARD_INFORMATION bắt ñầu tại offset 56, kích thước của $STANDARD_INFORMATION là 96 byte, vậy attribute $FILE_NAME sẽ bắt ñầu tại vị trí (byte): 56 + 96 = 152.

Từ offset 152, ñọc 16 byte sẽ là nội dung header của attribute $FILE_NAME, xem Hình 28.

Bảng sau là nội dung header của attribute $FILE_NAME.

Byte thứ Giá trị (Hệ 16 – Hệ 10) Mô tả

Physical Sector: Absolute Sector 6,312,933

00000000: 46 49 4C 45 30 00 03 00 - 7B 35 34 09 00 00 00 00 FILE0...{54.....

00000010: 0B 00 01 00 38 00 01 00 - 68 01 00 00 00 04 00 00 ....8...h.......

00000020: 00 00 00 00 00 00 00 00 - 04 00 00 00 D3 29 00 00 .............)..

00000030: 06 00 00 00 00 00 00 00 - 10 00 00 00 60 00 00 00 ............`...

00000040: 00 00 00 00 00 00 00 00 - 48 00 00 00 18 00 00 00 ........H.......

00000050: E4 73 BB 00 2F 35 CF 01 - D0 04 CA ED 2E 35 CF 01 .s../5.......5..

00000060: 54 33 88 04 2F 35 CF 01 - E4 73 BB 00 2F 35 CF 01 T3../5...s../5..

00000070: 20 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ...............

00000080: 00 00 00 00 D9 02 00 00 - 00 00 00 00 00 00 00 00 ................

00000090: 10 EC BA 00 00 00 00 00 - 30 00 00 00 70 00 00 00 ........0...p...

000000A0: 00 00 00 00 00 00 02 00 - 52 00 00 00 18 00 01 00 ........R.......

000000B0: 05 00 00 00 00 00 05 00 - E4 73 BB 00 2F 35 CF 01 .........s../5..

000000C0: E4 73 BB 00 2F 35 CF 01 - E4 73 BB 00 2F 35 CF 01 .s../5...s../5..

000000D0: E4 73 BB 00 2F 35 CF 01 - 00 00 00 00 00 00 00 00 .s../5..........

000000E0: 00 00 00 00 00 00 00 00 - 20 00 00 00 00 00 00 00 ........ .......

000000F0: 08 03 54 00 65 00 73 00 - 74 00 2E 00 74 00 78 00 ..T.e.s.t...t.x.

00000100: 74 00 00 00 00 00 00 00 - 40 00 00 00 28 00 00 00 t.......@...(...

Hình 28. Attribute $FILE_NAME (tô màu nâu)

Attribute $FILE_NAME

Page 43: Co ban ve NTFS

NTFS Lê Gia Công

Trang 43

0 – 3 0x00000030 – 48 Mã loại là 48.

4 – 7 0x00000070 – 112 Kích thước của attribute $FILE_NAME là 112 byte.

8 – 8 0x00 – 0 Attribute thuộc kiểu resident.

9 – 9 0x00 – 0 Attribute này không ñược ñặt tên, nên không có giá trị chiều dài của tên.

10 – 11 0x0000 – 0 Attribute này không ñược ñặt tên, nên không có thông tin về vị trí của tên.

12 – 13 0x0000 – 0 Giá trị cờ báo.

14 – 15 0x0002 – 2 Định danh của attribute (attribute ID) $FILE_NAME là 2.

Đọc tiếp byte thứ 16 -> 19 ñể biết kích thước phần nội dung, 0x00000052 = 82 byte.

Đọc byte thứ 20 -> 21 ñể biết vị trí bắt ñầu của phần nội dung, 0x0018 = 24, vậy phần nội dung sẽ ñược lưu bắt ñầu từ byte thứ 24 tính từ ñầu attribute.

Cấu trúc các trường của phần nội dung attribute $FILE_NAME ñược mô tả trong bảng sau.

Byte thứ Giá trị hệ 16 – hệ 10 Mô tả

0 – 7 “05 00 00 00 00 00 05 00” Địa chỉ MFT entry của thư mục cha (file reference).

8 – 15 0x01CF352F00BB73E4 – 130381390209053668

Thời gian tạo tập tin: Saturday, March 1, 2014 4:17:01AM UTC.

16 – 23 0x01CF352F00BB73E4 – 130381390209053668

Thời gian tập tin có thay ñổi: Saturday, March 1, 2014 4:17:01AM UTC.

24 – 31 0x01CF352F00BB73E4 – 130381390209053668

Thời gian MFT entry có thay ñổi: Saturday, March 1, 2014 4:17:01AM UTC.

32 – 39 0x01CF352F00BB73E4 – 130381390209053668

Thời gian truy cập tập tin mới nhất: Saturday, March 1, 2014 4:17:01AM UTC.

40 – 47 0x0000000000000000 Kích thước cấp phát cho tập tin. NTFS không sử dụng ñến trường này, giá trị

Page 44: Co ban ve NTFS

NTFS Lê Gia Công

Trang 44

luôn là 0.

48 – 55 0x0000000000000000 Kích thước thật của tập tin. NTFS không sử dụng ñến trường này, giá trị luôn là 0. Giá trị thật ñược lưu trong attribute $DATA.

56 – 59 0x00000020 Giá trị cờ báo, tập tin ñược ñánh dấu là archive. (Xem thêm về giá trị và ý nghĩa của cờ ñã ñề cập trong phần attribute $STANDARD_INFORMATION).

60 – 63 “00 00 00 00” Giá trị Reparse

64 – 64 0x08 – 8 Chiều dài của tên tập tin: 8 kí tự.

65 – 65 0x03 – 3 Giá trị cho biết ñịnh dạng tên tập tin (Namespace). Xem thêm bên dưới.

66+ (8) “54 00 65 00 73 00 74 00” Tên của tập tin: Test.txt

Bảng sau mô tả một số kiểu ñịnh dạng tên tập tin.

Giá trị

Kiểu ñịnh

dạng tên

Mô tả

0 POSIX Tên có phân biệt chữ hoa, chữ thường. Cho phép sử dụng tất cả các kí tự Unicode ngoại trừ ‘/’ và NULL.

1 Win32 Tên có phân biệt chữ hoa, chữ thường. Cho phép sử dụng tất cả các kí tự Unicode ngoại trừ ‘/’, ‘\’, ‘ :’, ‘ >’, ‘<’ và ‘?’.

2 DOS Tên không phân biệt chữ hoa, chữ thường, tất cả ñều ñược chuyển sang dạng chữ hoa. Số kí tự của phần tên phải ít hơn hoặc bằng tám kí tự, phần mở rộng phải ít hơn hoặc bằng ba kí tự.

3 Win32 & DOS

Định dạng kép Win32 và DOS. Khi ñịnh dạng DOS có thể lưu ñầy ñủ tên tập tin rồi, thì mặc ñịnh hiểu là nó cũng ñược lưu ở ñịnh dạng Win32 mà không cần lưu ở hai ñịnh dạng riêng biệt.

Page 45: Co ban ve NTFS

NTFS Lê Gia Công

Trang 45

Attribute $DATA

Attribute $DATA ñược sử dụng ñể lưu trữ tất cả các loại dữ liệu. Mã loại của attribute này là 128. Attribute $DATA không có kích thước cố ñịnh. Mỗi tập tin có thể gồm một hoặc nhiều attribute $DATA. Attribute $DATA ñầu tiên không có tên, các attribute $DATA tiếp sau phải ñược ñặt tên cụ thể.

Trong hệ thống Windows, attribute $DATA cũng ñược tạo thêm khi người dùng nhập thông tin vào mục “Summary” (chuột phải vào tập tin\ chọn properties\ Summary), ñược tạo thêm do trình anti-virus, hoặc ñược tạo thêm do chương trình sao lưu dự phòng…v.v.

Attribute $DATA có thể ñược mã hóa ñể ñảm bảo an toàn thông tin. Khi ñược mã hóa, “cờ báo” trong header của attribute sẽ ñược thiết lập, “khóa” của quá trình mã hóa ñược lưu trong attribute $LOGGED_UTILITY_STREAM.

Hình 29 minh họa một tập tin với hai attribute $DATA ñã ñược mã hóa.

Cấu trúc của attribute $DATA khá ñơn giản. Sau phần header của attribute là phần nội dung, ñây là dữ liệu ở dạng thô của một tập tin. Attribute $DATA không có kích thước tối thiểu và tối ña. Nếu kích thước phần nội dung vượt quá 700 byte, attribute sẽ ñược chuyển từ loại resident sang loại non-resident. Trong hầu hết các tập tin, attribute $DATA luôn nằm ở vị trí sau cùng trong MFT entry.

Phần sau ñây trình bày quá trình ñọc attribute $DATA, xem Hình 30.

Đọc header của attribute nằm kế sau attribute $FILE_NAME, gồm 16 byte. Xét mã loại, byte 0 -> 3 có giá trị là 0x00000040 = 64, kết luận: ñây là attribute $OBJECT_ID. Tính kích thước của attribute $OBJECT_ID ñể nhảy qua attribute kế tiếp, byte 4 –> 7 có giá trị là 0x00000028 = 40 byte.

Vậy ta sẽ bỏ qua 40 byte của attribute $OBJECT_ID, ñể ñọc header của attribute kế tiếp.

Page 46: Co ban ve NTFS

NTFS Lê Gia Công

Trang 46

Hình 29. Một tập tin với hai attribute $DATA ñã ñược mã hóa

MFT entry

28 MFT Entry Header

Signature: FILE Flags: Inuse Link: 1

$FILE_NAME (48) Attribute id: 5

Resident Flags: Archive Name: file2.txt Parent MFT Entry: 5 Created: Tue Jul 20 11:41:15 2004 File Modified: Tue Jul 20 11:41:08 2004 MFT Modified Tue Jul 20 11:41:08

$LOGGED_UTILITY_ STREAM (256) Attribute id: 9 Non-resident

Cluster: 7813 - 7814 $STANDARD_ INFORMATION (16)

Attribute id: 0 Resident

Flags: Archive, Encrypted Security ID: 258 Created: Tue Jul 20 11:41:15 2004 File Modified: Tue Jul 20 11:41:46 2004 MFT Modified Tue Jul 20 11:41:46 2004 Accessed: Tue Jul 20 11:41:46 2004

$OBJECT_ID (64) Attribute id: 6

Resident

$DATA (128) Attribute id: 4 Non – resident

Encrypted Cluster: 6822 - 6843

$DATA (128) Name: ADS

Attribute id: 10 Non – resident

Encrypted Cluster: 6873

Page 47: Co ban ve NTFS

NTFS Lê Gia Công

Trang 47

Xét mã loại, byte 0 -> 3 có giá trị 0x00000080 = 128, kết luận: ñây là attribute $DATA.

Bảng sau là nội dung header của attribute $DATA.

Byte thứ Giá trị

(Hệ 16 – Hệ 10)

Mô tả

0 – 3 0x00000080 – 128 Mã loại là 128

4 – 7 0x00000030 – 48 Kích thước của attribute $DATA là 48 byte

8 – 8 0x00 – 0 Attribute thuộc kiểu resident

9 – 9 0x00 – 0 Attribute này không ñược ñặt tên, nên không có giá trị chiều dài của tên.

10 – 11 0x0018 – 24 Attribute này không ñược ñặt tên, nhưng vẫn có thông tin về vị trí của tên?

12 – 13 0x0000 – 0 Giá trị cờ báo.

Physical Sector: Absolute Sector 6,312,933

00000000: 46 49 4C 45 30 00 03 00 - 7B 35 34 09 00 00 00 00 FILE0...{54.....

00000010: 0B 00 01 00 38 00 01 00 - 68 01 00 00 00 04 00 00 ....8...h.......

00000020: 00 00 00 00 00 00 00 00 - 04 00 00 00 D3 29 00 00 .............)..

00000030: 06 00 00 00 00 00 00 00 - 10 00 00 00 60 00 00 00 ............`...

00000040: 00 00 00 00 00 00 00 00 - 48 00 00 00 18 00 00 00 ........H.......

00000050: E4 73 BB 00 2F 35 CF 01 - D0 04 CA ED 2E 35 CF 01 .s../5.......5..

00000060: 54 33 88 04 2F 35 CF 01 - E4 73 BB 00 2F 35 CF 01 T3../5...s../5..

00000070: 20 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ...............

00000080: 00 00 00 00 D9 02 00 00 - 00 00 00 00 00 00 00 00 ................

00000090: 10 EC BA 00 00 00 00 00 - 30 00 00 00 70 00 00 00 ........0...p...

000000A0: 00 00 00 00 00 00 02 00 - 52 00 00 00 18 00 01 00 ........R.......

000000B0: 05 00 00 00 00 00 05 00 - E4 73 BB 00 2F 35 CF 01 .........s../5..

000000C0: E4 73 BB 00 2F 35 CF 01 - E4 73 BB 00 2F 35 CF 01 .s../5...s../5..

000000D0: E4 73 BB 00 2F 35 CF 01 - 00 00 00 00 00 00 00 00 .s../5..........

000000E0: 00 00 00 00 00 00 00 00 - 20 00 00 00 00 00 00 00 ........ .......

000000F0: 08 03 54 00 65 00 73 00 - 74 00 2E 00 74 00 78 00 ..T.e.s.t...t.x.

00000100: 74 00 00 00 00 00 00 00 - 40 00 00 00 28 00 00 00 t.......@...(...

00000110: 00 00 00 00 00 00 03 00 - 10 00 00 00 18 00 00 00 ................

00000120: A0 B9 07 6F 59 26 E3 11 - BC E2 00 0C 29 02 BC 73 ...oY&......)..s

00000130: 80 00 00 00 30 00 00 00 - 00 00 18 00 00 00 01 00 ....0...........

00000140: 15 00 00 00 18 00 00 00 - 44 75 20 6C 69 65 75 20 ........Du lieu

00000150: 64 61 6E 67 20 76 61 6E - 20 62 61 6E 21 00 00 00 dang van ban!...

00000160: FF FF FF FF 82 79 47 11 - 00 00 00 00 00 00 00 00 .....yG......... 00000170: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................

Hình 30. Attribute $OBJECT_ID và Attribute $DATA

Attribute $FILE_NAME

Attribute $OBJECT_ID

Attribute $DATA

Page 48: Co ban ve NTFS

NTFS Lê Gia Công

Trang 48

14 – 15 0x0001 – 1 Định danh của attribute (attribute ID) $DATA là 1.

Đọc tiếp byte thứ 16 -> 19 ñể biết kích thước phần nội dung, 0x00000015 = 21 byte.

Đọc byte thứ 20 -> 21 ñể biết vị trí bắt ñầu của phần nội dung, 0x0018 = 24, tức là bắt ñầu từ byte thứ 24 tính từ ñầu attribute.

Nội dung của tập tin văn bản là “Du lieu dang van ban!”.

Cuối cùng, do chưa sử dụng hết 1024 byte của MTF entry, hệ thống sử dụng giá trị 0xFFFFFFFF ñể ñánh dấu kết thúc phần nội dung của MFT entry.

Phụ lục

Hướng dẫn ñọc ñĩa cứng bằng phần mềm Disk Editor

Để thuận tiện trong việc khảo sát ñĩa cứng của máy tính. phần này sẽ hướng dẫn cách ñọc ñĩa cứng bằng phần mềm Disk Editor, kết xuất nội dung ñĩa cứng (dạng hex) ra tập tin văn bản (.txt).

Các phần mềm cần có:

o VMware

o Windows XP, Windows 7, Windows 8…v.v

o Đĩa Hiren’s Boot 10.1

Các bước chuẩn bị:

o Cài ñặt phần mềm VMware.

o Sử dụng phần mềm VMware ñể tạo máy tính ảo, máy ảo phải có một ổ ñĩa logic ñược ñịnh dạng kiểu FAT32. Mục ñích ñể lưu tập tin ñọc ñược từ chương trình Disk Editor sang.

o Cài ñặt hệ ñiều hành Windows lên máy tính ảo vừa tạo.

o Đưa ñĩa Hiren’s Boot vào máy tính ảo.

1. Khởi ñộng máy ảo, bấm phím F2, ñể vào cấu hình lại BIOS (VMware 6.0, các phiên bản sau vào Power On to BIOS), chọn khởi ñộng từ ñĩa CD trước, bấm phím F10 ñể lưu lại thông tin vừa cấu hình, xuất hiện cửa sổ xác nhận thông tin, bấm phím Enter. Máy tính sẽ khởi ñộng lại

Page 49: Co ban ve NTFS

NTFS Lê Gia Công

Trang 49

2. Khi máy tính khởi ñộng lại, xuất hiện bảng lựa chọn khởi ñộng, chọn Start Hiren’s BootCD ñể khởi ñộng từ ñĩa CD.

3. Danh sách các chương trình có trong ñĩa Hiren’s Boot xuất hiện, chọn mục Hard Disk Tools…, chọn more, chọn more, chọn “Norton Disk Editor 2002”.

Page 50: Co ban ve NTFS

NTFS Lê Gia Công

Trang 50

4. Màn hình chương trình Disk Editor xuất hiện.

5. Vào mục Object, chọn Drive, trong mục Type chọn Physical Disk, chọn Hard Disk 1 ở khung bên trái, chọn OK.

6. Để chọn số hiệu sector vật lý của ñĩa cứng cần ñọc, vào mục Object, chọn Physical Sector.., muốn ñọc từ sector nào thì ñiền vào mục Starting Sector, và ñiền tổng số sector cần ñọc vào mục Number of Sectors.

7. Để kết xuất nội dung của ñĩa cứng dạng hex sang tập tin văn bản, vào mục Tools, chọn Print Object As…, tại mục Where to print, chọn File, nhập ñường dẫn, (Ổ ñĩa ñịnh dạng kiểu FAT32\TenTapTin.txt). Lưu ý: do phần mềm Disk Editor phiên bản này chỉ nhận ra ổ ñĩa ñịnh dạng theo FAT32, nên ổ ñĩa ñược ñịnh dạng theo FAT32 ñầu tiên luôn ñược hiểu là ổ ñĩa C:\. Bấm OK, nếu kết xuất thành công, sẽ có thông báo Print complete.

Page 51: Co ban ve NTFS

NTFS Lê Gia Công

Trang 51

8. Khởi ñộng lại máy ảo, vào hệ ñiều hành Windows, mở ổ ñĩa ñịnh dạng FAT32 sẽ thấy tập tin kết quả.

9. Kết quả.

Page 52: Co ban ve NTFS

NTFS Lê Gia Công

Trang 52

10. Để lấy tập tin kết quả này từ máy ảo sang máy thật, có thể cài ñặt VMTools ñể chép trực tiếp hoặc thực hiện chia sẻ thư mục giữa máy ảo và máy thật.

Tài liệu tham khảo

[1] http://en.wikipedia.org/wiki/NTFS

[2] Lê Gia Công, FAT32, Khoa CNTT, Đại học Đà Lạt

[3] Brian Carrie, File System Forensic Analysis, Addison Wesley Professional, 2005

Physical Sector: Absolute Sector 206,848

00000000: EB 52 90 4E 54 46 53 20 - 20 20 20 00 02 08 00 00 .R.NTFS .....

00000010: 00 00 00 00 00 F8 00 00 - 3F 00 FF 00 00 28 03 00 ........?....(..

00000020: 00 00 00 00 80 00 80 00 - FF D7 7F 02 00 00 00 00 ..........�.....

00000030: 00 00 0C 00 00 00 00 00 - 02 00 00 00 00 00 00 00 ................

00000040: F6 00 00 00 01 00 00 00 - E5 59 08 44 81 08 44 62 .........Y.D..Db

00000050: 00 00 00 00 FA 33 C0 8E - D0 BC 00 7C FB 68 C0 07 .....3.....|.h..

00000060: 1F 1E 68 66 00 CB 88 16 - 0E 00 66 81 3E 03 00 4E .hf......f.>..N

00000070: 54 46 53 75 15 B4 41 BB - AA 55 CD 13 72 0C 81 FB TFSu..A..U..r...

00000080: 55 AA 75 06 F7 C1 01 00 - 75 03 E9 DD 00 1E 83 EC U.u.....u.......

00000090: 18 68 1A 00 B4 48 8A 16 - 0E 00 8B F4 16 1F CD 13 .h...H.........

000000A0: 9F 83 C4 18 9E 58 1F 72 - E1 3B 06 0B 00 75 DB A3 .....Xr.;...u..

000000B0: 0F 00 C1 2E 0F 00 04 1E - 5A 33 DB B9 00 20 2B C8 ........Z3... +.

000000C0: 66 FF 06 11 00 03 16 0F - 00 8E C2 FF 06 16 00 E8 f...............

000000D0: 4B 00 2B C8 77 EF B8 00 - BB CD 1A 66 23 C0 75 2D K.+.w......f#.u-

000000E0: 66 81 FB 54 43 50 41 75 - 24 81 F9 02 01 72 1E 16 f..TCPAu$....r..

000000F0: 68 07 BB 16 68 70 0E 16 - 68 09 00 66 53 66 53 66 h...hp..h..fSfSf

00000100: 55 16 16 16 68 B8 01 66 - 61 0E 07 CD 1A 33 C0 BF U...h..fa....3..

00000110: 28 10 B9 D8 0F FC F3 AA - E9 5F 01 90 90 66 60 1E (........_...f`.

00000120: 06 66 A1 11 00 66 03 06 - 1C 00 1E 66 68 00 00 00 .f...f.....fh...

00000130: 00 66 50 06 53 68 01 00 - 68 10 00 B4 42 8A 16 0E .fP.Sh..h...B...

00000140: 00 16 1F 8B F4 CD 13 66 - 59 5B 5A 66 59 66 59 1F ......fY[ZfYfY

00000150: 0F 82 16 00 66 FF 06 11 - 00 03 16 0F 00 8E C2 FF ....f...........

00000160: 0E 16 00 75 BC 07 1F 66 - 61 C3 A0 F8 01 E8 09 00 ...u..fa.......

00000170: A0 FB 01 E8 03 00 F4 EB - FD B4 01 8B F0 AC 3C 00 ..............<.

00000180: 74 09 B4 0E BB 07 00 CD - 10 EB F2 C3 0D 0A 41 20 t.............A

00000190: 64 69 73 6B 20 72 65 61 - 64 20 65 72 72 6F 72 20 disk read error

000001A0: 6F 63 63 75 72 72 65 64 - 00 0D 0A 42 4F 4F 54 4D occurred...BOOTM

000001B0: 47 52 20 69 73 20 6D 69 - 73 73 69 6E 67 00 0D 0A GR is missing...

000001C0: 42 4F 4F 54 4D 47 52 20 - 69 73 20 63 6F 6D 70 72 BOOTMGR is compr

000001D0: 65 73 73 65 64 00 0D 0A - 50 72 65 73 73 20 43 74 essed...Press Ct

000001E0: 72 6C 2B 41 6C 74 2B 44 - 65 6C 20 74 6F 20 72 65 rl+Alt+Del to re

000001F0: 73 74 61 72 74 0D 0A 00 - 8C A9 BE D6 00 00 55 AA start.........U.