Восстановление документа с FAT диска в HEX редакторе

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

Восстановление файла в HEX редакторе

Возьмём флеш-накопитель и отформатируем его.

Форматирование флешки

Рис.1 Форматирование флеш-накопителя.

Затем запишем на него текстовый документ размером 20 Кб, который содержит повторяющуюся текстовую строку «Test file».

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

После этого удалим тестовый объект и запустим Hetman Partition Recovery. Откроем с помощью HEX-редактора флешку, отформатированную в FAT32, и начнем анализ с зарезервированной области.

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

Рис.2 Загрузочный сектор диска FAT.

На рисунке выше выделены поля, которые нас интересуют:

  • Первое выделенное поле показывает, что размер сектора диска составляет 512 байт;
  • Следующий фрагмент показывает, что размер кластера равен 8192 байтам;
  • Далее мы видим, что размер зарезервированной области составляет 1160192 байта;
  • Следующее поле показывает, что на диске есть две копии FAT ;
  • Далее указано, что размер каждой копии FAT составляет 7808512;
  • Следующий фрагмент указывает на то, что корневой каталог находится во 2 кластере относительно области данных (16793600 байт).

Усвоив эту информацию, мы можем представить расположение основных структур диска FAT.

Смещение Размер Описание
0 1160192 Зарезервированная область диска
1160192 7808512 Первая копия FAT-таблицы
8968704 7808512 Вторая копия FAT-таблицы
16777216 Начало области данных
16793600 Начало корневого каталога

Корневой каталог

Давайте рассмотрим корневой каталог. Мы видим ряд записей, одна из которых наш тестовый Test.txt. Первый байт записи равен 0xE5, так как он удален. Во время удаления драйвер создает дополнительную запись в корневом каталоге диска, предшествующую основной. Эта запись также создается с первым байтом равным 0xE5. Она предназначена для сохранения имени удаляемого объекта. Давайте попробуем вернуть наше удаленное содержимое.

Корневой каталог диска FAT

Рис.3 Корневой каталог диска FAT.

На рисунке выше первой идет дополнительная запись:

  • Первое выделенное поле содержит сигнатуру 0xE5;
  • Следующее отмеченное поле содержит имя – Test.txt.

Далее идет основная запись:

  • Первое выделенное поле содержит сигнатуру 0xE5, которая указывает на то, что документ удален;
  • Далее содержится адрес кластера (относительно области данных) с содержимым (16818176 байт);
  • Далее указан размер 19584 байт.

Определив начальный кластер и размер, мы должны обратиться к области FAT, чтобы составить цепочку занимаемых им кластеров на диске. Но проблема в том, что цепочка не сохранилась. При удалении все кластеры, которые занимала цепочка, были помечены как свободные. Вот почему все, что у нас есть, это начальный кластер и размер.

Далее возможны 2 варианта:

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

Содержимое файла

В данном случае нам подходит 1 вариант. Мы создадим текстовый файл на рабочем столе и скопируем в него содержимое, полученное в результате анализа.

Содержимое файла

Рис.4 Содержимое файла.

Важно: Сохранять результат работы необходимо на диск, отличный от анализируемого. В нашем примере мы исследовали диск F:, а результаты сохраняли на C:.

Author: Michael Miroshnichenko

1 Star2 Stars3 Stars4 Stars5 Stars (6 votes, average: 5.00 out of 5)