В недавней публикации «Алгоритмы восстановления данных по содержимому и carving-алгоритмы» мы рассказывали об принципах работы современных инструментов для восстановления данных. Называться они могут по-разному: «карвинг», «поиск по сигнатурам» или «восстановление по содержимому», – однако основной принцип действия данных алгоритмов один. Некоторые из них усовершенствованы, незначительно, но это действительно может существенно влиять на конечный результат работы программы для восстановления данных. Сегодня мы осветим новые аспекты их работы и… постараемся заглянуть в будущее.
Содержание
- Ограничения современных алгоритмов восстановления данных
- Файловая система
- «Карвинг» сегодня: текстовые файлы
Ограничения современных алгоритмов восстановления данных
Если вы следите за нашими публикациями, вы, возможно, уже знаете, что фрагментация — ваш злейший враг, когда дело касается восстановления информации. То есть вы без труда сможете восстановить все смежные файлы на диске с помощью одного из простейших алгоритмов, поддерживающих восстановление по содержимому, однако, если содержимое одного файла разбросано по всему диску, вам не позавидуешь… Такие алгоритмы основаны на поиске подписей, или сигнатур, то есть они могут определять только начало файла известного им формата. Не учитывая того, принадлежит ли фактический контент файлу.
Для примера рассмотрим, как типичный алгоритм, основанный на поиске сигнатур, работает с большим файлом MKV. Прежде всего, он «обрабатывает» заголовок файла. Инструмент вычисляет длину файла MKV и сохраняет необходимое количество блоков данных во вновь созданный файл с тем же именем. Вот, собственно, и все – программа просто переходит к работе со следующим файлом. Некоторые из более интеллектуальных алгоритмов сначала считают данные с файловой системы и извлекут все те блоки данных, которые не принадлежат ни одному из прочих файлов (и даже такой принцип работы редко используется в современных инструментах восстановления данных). Так или иначе, а все эти утилиты просто не могут справиться с восстановлением информации с фрагментированных дисков.
Для фактического «карвинга» этого видеофайла потребуется совершенно другой подход с гораздо большей зависимостью от контекста. Если бы у нас были неограниченные ресурсы, и нас интересовал бы только один-единственный файл, мы могли бы использовать описанный выше алгоритм для чтения заголовка файла, затем к информации, которую удалось вернуть стандартным методом, добавить следующий блок данных и проверить, получится ли в результате рабочий видео-файл со всеми правильными кадрами. Если да, добавить следующий блок – и снова проверить видео. Если теперь видео-файл окажется нерабочим, вернуться к предыдущей версии и попытаться добавить в конец файла следующий блок из подходящих найденных. Процедуру придется повторять, пока количество блоков файла не достигнет необходимой величины, и все они не выстроятся в правильной последовательности. Так, восстановление одного файла может занять несколько часов, однако в результате файл действительно может быть полностью реконструирован. Это в самом деле возможно – при наличии неограниченных ресурсов и времени. Сегодня такие всеобъемлющие «карвинг»-алгоритмы используются только в разведке и цифровой криминалистике (и даже там – только в очень и очень немногих случаях).
Но может ли что-то стать реальной альтернативой данной технологии? Вполне возможно, что многие современные алгоритмы, поддерживающие восстановление по содержимому, обеспечивают аналогичную производительность…
Файловая система
Прежде всего, давайте не будем забывать о файловой системе. Иметь дело со случаями потери данных с пустыми (или стертыми) файловыми системами, к счастью, приходится не часто, поскольку очистка всей файловой системы может быть сложным и длительным процессом. Если, например, вы перераспределите жесткий диск, исходная файловая система НЕ будет опустошена. Она останется на диске. Если вы форматируете раздел NTFS, файловая система (файл $ MFT) будет удалена так же, как и любой другой файл. Однако он останется восстановимым – как и любой другой файл! В результате восстановление исходной файловой системы (с использованием алгоритма восстановления по содержимому или «карвинга») – это реальная возможность вернуть данные, доступная практически со всеми высококачественными приложениями для восстановления данных на рынке. Имея файловую систему в своем распоряжении (даже если файловая система повреждена), программа восстановления данных может вернуть большинство файлов, даже не используя поиск по сигнатурам.
Если у вас будет файловая система, проведение контент- анализа дискового пространства станет доступнее и результативнее. Во-первых, существующие файлы и папки будут отделены от данных файловых систем и пустого пространства. Во-вторых, алгоритм поиска подписей рассматривает все незаписанные блоки данных как непрерывное пространство, восстанавливая удаленные файлы из блоков, которые не относятся ни к одному из определенных файлов. Конечно, это очень упрощенное описание процесса восстановления данных (не будем снова говорить о «разреженных» файлах [ссылка«Алгоритмы восстановления данных по содержимому и карвинг-алгоритмы» # sparse_files]). Нераспределенные сектора диска рассматриваются как смежные области, а не смешиваются с существующими файлами, поэтому путь восстановления данных – всегда долог и сложен.
«Карвинг» сегодня: текстовые файлы
Знаете ли вы, что сегодня вы можете использовать настоящий «карвинг»? Сохранение контента на протяжении всего процесса восстановления данных и выполнение глобального поиска отдельных фрагментов файлов по-прежнему нецелесообразно при выполнении большинства задач, кроме наиболее важных. Тем не менее, истинный «карвинг» данных уже доступен по крайней мере для одного типа данных: для текстовых файлов.
Текстовые файлы не имеют заголовков. На самом деле структура текстовых файлов очень мало отличается от структуры случайных двоичных данных, за одним исключением. Текстовые файлы используют ограниченные наборы символов. Что это означает в контексте восстановления данных? Это означает, что инструмент может искать дисковые кластеры, содержащие только символы, попадающие в диапазон 0-9, A-Z, пробелы и несколько специальных символов. Если обнаружен кластер, содержащий этот ограниченный набор символов, он рассматривается как начало текстового файла. Последующие кластеры анализируются и, если их содержимое также попадает в ограниченный диапазон символов, они добавляются к текстовому файлу. Процесс продолжается до тех пор, пока алгоритм не встретит кластер, который уже не попадает в категорию «текст», после чего сохраняется текстовый файл, и инструмент начинает искать другие типы данных.
Практически так и происходит фактическая обработка данных в современных инструментах для восстановления файлов. Это гарантирует, что все биты и фрагменты текстовых данных будут извлечены и сохранены в отдельные текстовые файлы. Даже если ваш жесткий диск сильно фрагментирован, вы все равно получите все биты и куски и сможете вручную объединить эти биты в исходные текстовые файлы.
Заметим однако, что в реальной жизни все не так радужно. Чистый диапазон 0-9, A-Z типичен только для английского и нескольких других языков, в то время как остальные языки используют и нелатинские символы, а значит, неправильно написанная программа может просто проигнорировать текст на «непонятном» ей языке. Существуют также двухбайтовые кодировки, такие как кодировки Unicode и кодировки переменной длины, такие как UTF-8, которые требуют совсем другого подхода. Даже в этом простейшем случае различные инструменты восстановления данных используют множество различных трюков и решений, таких как обнаружение региональных настроек системы (которые могут соответствовать или не соответствовать настройкам восстанавливаемого жесткого диска!), требуя от пользователя вручную указать набор символов (или наборы символов) для поиска кодировок, популярных в определенном географическом регионе (например, латинские, западноевропейские, восточно-европейские и кириллические наборы символов).
Некоторые более продвинутые инструменты используют нейронные сети для обнаружения фактического кодирования заданного набора символов. Вы когда-либо пользовались переводчиком Google или Bing? Начните вводить текст в окно перевода, и после нескольких слов вы увидите, что инструмент распознает язык ввода автоматически. В целом, для инструмента восстановления данных функция автоматического определения языка скорее избыточна, но факт остается фактом – заданные наборы символов могут быть обнаружены достаточно легко при использовании относительно простых алгоритмов.
Аналогичную технику можно использовать для обнаружения файлов XML и HTML и некоторых RTF-документов.
Часто задаваемые вопросы
Да, можно. Одной из причин может быть повреждение файловой структуры флешки.