Программ для восстановления удалённых файлов сегодня существуют десятки, а может и сотни. Большинство из них предлагает «восстановить всё в один клик», эксплуатируя давнюю мечту о программе с одной кнопкой «Сделать хорошо». Только часто обещанная сказка так и не становится былью. Коллеги из Hetman Software рассказали КВ о нюансах работы recovery soft’a.
От общего к частному
В Windows файлы хранятся в виде блоков информации, записанных на секторах жёсткого диска. Расположение секторов зависит от того, какие именно блоки были свободны в момент сохранения файла на диск. Здесь два варианта. Если на диске есть непрерывный свободный блок секторов достаточного размера, система сохранит файл в виде непрерывной последовательности данных. В противном случае файл придётся «бить на куски», то есть фрагментировать, записывая «куда получилось». Поэтому для того, чтобы ориентироваться в записанной информации, Windows создает запись в файловой системе с указанием того, какие именно секторы на диске занимает содержимое конкретного файла.
Что же происходит при удалении информации? В момент, когда пользователь удаляет файл, система не стирает и не перезаписывает содержимое секторов на диске, а лишь помечает запись, как принадлежащую удалённому файлу. Соответственно, все сектора на диске, принадлежащие данному файлу, оказываются потенциально свободными – теперь Windows может сохранить в это пространство какой-нибудь другой файл. Но пока этого не произошло, можно попробовать восстановить содержимое удалённого файла.
На это и делает ставку большинство программ:
- просканировать файловую систему;
- поискать записи, помеченные как удалённые;
- узнать адреса секторов этих записей на диске;
- проверить, не записано ли в эти сектора что-нибудь новое;
- считать данные из всех «нетронутых» секторов;
- «собрать» восстановленную информацию в один файл и сохранить его.
Такой подход действительно быстр и эффективен. Но только при условии «живой» файловой системы. Шаг влево, шаг вправо – и вот вы уже с проблемами.
Поиск по сигнатурам
Рассмотрим одну из самых популярных проблем: файловая система повреждена или отсутствует. В этом случае помочь может поиск по сигнатурам файлов. При неизменной сути и принципе работы технологии, названия у неё могут быть самыми разными: «Power Search», «Content-Aware Analysis», «Smart Scan» и т.п.
Основной принцип работы алгоритмов сигнатурного поиска такой же, как у первых антивирусов: алгоритмы считывают информацию с поверхности диска в надежде встретить знакомые участки данных. Заголовки многих типов файлов содержат характерные последовательности символов. К примеру, файлы в формате JPEG содержат последовательность символов «JFIF», архивы ZIP начинаются с символов «PK», а документы PDF начинаются с символов «%PDF-». Некоторые файлы (к примеру, текстовые и HTML файлы) не обладают характерными сигнатурами, но могут быть определены по косвенным признакам, т.к. содержат только символы из таблицы ASCII.
Но для восстановления файла мало найти его начало, нужно также определить его конец. Конец файла можно найти, зная размер и адрес начала файла. Размер файла определяется либо анализом заголовка (ZIP, JPEG, AVI и т.п.), либо считыванием и анализом секторов диска, идущих сразу за заголовком. К примеру, концом текстового или HTML файла алгоритм будет считать первый же сектор, который будет содержать символы, не входящие в таблицу ASCII.
Заметили узкое место? Корректно работать эти алгоритмы будут только в условиях, когда весь файл целиком хранится в виде одного непрерывного фрагмента. Если же файл был сохранён в виде множества разрозненных фрагментов, восстановить его без записей в файловой системе будет чрезвычайно тяжело, практически невозможно. Поэтому, дабы впоследствие не рвать на себе волосы из-за «глючной флешки» с единственной копией диплома, следует принимать профилактические меры.
А как же восстановление «битых» файлов?
Да, это возможно. Но результат, что называется, рознится от случая к случаю. Для примера возьмём фотографию в формате RAW. Особенность этого формата – хранение одновременно нескольких копий одного и того же изображения. В файле содержатся как значения пикселей, считанные с матрицы фотоаппарата в «сыром» виде, так и несколько копий того же самого снимка в формате JPEG. Зачем? Для удобства и реализации предварительного просмотра фотографии на экране фотоаппарата. Обработка снимка в формате RAW – достаточно ёмкий, с точки зрения вычислительных ресурсов фотоаппарата, процесс, и тратить их каждый раз, когда фотограф захочет просмотреть отснятый материал – нерационально. Поэтому в файл включаются копии изображения в формате JPEG в низком, среднем и высоком разрешении.
С точки зрения программы, ремонтирующей повреждённые файлы, такая структура с многократным дублированием информации оптимальна. Двоичный поток «сырых» данных занимает больше всего места в файле, поэтому статистически наиболее вероятно повреждение именно этого сегмента. Но у нас есть ещё три изображения в формате JPEG! Программа способна извлечь и при необходимости отремонтировать эти изображения. Если удастся вытащить фотографию самого большого размера – это уже победа. А иногда удаётся восстановить весь RAW целиком.
Профилактика
Во-первых, следите за количеством свободного места на диске. Если свободного места достаточно, у Windows не будет причин записывать файлы в виде отдельных фрагментов. Разумеется, какая-то фрагментация все равно возникнет, но катастрофических масштабов она, скорее всего, не примет.
Во-вторых, обязательно используйте дефрагментатор, причём делайте это регулярно.
В заключение хотелось бы сказать несколько слов о методах восстановления фрагментированных файлов, используемых спецслужбами и криминалистами всех мастей. Существуют специальные методы, позволяющие восстановить содержимое некоторых типов файлов буквально по кусочкам. Их работа похожа на сбор пазла: различные фрагменты данных пробуются в разных местах файла, после чего с помощью эвристических алгоритмов файл анализируется на целостность. Нужно ли говорить, что работа таких алгоритмов чрезвычайно ресурсоёмка, но при этом настолько медленна и ненадёжна, что использовать их вне стен криминалистических лабораторий просто невыгодно.
Алексей Дрозд
Комментарии
:)
> алгоритмы считывают информацию с поверхности диска
:)
Но в целом годится. Или я просто добрый сегодня?