Восстановление данных. Практическое руководство
Шрифт:
Таблица 6.10. Структура одного элемента списка отрезков
Смещение в нибблах | Размер в нибблах | Описание |
---|---|---|
0 | 1 | Размер поля длины ( L ) |
1 | 1 | Размер поля начального кластера ( S ) |
2 | 2* L | Количество кластеров в отрезке |
2+2* L | 2* S | Номер начального кластера отрезка |
Покажем, как с этим работать на практике. Предположим, что мы имеем следующий список отрезков, соответствующий нормальному не фрагментированному файлу (что может быть проще!):
Начнем
Рассмотрим более сложный пример фрагментированного файла со следующим списком отрезков:
Таким образом, подопытный файл состоит из трех отрезков, разбросанных по диску в следующем живописном порядке:
Начиная с версии 3.0, NTFS поддерживает разреженные (sparse) атрибуты, т.е. такие атрибуты, которые не записывают на диск кластеры, содержащие одни нули. При этом поле номера начального кластера отрезка может быть равным нулю, что означает, что данному отрезку не выделен никакой кластер. Поле длины содержит количество кластеров, заполненных нулями. Их не нужно считывать с диска. Вы должны самостоятельно изготовить их в памяти. Между прочим, далеко не все дисковые доктора знают о существовании разреженных атрибутов (если атрибут разрежен, его флаг равен
Пространства имен
NTFS изначально проектировалась как файловая система, не зависящая от платформы, способная работать с большим количеством различных подсистем, в том числе: Win32, MS-DOS, POSIX. Так как каждая из перечисленных подсистем налагает собственные ограничения на набор символов, допустимых для использования в имени файла, NTFS вынуждена поддерживать несколько независимых пространств имен (name spaces).
Допустимы все символы UNICODE (с учетом регистра), за исключением символа нуля (
Доступны все символы UNICODE (без учета регистра), за исключением следующего набора: кавычки (
Доступны все символы пространства имен Win32 (без учета регистра), за исключением следующих: знак плюса (
Назначение
NTFS содержит большое количество служебных файлов (метафайлов) строго определенного формата. Важнейший из метафайлов,
Краткие сведения о назначении важнейших метафайлов приведены в табл. 6.11. К сожалению, в пределах одной главы нет возможности подробно рассмотреть структуру всех существующих метафайлов, поэтому заинтересованным читателям рекомендуется искать эту информацию в документации к Linux-NTFS Project.
Таблица 6.11. Назначение основных метафайлов NTFS
Inode | Имя файла | ОС | Описание |
---|---|---|---|
0 | $MFT | Любая | Главная файловая таблица (Master File Table, MFT) |
1 | $MFTMirr | Любая | Резервная копия первых четырех элементов MFT |
2 | $LogFile | Любая | Журнал транзакций (transactional logging file) |
3 | $Volume | Любая | Серийный номер, время создания, флаг не сброшенного кэша (dirty flag) тома |
4 | $AttrDef | Любая | Определение атрибутов |
5 | . (точка) | Любая | Корневой каталог (root directory) тома |
6 | $Bitmap | Любая | Карта свободного/занятого пространства |
7 | $Boot | Любая | Загрузочная запись (boot record) тома |
8 | $BadClus | Любая | Список плохих кластеров (bad clusters) тома |
9 | $Quota | Windows NT | Информация о квотах (quota information) |
9 | $Secure | Windows 2000 | Использованные дескрипторы безопасности (security descriptors) |
10 | $UpCase | Любая | Таблица заглавных символов (uppercase characters) для трансляции имен |
11 | $Extend | Windows 2000 | Каталоги: $ObjId , $Quota , $Reparse , $UsnJrnl |
12-15 | не используется | Любая | Помечены как использованные, но в действительности пустые |
16-23 | не используется | Любая | Помечены как неиспользуемые |
Любой | $ObjId | Windows 2000 | Уникальные идентификаторы каждого файла |
Любой | $Quota | Windows 2000 | Информация о квотах (quota information) |
Любой | $Reparse | Windows 2000 | Информация о точке передачи (reparse point) |
Любой | $UsnJrnl | Windows 2000 | Журнал шифрованной файловой системы (journaling of encryption) |
>24 | Пользовательский файл | Любая | Обычные файлы |
>24 | Пользовательский каталог | Любая | Обычные каталоги |
Практический пример
Рассказ о файловой системе NTFS был бы неполным без практической иллюстрации техники разбора файловой записи вручную. До сих пор мы витали в облаках теоретической абстракции. Пора спускаться на грешную землю.
Воспользовавшись любым дисковым редактором, например, Disk Probe, попробуем декодировать одну файловую запись вручную. Найдем сектор, содержащий сигнатуру