Консультация онлайн
Сотрудники лаборатории Advanced Group ответят на любые Ваши вопросы по восстановлению данных:
В статье рассматриваются случаи, когда файловая система на жестком диске, флэшке или на карте пямяти повреждена настолько, что невозможна даже ее частичная сборка. При этом файлы пользователя все еще присутствуют на носителе, но неизвестна структура каталогов и атрибуты фалов (дата и время создания и изменения, а также размещение – в каких папках они хранились). В этом случае и прибегают к так называемому “черновому восстановлению”, или восстановлению файлов по сигнатурам. Это то, что называется “последний шанс”, когда все остальные способы не помогли.
Статья рассчитана на широкую аудиторию, и не требует от читателя специальных знаний.
Время чтения — 10 минут.
Для понимания процесса восстановления файлов по сигнатурам, рассмотрим следующие вопросы:
Чтобы упростить понимание изложенной в этой статье информации, достаточно представить носитель (жесткий диск, флэшку или любой другой) как книгу с содержанием. То есть, на первых страницах этой книги есть оглавление, которое содержит в себе перечень всех разделов, подразделов и глав книги с указанием страниц, на которых они находятся. Идеология хранения цифровых данных точно такая же, только конкретная реализация зависит от файловой системы: NTFS, exFAT, HFS+, APFS и так далее. Содержание бумажной книги — аналог файловой системы цифрового носителя. Только в первом приближении, конечно.
Если открыть любой исправный жесткий диск в проводнике Windows, мы увидим примерно такую картину:
Если развернуть любую из этих папок, то откроется ее содержимое:
Все, что мы видим в проводнике – имена файлов и папок, их размеры, дата создания и изменения, все эти сведения и хранятся в файловой системе, которую мы договорились называть “оглавлением”. Физически файловая система – это область диска, выделенная для хранения этих данных, которые ещё называют “метаданными”, то есть “данными о данных”. Когда мы удаляем файл или папку с жесткого диска, в файловой системе (оглавлении нашей книги) удаляется соответствующая запись (или просто помечается как удаленная), сами же данные при этом остаются на диске, но то место, которое они занимали теперь считается незанятым, а значит, когда мы будем записывать новые файлы, эта область диска может быть ими перезаписана. Именно поэтому после случайного удаления никогда не следует ничего записывать на диск или флэшку, ведь чем больше информации вы запишете на диск после случайного удаления файлов, тем больше вероятность, что старые данные будут перезаписаны новыми, и тогда восстанавливать уже будет нечего.
Почему файловая система может повредиться? Вот наиболее частые причины:
Конечно, при восстановлении данных чаще всего стараются реанимировать файловую систему целиком, чтобы нужные файлы снова оказались разложены по тем же каталогам, где они лежали до сбоя. Но это не всегда возможно и тогда прибегают к “последнему шансу”: восстановлению данных по сигнатурам.
Как известно, данные в файлах хранятся в цифровом виде. Для того, чтобы отличить один тип файла от другого и придумана сигнатура, то есть подпись (разумеется, тоже цифровая). Она размещена в начале файла и является идентификатором типа файлов. Это проще показать, чем рассказать. Рассмотрим сигнатуру файла на примере распространенного формата для хранения фотографий jpeg. Если открыть любой файл jpeg в шестнадцатеричном редакторе, то мы увидим одну и ту же последовательность символов в одном и том же месте:
Последовательность FF D8 FF в начале первого сектора каждого файла — это и есть сигнатура: идентификатор файла, который означает, что это — именно jpeg файл.
Сигнатуры есть не у всех типов файлов: если, например, открыть в шестнадцатеричном редакторе текстовый файл (с расширением txt), то мы обнаружим, что там нет никакой сигнатуры: с самого первого байта начинается текст:
Есть и другие типы файлов, которые не имеют сигнатур, но у большинства распространенных форматов хранения данных, сигнатуры есть. Вот примеры:
На этой особенности и реализованы все алгоритмы поиска файлов по сигнатурам, или так называемого “чернового восстановления”.
Рассмотрим алгоритм восстановления данных с флэшки на примере все того же формата jpeg — он наиболее удобен для понимания. Для примера смоделируем ситуацию случайного форматирования флэшки. Для начала я заполнил все сектора нашей подопытной флэшки нулями, чтобы гарантировать, что на ней не останется никаких данных от предыдущих файловых систем. Я сделал это “для чистоты эксперимента”, в реальной жизни все несколько сложнее, но об этом позже. Теперь все сектора флэшки содержат только нули, то есть на ней нет совсем никакой информации, включая файловую систему и даже таблица разделов отсутствует. Такая флэшка, если вставить ее в USB разъем компьютера, то операционная система предложит ее отформатировать:
А если открыть ее в оснастке “Управление дисками”, то мы увидим, что на ней нет файловой системы:
Компьютер воспринимает ее файловую систему как RAW, то есть “сырые данные”, а проще говоря, — их отсутствие в нашем случае.
Теперь отформатируем флэшку в файловую систему NTFS и запишем на нее файлы jpeg:
Я создал на флэше одну папку с именем “Осень 2020” и записал в нее 129 файлов jpeg в среднем качестве: каждый файл занимает приблизительно 4-5 Мб дискового пространства. Если теперь еще раз отформатировать эту флэшку, то она будет отображаться в проводнике как пустой диск:
Мы смоделировали ситуацию случайного форматирования флэшки. Займемся восстановлением данных с нее. Вообще-то алгоритм восстановления данных по сигнатурам – самый простой из существующих, и он реализован в очень многих программах автоматического восстановления данных, в том числе бесплатных, однако, профессиональные лаборатории восстановления данных, конечно используют соответствующее их статусу оборудование и программное обеспечение. Мы воспользуемся программно-аппаратным комплексом PC3000 UDMA. Разумеется, функция поиска файлов по сигнатурам входит в его арсенал.
После создания задачи восстановления данных в комплексе PC-3000 мы увидим такую картину:
Во время последнего форматирования была создана новая файловая система NTFS, которая содержит служебные файлы, созданные ей самой. Эти файлы не отображаются в проводнике Windows, но они показаны в программе восстановления данных. Однако данных предыдущей файловой системы, конечно не видно. Проведем сканирование нашей флэшки поиском по сигнатурам:
Как видите, найдены все файлы, которые были на флэшке до форматирования: 129 файлов с расширением jpeg. Как программа находит файлы по сигнатурам? Она просто сканирует всю флэшку, начиная с нулевого сектора и ищет в начале каждого сектора соответствующую шестнадцатеричную последовательность. В нашем случае – это сигнатура jpeg файла FF D8 FF. Найдя такую последовательность в начале сектора алгоритм считает, что все, что следует дальше – это jpeg файл. Но нужно еще определить, где он заканчивается. В случае jpeg это не трудно – все jpeg файлы всегда заканчиваются последовательностью FF D9, в чем легко убедиться, если открыть такой файл в шестнадцатеричном виде и посмотреть на два его последних байта:
Такую последовательность программа считает окончанием текущего файла. Осталось только сохранить в памяти смещение, по которому находится начало файла и его размер и можно двигаться дальше в поисках следующего.
Итак, все файлы найдены и теперь их можно сохранить на диск (разумеется не на тот же, с которого мы восстанавливаем данные). После сохранения, зайдя в папку с восстановленными файлами, мы видим, что восстановление прошло корректно:
Но здесь мы обнаружим одну особенность: файлы имеют другие названия, а главное они все сложены в одну папку. Почему? Потому, что информация об именах файлов, каталогах в которых они хранились (и множество других атрибутов файлов), хранится только в файловой системе. А при поиске по сигнатурам эту информацию просто негде взять. Это один из существенных минусов способа чернового восстановления данных, но не единственный. Об остальных позже.
Стоит отметить, что jpeg – это, пожалуй, один из самых простых форматов для восстановления по сигнатурам, именно поэтому я взял его в качестве примера. Алгоритм восстановления файлов других форматов сложнее и имеет в каждом случае свои особенности: например, многие форматы файлов не имеют признака окончания файла. Тогда для определения последнего сектора файла используется либо начало следующего файла, либо размер определяется по метаданным, которые содержатся в самом файле. Более сложные алгоритмы восстановления данных учитывают все эти нюансы, которые у каждого типа файлов свои, их описание выходит за рамки этой статьи.
Итак, восстановить данные по сигнатурам несложно, это умеют делать многие программы автоматического восстановления, но в некоторых случаях не помогает даже такой метод, а в некоторых случаях такой метод хоть и восстанавливает данные, но без информации об их размещении он не имеет смысла. Рассмотрим эти случаи.
Теперь, когда мы понимаем суть алгоритма восстановления данных по сигнатурам, мы можем понять и его слабые стороны. Вот типичные ситуации, когда этот алгоритм не сможет восстановить файлы, или будет бесполезен:
Тут все просто. И проблема, конечно, не в алгоритме восстановления файлов, а в том, что нужных данных уже просто нет на диске – они перезаписаны новой информацией. В этом случае не поможет уже никто, что бы там не утверждали конспирологи и параноики. Впрочем, на эту тему мы еще напишем статью. Когда она будет готова, здесь появится ссылка.
Что значит “фрагментированы”? Такая ситуация возникает, когда диском или флэшкой активно пользуются (то есть почти всегда): записывают какие-то данные, потом удаляют ненужную или устаревшую информацию, затем снова записывают новые данные и так далее. В этом случае дисковое пространство становиться похоже на лоскутное одеяло: сначала идет часть с данными, потом пробелы, потом снова данные, снова пробелы из свободного пространства и так далее до конца диска. И если на диск нужно записать новый файл достаточно большого объема, то файловая система ищет на диске большую свободную область, и если весь файл туда не помещается, то записывает туда начало файла, затем дописывает оставшуюся часть (или части) в другую область диска. В этом случае один файл может быть разбит на несколько разных фрагментов, а информация о том, где какой фрагмент находится, хранится опять же в файловой системе (помните про оглавление книги), только теперь уже одному файлу соответствует не одна строчка в нашем оглавлении, а несколько, в зависимости от количества фрагментов, на которые он был разбит. И если этих записей больше нет в файловой системе, то никакой поиск не поможет восстановить файл целиком: ведь по сигнатуре мы можем определить только начало файла, а вот где находится его продолжение алгоритм уже не сумеет определить: эта информация хранится только в самой файловой системе и нигде больше ее нет. Поэтому восстановление файлов по сигнатурам не сработает в случае с фрагментированными файлами. Такие фалы либо вообще не будут открываться, либо будут “битыми” (поврежденными). Вот как выглядит такой “битый”, частично восстановленный файл, на примере все того-же jpeg:
Найдено только начало изображения, где находится его вторая половина — неизвестно.
Здесь тоже все понятно: зашифрованные файлы с точки зрения любой внешней программы восстановления выглядят как бессмысленная “каша”, найти в ней какие-то разумные последовательности, в том числе сигнатуры файлов попросту невозможно. Вообще-то именно в этом и состоит смысл шифрования, — было бы странно если бы было иначе. А это значит, что восстановить зашифрованные данные можно только имея ключ, которым они были зашифрованы. Впрочем, тема шифрования, как и тема восстановления зашифрованных данных слишком обширна и не так однозначна, как может показаться на первый взгляд. Мы обязательно поднимем ее позже. Следите за новостями.
Часто бывает, что для получения доступа к данным недостаточно извлечь сами файлы, требуется еще и восстановление имен файлов и папок, в которых они были разложены. Например, это необходимо, если сами файлы были частью какого-то структурированного набора данных: базы 1С, коллекцией музыкальных сэмплов, и т.п. В этом случае требуется полноценное восстановление файловой системы со всей структурой папок, иначе программа не заработает, а сами данные будут бессмысленны для пользователя.
Резюмируя, можно сказать, что рассмотренный в этой статье метод восстановления данных по сигнатурам хорошо подходит для восстановления фотографий, а также небольших по объему медиа файлов или документов Office, но только тогда, когда они не фрагментированы и информация об их размещении не важна. Во всех остальных случаях метод чернового восстановления не дает качественного результата.
Ну а у меня на сегодня все. Берегите себя и свои данные!
Автор: Вадим Шестернин
Лаборатория восстановления данных «Advanced Group», Санкт-Петербург
Сотрудники лаборатории Advanced Group ответят на любые Ваши вопросы по восстановлению данных:
Для физических лиц: