□ Дату и время модификации файла или каталога.
□ Номер первого кластера файла или каталога (или resident
□ Перечень типов атрибутов NTFS, имеющихся у файла или каталога, записанных в шестнадцатеричной нотации (обычно эта строка имеет следующий вид: 10 30 80
□ Индекс файловой записи в MFT, выраженный в шестнадцатеричной и десятичной системах счисления и следующий за словом No:
(сокращение от Number — номер).□ Индекс файловой записи родительского каталога, выраженный в шестнадцатеричной и десятичной системах счисления (5h
□ Для нерезидентных файлов или каталогов — перечень кластеров, занятых файлом в закодированном виде (а зря — могли бы и декодировать). Схема кодирования кластеров подробно описана далее в данной главе.
Прежде чем продолжать чтение, попробуйте поэкспериментировать с файлами MFT (особенно фрагментированными). Посмотрите, как создаются и удаляются записи MFT. Лучше всего это делать на диске, содержащем небольшое количество файлов и каталогов. Чтобы не форматировать логический диск, создайте виртуальный (благо количество оперативной памяти современных компьютеров это позволяет).
Файловые записи
Благодаря наличию утилиты DiskExplorer от Runtime Software с файловыми записями практически никогда не приходится работать вручную. Тем не менее, знание их структуры нам не помешает.
Структурно файловая запись состоит из
FFFFFFFFh
(см. листинг 6.1). Несмотря на то, что количество атрибутов и их длина меняются от одной файловой записи к другой, размер самой структуры FILE Record
строго фиксирован. В большинстве случаев он равен 1 Кбайт (это значение хранится в файле $boot
, причем первый байт файловой записи всегда совпадает с началом сектора).Не следует путать файл $boot
Если реальная длина атрибутов меньше размеров файловой записи, то ее "хвост" просто не используется. Если же атрибуты не умещаются в отведенное им пространство, создается дополнительная файловая запись (extra FILE Record), ссылающаяся на свою предшественницу.
Листинг 6.1. Структура файловой записи
FILE Record
Header ; Заголовок
Attribute 1 ; Атрибут 1
Attribute 2 ; Атрибут 2
... ; ...
Attribute N ; Атрибут N
End Marker (FFFFFFFFh) ; Маркер конца
Первые четыре байта заголовка заняты "магической последовательностью" FILE
FILE Record
. При восстановлении сильно фрагментированного файла $MFT
это обстоятельство играет решающую роль, поскольку позволяет отличить сектора, принадлежащие MFT, от всех остальных секторов.Следом за сигнатурой идет 16-разрядный указатель, содержащий смещение
002Ah
, поэтому для поиска файловых записей можно использовать сигнатуру FILE*\x00
, что уменьшает вероятность ложных срабатываний. В Windows XP и более новых версиях последовательность обновления хранится по смещению 002Dh
, и поэтому сигнатура приобретает следующий вид: FILE-\x00
.Размер заголовка также варьируется от одной операционной системы к другой, и в явном виде нигде не хранится. Вместо этого в заголовке присутствует указатель на первый атрибут, содержащий его смещение в байтах относительно начала файловой записи и расположенный по смещению 14h
FFFFFFFFh
.