Восстановление данных. Практическое руководство
Шрифт:
Прежде чем продолжать чтение, попробуйте поэкспериментировать с файлами MFT (особенно фрагментированными). Посмотрите, как создаются и удаляются записи MFT. Лучше всего это делать на диске, содержащем небольшое количество файлов и каталогов. Чтобы не форматировать логический диск, создайте виртуальный (благо количество оперативной памяти современных компьютеров это позволяет).
Файловые записи
Благодаря наличию утилиты DiskExplorer от Runtime Software с файловыми записями практически никогда не приходится работать вручную. Тем не менее, знание их структуры нам не помешает.
Структурно файловая запись состоит из заголовка (header) и одного или нескольких атрибутов (attributes) произвольной длины, завершаемых маркером конца (end marker) — четырехбайтным шестнадцатеричным значением
Не следует путать файл
Если реальная длина атрибутов меньше размеров файловой записи, то ее "хвост" просто не используется. Если же атрибуты не умещаются в отведенное им пространство, создается дополнительная файловая запись (extra FILE Record), ссылающаяся на свою предшественницу.
Листинг 6.1. Структура файловой записи
Первые четыре байта заголовка заняты "магической последовательностью"
Следом за сигнатурой идет 16-разрядный указатель, содержащий смещение последовательности обновления (update sequence). Под "указателем" здесь и до конца раздела подразумевается смещение от начала сектора, отсчитываемое от нуля и выраженное в байтах. В Windows NT и Windows 2000 это поле всегда равно
Размер заголовка также варьируется от одной операционной системы к другой, и в явном виде нигде не хранится. Вместо этого в заголовке присутствует указатель на первый атрибут, содержащий его смещение в байтах относительно начала файловой записи и расположенный по смещению
Длина файловой записи хранится в двух полях. Тридцатидвухразрядное поле реального размера (real size), находящееся по смещению
16-разрядное поле флагов, находящееся по смещению
64-разрядное поле, находящееся по смещению
Основные поля заголовка файловой записи описаны в табл. 6.3. Остальные поля заголовка файловой записи не столь
Таблица 6.3. Структура заголовка файловой записи (FILE Record)
Смещение | Размер (байт) | ОС | Описание |
---|---|---|---|
00h | 4 | Любая | Сигнатура FILE |
04h | 2 | Любая | Смещение номера последовательности обновления (update sequence number) |
06h | 2 | Любая | Размер (в словах) номера последовательности обновления и массива обновления (Update Sequence Number & Array), условно S |
08h | 8 | Любая | Номер последовательности файла транзакций ( $LogFile Sequence Number или LSN) |
10h | 2 | Любая | Номер последовательности (sequence number) |
12h | 2 | Любая | Счетчик жестких ссылок (hard link) |
14h | 2 | Любая | Смещение первого атрибута |
16h | 2 | Любая | Флаги |
Значение | Описание | ||
0x00 | Файловая запись не используется | ||
0x01 | Файловая запись используется и описывает файл | ||
0x02 | Файловая запись используется и описывает каталог | ||
0x04 | За справками обращайтесь к Биллу Гейтсу — вероятно, только он это знает | ||
0x08 | За справками обращайтесь к Биллу Гейтсу — вероятно, только он это знает | ||
18h | 4 | Любая | Реальный размер (real size) файловой записи |
1Ch | 4 | Любая | Выделенный размер (allocated size) файловой записи |
20h | 8 | Любая | Ссылка (file reference) на базовую файловую запись (base FILE record) или ноль, если данная файловая запись является базовой |
28h | 2 | Любая | Идентификатор следующего атрибута (next attribute ID) |
2Ah | 2 | Windows XP | Используется для выравнивания |
2Ch | 4 | Windows XP | Индекс данной файловой записи (number of this MFT record) |
2 | Любая | Номер последовательности обновления (update sequence number) | |
2 S – 2 | Любая | Массив последовательности обновления (update sequence array) |
Последовательность обновления
Будучи очень важными компонентами файловой системы,