Найти тему
Hetman Software

Загрузочный сектор, FSINFO, таблица FAT и записи каталогов FAT

Оглавление

Полную версию статьи со всеми дополнительными видео уроками смотрите в источнике: https://hetmanrecovery.com/ru/recovery_news/fat-structures.htm

Читайте о системных структурах файловой системы FAT: загрузочный сектор, FSINFO, таблица FAT и записи каталогов. Описание, размерность полей и интерпретация Процесс поиска удаленных файлов состоит из обнаружения и интерпретации содержимого диска. Этой статьей мы откроем цикл, в котором расскажем, как найти и правильно «прочитать» системную информацию. Существует четыре версии FAT — FAT8, FAT12, FAT16 и FAT32. Мы проведем анализ FAT32 диска, расположенного на SD-карте памяти фотоаппарата.

Логический диск под управление FAT32 можно разделить на 3 логических части, которые идут последовательно друг за другом:

  • Зарезервированная область;
  • Область FAT;
  • Область данных (содержит корневой каталог и содержимое файлов);
-2

Рис.1 Физическая структура FAT.

Система FAT очень проста и условно в ней можно выделить 4 структуры:

  • Загрузочный сектор.
  • FSINFO.
  • Таблица FAT.
  • Записи каталогов.

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

Загрузочный сектор занимает 1 сектор (чаще всего 512 байт) и располагается в первом секторе. Давайте рассмотрим подробнее его содержимое.

Смещение Размер Описание Обязательное

0 3 Ссылка на загрузочный код Нет

3 8 Метка ОС I Нет

11 2 Сколько байт в секторе Да

13 1 Сколько секторов в кластере II Да

14 2 Размер резервной области в секторах Да

16 1 Сколько копий FAT-таблицы Да

17 2 Сколько объектов в корневом каталоге III Да

19 2 Сколько секторов на диске IV Да

21 1 Метка носителя V Нет

22 2 Размер таблицы FAT в секторах III Да

24 2 Сколько секторов в дорожке Нет

26 2 Сколько головок Нет

28 4 Сколько секторов перед началом раздела Нет

32 4 Сколько секторов в кластере II Да

36 4 Размер таблицы FAT в секторах Да

40 2 Режим обновления VI Да

42 2 Номер версии Да

44 4 Кластер с корневым каталогом Да

48 2 Сектор с FSINFO Нет

50 2 Сектор с резервной копией загрузочного сектора Нет

52 12 Резерв Нет

64 1 Номер диска Нет

65 1 Не используется Нет

66 1 Последовательность байт 0x29 VII Нет

67 4 Серийный номер тома Нет

71 11 Метка тома I Нет

82 8 Метка Нет

90 420 Резерв Нет

510 2 Последовательность байт 0xAA55 Нет

Таб.1 Структура загрузочного сектора FAT.

  • I В кодировке ASCII;
  • II Задается степенью 2;
  • III Использовалось для ранних версий FAT. Для FAT32 = 0;
  • IV Если количество секторов на диске больше 65535, используется поле по адресу 32;
  • V Для жестких дисков – 0xf8, для съемных – 0xf0;
  • VI Если бит 7 равен 1, активна только одна копия FAT, индекс которой определяется разрядами 0-3. В противном случае все структуры FAT являются зеркальными копиями друг друга;
  • VII Последовательность байт 0x29;

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

Структура FSINFO

Ссылка на начало структуры хранится в загрузочном секторе, размер составляет 1 сектор (обычно 512 байт). FAT использует FSINFO для алгоритма выделения свободных секторов диска.

Смещение Размер Описание Обязательное

0 4 Последовательность байт 0x41615252 Нет

4 480 Резерв Нет

484 4 Последовательность байт 0x6147272 Нет

488 4 Сколько свободных кластеров Нет

492 4 Следующий свободный кластер Нет

496 12 Резерв Нет

508 4 Последовательность байт 0xAA550000 Нет

Таб.2 Структура данных FSINFO.

Поскольку FSINFO может не обновляться и все ее поля не обязательны, опираться на нее для извлечения данных мы не можем.

Таблица FAT

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

В FAT32 структура состоит из записей размером 4 байта. Каждая запись соответствует кластеру на логическом диске и может принимать следующие значения:

  • 0x000 0000 – если кластер свободен;
  • 0x0fff fff7 – если кластер поврежден и не должен выделяться;
  • 0x0fff fff8 – если кластер завершает файл или каталог;
  • 0x000 0001 … 0x0fff fff6 – указатель на следующий кластер, занимаемый файлом или каталогом.

Чтение и анализ основной таблицы FAT и её копий позволяют выяснить, в каких кластерах хранится содержимое нужного файла.

Записи каталогов

Записи каталогов содержат имя, атрибуты файлов и каталогов, а также время создания, последнего доступа и редактирования объектов. Эта информация хранится в кластерах, выделенных родительскому каталогу, ссылку на который можно получить из загрузочного сектора.

Базовая структура (Simple File Name) поддерживает только короткие имена файлов (8 символов – имя и 3 символа – расширение). Для поддержки длинных имён файлов в добавление к базовой записи создаются дополнительные структуры (Long File Name). Записи LFN имеют размер 32 байта и предшествуют базовой записи.

Смещение Размер Описание Обязательное

0 1 Порядковый номер или последовательность байт 0xe5 I, II Да

1 10 Первые 5 символов имени файла I Да

11 1 Последовательность байт 0x0f Да

12 1 Резерв Нет

13 1 Контрольная сумма Да

14 12 Следующие 6 символов имени файла I Да

26 2 Резерв Нет

28 4 Следующие 2 символа имени файла I Да

Таб.3 Структура записи каталога Long File Name.

  • I Имя файла хранится в Unicode;
  • II FAT заменяет первый символ имени файла на 0xe5, если он удален.

Для хранения длинного имени файла может использоваться несколько структур LFN. Чтобы получить полное имя, нужно сложить все эти структуры. После дополнительных следует базовая запись каталога размером 32 байта.

Смещение Размер Описание Обязательное

0 1 Первый символ имени файла I, II Да

1 10 Следующие 10 символов имени файла I Да

11 1 Атрибуты III Да

12 1 Резерв Нет

13 1 Десятые доли секунды времени создания Нет

14 2 Часы, минуты, секунды времени создания Нет

16 2 Дата создания Нет

18 2 Дата последнего обращения Нет

20 2 Старшие 2 байта ссылки на первый кластер Да

22 2 Часы, минуты, секунды времени модификации Нет

24 2 Дата модификации Нет

26 2 Младшие 2 байта ссылки на первый кластер Да

28 4 Размер файла Да

Таб.4 Структура базовой записи каталога FAT.

  • I Имя файла в кодировке ASCII;
  • II FAT заменяет первый символ имени файла на 0xe5, если он удален;
  • III Возможные атрибуты перечислены в таблице.

Значение Описание

0x01 Доступ только для чтения

0x02 Скрытый файл

0x04 Системный файл

0x08 Метка тома

0x0f Длинное имя файла

0x10 Каталог

0x20 Архивный файл

Таб.5 Атрибуты.

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

HEX редактор

Продукты компании Hetman Software имеют встроенный HEX редактор, который позволяет быстро найти и просмотреть содержимое загрузочного сектора и его копии, записи FAT-таблицы, корневого каталога и области данных. Подробнее о том, как использовать эти таблицы и алгоритмы восстановления диска FAT, читайте у нас в блоге.

Полную версию статьи со всеми дополнительными видео уроками смотрите в источнике: https://hetmanrecovery.com/ru/recovery_news/fat-structures.htm