«Черновое восстановление» (Часть 1: Регулярные выражения)

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

Пример с картой памяти из фотоаппарата.

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

ФС до форматирования

Файловая система до сбоя и до форматирования содержала каталог DCIM\100MSDF, в котором хранились фотографии.

ФС после форматирования

После форматирования средствами фотоаппарата файловая системы была пересоздана. Фотографий в новой ФС уже нет.

Если бы не форматирование, то восстановить данные с проблемным boot’ом бы достаточно легко, мы рассматривали похожий случай в предыдущей статье. Но в нашем случае ПО камеры создало новую файловую систему, того же типа, с теми же параметрами, с похожей структурой каталогов. Это означает, что практически все метаданные были переписаны и восстановление на основе анализа файловой системы уже невозможно (тут есть оговорки, но будем считать, что для нашего примера это справедливо).

Может показаться, что ситуация безвыходная, но это не так. В подобных примерах часто удается восстановить большую часть данных, а иногда и все. Это возможно, по следующим причинам:

  • перезаписаны были только метаданные ФС, но не сами файлы;
  • характер работы ПО камеры таков, что файлы записываются последовательно один за другим, не изменяются и редко удаляются, т.е. большинство файлов размещены непрерывно;
  • формат известен (это jpeg) и может быть распознан.

Режим «черновое восстановление» был реализован как раз для поиска файлов по содержимому в случаях, когда нельзя опираться на метаданные файловой системы. В дальнейшем он обрел и другие применения, которые будут описаны в последующих статьях.

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

Поиск файлов с помощью регулярных выражений.

Теория.

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

  • изображения в формате BMP начинаются с символов "BM" (0x424D);
  • файлы в формате JPEG — с 0xFFD8FF (маркер SOI и начало следующего маркера), часто чуть дальше встречается сигнатура "Exif";
  • архивы в формате zip — с "PK", а точнее с 0x504b0304.
Начала файлов bmp, jpg, zip.

Начала файлов bmp, jpg, zip в hex-редакторе.

Эти же сигнатуры можно искать при последовательном чтении секторов накопителя. В Data Extractor реализован поиск заголовков с помощью языка регулярных выражений. Для поиска файлов определенного формата задаются один или несколько специальных шаблонов. В рамках комплекса они называются GREP, по аналогии с одноименной утилитой в Linux. Примеры шаблонов:

  • ^BM — ищет сигнатуру "BM" в начале сектора;
  • ^\xFF\xD8\xFF — ищет последовательность байт 0xFFD8FF в начале сектора;
  • ^RIFF....WAVE — ищет последовательность в начале сектора, которая начинается с "RIFF", затем идут произвольные 4 байта, а затем "WAVE".

Многие шаблоны направлены на определение заданной сигнатуры, поэтому такой поиск еще часто называют «сигнатурным».

Режим «черновое восстановление» работает со справочником, в котором указано расширение файла и регулярное выражение для поиска заголовка. Записи справочника можно модифицировать, удалять и добавлять. А также указать какие именно использовать в текущем поиске, а какие нет.

Справочник "чернового восстановления"

Справочник «чернового восстановления»

Помимо начала, нужен еще и размер файла. В «черновом восстановлении» он выставляется  до начала следующего файла. Если файл не фрагментирован, то такой размер в общем случае будет превышать настоящий, но почти всегда это не критично, т.к. такая добавка не мешает специализированным программам открыть файл.

Практика.

Вернемся к нашему примеру. Отметим в справочнике только те шаблоны, которые относятся к файлам jpeg. Напомню, что в «черновом восстановлении» помимо поиска с помощью регулярных выражений есть еще один механизм — анализ внутренней структуры файла, его мы рассмотрим в следующей статье. А пока, в опциях режима отметим «Использовать только поиск GREP», чтобы работал лишь рассматриваемый сейчас механизм. В общем случае этого делать не рекомендуется. Остальные параметры оставим по-умолчанию.

Запустим режим и дождемся окончания сканирования.

Результаты "чернового восстановления" (используется только поиск GREP).

Результаты «чернового восстановления» (используется только поиск GREP).

Удалось найти все пропавшие файлы. Заодно и выяснилась особенность работы ПО фотоаппарата, оно создает по два экземпляра каждого снимка: оригинального размера и уменьшенного. После сохранения удалось открыть все файлы — они оказались целыми. Режим принципиально не способен восстанавливать структуру каталогов и файлов, а также их атрибуты (имена, точный размер, дату создания и тд), т.к. это все в метаданных ФС. Но для рассматриваемого примера, это совсем не критично.

Результат получился очень хорошим, но на это были причины, которые мы перечислили ранее: файлы не были перезаписаны, они расположены непрерывно и имели известный и определяемый формат.

Плюсы и минусы

Во многих случаях регулярные выражения — эффективный и мощный инструмент для поиска файлов. Он обладает очевидными преимуществами:

  • легко задавать шаблоны для сигнатур;
  • новые шаблоны можно использовать сразу, не дожидаясь выхода новой версии ПО;
  • можно выполнить экспорт и импорт справочника.

Но этот подход не лишен и недостатков, наиболее существенные:

  • возможности языка регулярных выражений ограничены: с его помощью нельзя или очень сложно описывать некоторые закономерности (например, нельзя проверить контрольную сумму CRC32);
  • нет возможности проверить целостность файла, узнать его полный размер и размер целой части.

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

Леоненко Александр
Разработчик Data Extractor

 

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 голосов, средний: 5,00)
Loading...Loading...

Об авторе Александр Леоненко

Разработчик Data Extractor и Data Extractor RAID Edition
Запись опубликована в рубрике Data Extractor с метками , , , . Добавьте в закладки постоянную ссылку.

Один комментарий на ««Черновое восстановление» (Часть 1: Регулярные выражения)»

  1. Уведомление: «Черновое восстановление» (Часть 2: Анализ форматов) | Блог разработчиков Data Extractor

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>