Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная робота3.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
370 Кб
Скачать
☆

Структура mft

Рассмотрим теперь структуру файла $MFT, чтобы понять, где в нем размещается информация о файлах.

Прежде всего, файл $MFT состоит из записей. Каждая запись, длина которой обычно составляет 1 Kb, содержит информацию об одном файле. То есть для хранения данных об одном файле отводится два сектора. Сначала в $MFT следуют записи, содержащие информацию о метафайлах: самой $MFT , ее копии $MFTMirror, и прочих файлах: $LogFile, $Volume, $AttrDef и др., а затем уже о файлах, создаваемых операционной системой, прикладными программами и самим пользователем.

В принципе, возможно, что информация, относящаяся к какому-либо файлу, не поместится в отведенных два сектора (базовая запись). Тогда она размещается в другом месте $MFT, образуя расширенную запись. Это характерно для файлов, значительно изменяющих свой размер по мере работы с ними пользователей. Это могут быть файлы баз данных, файлы офисных документов и т.д.

Порядок записей в метафайле $MFT:

Номер записи

Название файла метаданных

Назначение

0

$MFT

Master File Table

1

$MFTmirr

Копия первых 16 записей $MFT

2

$LogFile

Файл журнала транзакций

3

$Volume

Информация о разделе (метка тома, версия NTFS)

4

$ AttrDef

Список используемых атрибутов файлов

5

$

Корневой каталог файловой системы

6

$Bitmap

Карта распределения свободных кластеров тома

7

$Boot

Загрузочный сектор раздела NTFS

8

$BadClus

Перечень всех испорченных кластеров

9

$Secure

Атрибуты безопасности (NTFS 5.0)

A

$UpCase

Список всех прописных символов в UNICODE

B

$Extend

Расширенная информация NTFS 5.0:

$Extend\$ObjID

Файл ID объекта

$Extend\$Quota

Файл квотирования

$Extend\$Reparse

Файл точки повторной обработки

$Extend\ $UsnJrnl

Файл журнала изменений

C

Зарезервировано

D

Зарезервировано

E

Зарезервировано

F

Зарезервировано

. . .

Записи файлов ОС, приложений, пользовательских

Структура записи в файле $MFT

Если рассматривать каждую запись $MFT, то она, в свою очередь, имеет внутреннюю структуру и состоит из заголовка и областей переменной длины, называемых атрибутами файлов (File Attribute). Ниже приведена структура заголовка записи:

Смещение, байт

Длина, байт

Описание

0x00

4

Текстовая строка "FILE" - признак записи $MFT

0x04

2

Смещение массива корректировки записи Update Sequence

0x06

2

Размер массива корректировки записей Update Sequence

0x10

2

Последовательный номер сектора в записи $MFT

0x12

2

Счетчик ссылок

0x14

2

Смещение начала списка атрибутов

0x16

2

Флажки, отмечающее состояние записи $MFT (0 – удален, 1 – нет)

0x18

4

Реальный размер записи $MFT

0x1C

4

Размер памяти, занимаемый записью $MFT

0x20

8

Файловый номер (File Reference) базовой записи $MFT

0x28

2

Максимальное значение идентификатора атрибута, увеличенное на единицу

0x2A

2

Массив корректировки записи $MFT размером 2*(N-1) байт, где N - значение размера массива корректировки записи из поля со смещением 0x06

. . .

Список атрибутов файла

Как видно из таблицы, характерным признаком начала каждой записи является содержимое первых четырех байт сектора, где указывается текстовая строка "FILE" в коде ASCII.

Поскольку заголовок записи имеет переменную длину, точная величина смещения списка атрибутов в таблице не указана. В каждой записи этот адрес может быть различным, поэтому в заголовке он указывается в двухбайтном поле, расположенном по смещению 0x14.

Всего различаются 14 атрибутов, которые сведены в прилагаемой таблице:

Тип

Имя

Описание

0x10

$STANDARD_INFORMATION

Стандартный атрибут. Здесь хранится дата и время создания и последнего изменения файла, дата и время последнего доступа к файлу, флаги доступа к файлу, а также дата и время изменения записи $MFT, соответствующей данному файлу

0x20

$ATTRIBUTE_LIST

Список атрибутов. Если помимо базовой записи $MFT для файла создаются расширенные записи, в этом атрибуте перечисляются все атрибуты файла. Кроме того, здесь хранится информация о распределении этих атрибутов по записям $MFT (по базовой записи и по расширенным записям данного файла).

0x30

$FILE_NAME

Имя файла или каталога. В этом атрибуте хранится имя файла или каталога, набор флагов доступа, размер файла, а также ссылка на запись $MFT каталога, в котором хранится данный файл или каталог.

0x40

$VOLUME_VERSION

Версия NTFS для данного раздела.

0x50

$SECURITY_DESCRIPTOR

Дескриптор разграничения доступа.

0x60

$VOLUME_NAME

Имя тома. Это имя задается при форматировании раздела и может быть изменено пользователем.

0x70

$VOLUME_INFORMATION

Состояние тома. Здесь хранится версия драйвера, с помощью которого был создан данный раздел, а также флаг программы CHKDSK. Если этот флаг установлен, то при очередной перезагрузке операционной системы программа CHKDSK выполнит проверку данного раздела.

0x80

$DATA

Атрибут данных. Этот атрибут может содержать либо данные файла (если размеры файла не превышают размеры записи $MFT), либо список номеров кластеров, в которых располагается файл (список экстентов файла).

0x90

$INDEX_ROOT

Корневая вершина дерева типа B+, с применением которого в NTFS реализована система каталогов.

0xA0

$INDEX_ALLOCATION

Узлы ветвей дерева типа B+, с применением которого в NTFS реализована система каталогов.

0xB0

$BITMAP

Набор бит, описывающих использование отдельных записей $MFT или узлов дерева каталогов.

0xC0

$SYMBOLIC_LINK

Информация Reparse Point, используется в Microsoft Windows 2000

0xD0

$EA_INFORMATION

Информация о расширенных атрибутах файловой системы HPFS. Используется для обеспечения совместимости NTFS с файловой системой HPFS, применяемой в IBM OS/2.

0xE0

$EA

Данные расширенных атрибутов файловой системы HPFS.

В каждом файле обязательно присутствуют атрибуты $STANDARD_INFORMATION, $FILE_NAME и $DATA. Наличие остальных определяется типом файла и его особенностями. С другой стороны, некоторые одноименные атрибуты могут присутствовать в записи в нескольких экземплярах. Например, это - атрибут $FILE_NAME, в одном экземпляре которого указывает полное имя файла, а в другом – имя файла в стандарте "8.3" (стандарт MS-DOS).