Восстановление данных из chk-файлов
Бывало встаешь с утра, включаешь компьютер, всё идет своим чередом… И вдруг запускается ScanDisk. Ждём, пока он закончит, загружаемся до конца и видим, что части важных файлов нет Если никаких новых папок на своих дисках мы не увидели, не отчаиваемся, идем в «Мой компьютер – Сервис – Свойства папки – Вид» и ищем и ставим галку напротив «Показывать скрытые папки и файлы».
Да, для сохранения дополнительной защиты ОС, не забудьте после завершения всех манипуляций вернуть это свойство в исходное состояние. Затем снова смотрим на содержимое наших дисков и что же мы видим? Появились какие-то непонятные папки FOUND.000, FOUND.001 и т.д., а в них файлы file0001.chk, file0002.chk… Что случилось?
Когда при некорректном выключении компьютера, сбое в работе файловой системы или по каким-то другим причинам Windows «думает» что могла нарушится целостность файловой системы, она запускает ScanDisk. Эта программа отличается от софта для восстановления данных тем, что при обнаружении ошибок в файловой системе, просто исправляет их, а данные, которые не знает куда деть, рассовывает по chk-файлам. В процессе такой работы, уничтожаются «следы», которые могли бы быть использованы для прямого восстановления данных. Таким образом получается, что если после потери данных по разделу прошел ScanDisk, вероятность успешного восстановления специальным софтом (R-Studio, например) стремится к нулю, остаётся ковыряться в .chk-файлах, в надежде восстановить данные оттуда. Итак…
Утилита ScanDisk имеет множество параметров: scandisk.exe [drive: [drive: ...]|/all] [/checkonly | /autofix [/nosave] | /custom] [/surface] [/mono] [/nosummary]
Собственно целью данной статьи не является изучение параметров ScanDisk, поэтому рассматривать их все я не буду, а лишь покажу в каком случае мы получим наши заветные chk-файлы и что с ними впоследствии делать. Команда с:> scandisk.exe проверит целостность файловой системы на текущем диске с: и позволит исправить обнаруженные ошибки. При указании параметра /autofix, обнаруженные ошибки исправляются автоматически без предварительного запроса на разрешение. Параметр /nosave разрешает утилите ScanDisk удалять информацию, расположенную в потерянных областях (кластерах) диска. Если параметр /nosave не указан, информация из потерянных областей сохраняется в корневых каталогах соответствующих дисков в файлах FILEnnnn.chk, где "nnnn" – порядковый номер файла. В итоге на диске появляются такие файлы, как file0001.chk, file0002.chk и т.д. По-умолчанию Windows вызывает Scandisk с параметром /autofix, поэтому мы и получаем эти файлы, которые содержат информацию, расположенную в потерянных областях (кластерах) диска.
Думаю теперь понятно, почему появляются эти злосчастные chk-файлы. Будем разбираться, что же с ними делать. Как уже было сказано, chk-файлы содержат информацию, расположенную в потерянных областях диска. Говоря простым языком – частично там могут находится те данные, которые вы не обнаружили после загрузки. Как же выполнить восстановление данных? Как получить безвозвратно утерянную коллекцию фотографий игрушечных покемонов из папье-маше или годами собиравшуюся коллекцию «Блатного тайваньского шансона»?
Итак, у нас в наличии папки с файлами file0001.chk, file0002.chk и т.д. Для дальнейших действий нам пока понадобится лишь текстовый редактор и определенные знания. Начнем с определения. Сигнатура файла – это константа, некий постоянный набор символов, позволяющий однозначно идентифицировать, какого типа данные содержатся в данном файле. Опять же, изъясняясь проще – это фрагмент кода в файле, по которому однозначно можно понять, что это за файл, какой программой он создан и другую информацию. К примеру, exe-файл всегда начинается с символов «MZ», Rar-архив имеет в своём коде «Rar!» и т.д. Понимаете к чему я клоню? Правильно, посмотрев файл и изучив его сигнатуру, можно понять, что это за файл. Опять же, невозможно запомнить все сигнатуры, потому что не все так просто, как кажется на первый взгляд (например сигнатура файла формата png выглядит так «0x89504E470D0A1A0A» и запомнить ее явно проблематично, если Вы не Джонни Мнемоник, конечно!). Правда сигнатура – не единственное средство.
Ручная сортировка.
Перейдем теперь непосредственно к практике. Берем первый попавшийся chk-файл, открываем его через текстовый редактор и смотрим на его содержимое. Кроме как нечто вроде «сћэк%Э ‘Ґcrm-Ъ7€‡P 9 NЮёЫѓЋ}y=3» на протяжении всего файла не часто увидишь, поэтому беглый осмотр нам редко когда чего даст. Первым делом пытаемся увидеть знакомые сигнатуры. Увидели что-то знакомое? Отлично! Закрываем редактор, заменяем расширение файла с chk на то, которое мы узнали и радуемся результату, прыгаем на месте, хлопаем в ладоши! Если повезло, файл корректно откроется соответствующей программой. Но это самый простой и удачный случай. Теперь же вернемся чуть назад. Знакомую сигнатуру мы не нашли. Что же делать дальше? Дальше начинаем методично, вручную просматривать содержимое файла и пытаемся почерпнуть оттуда полезную информацию. Что я понимаю под полезной? Ну, например, если мы нашли куски текста, то большая вероятность, что это файл Word или Excel, если что-то вроде «KONICA MINOLTA DIGITAL CAMERA», то, очевидно, это ваши фотографии либо видео с того же фотоаппарата с расширением mov (наиболее распространенное на данный момент, хотя многие уже пишут напрямую в avi) ну и т.д. Имея на руках данную информацию мы можем отсортировать все chk-файлы по известным нам типам. Так же, имеет смысл обращать внимание на объем chk-файлов. Если файл занимает порядка 680-740 мегабайт, то скорее всего это фильм и можно просто подобрать нужное расширение (avi, mpeg и т.д.). Я вижу уже улыбку, расплывающуюся у тебя на лице от удовольствия и ощущения, что ты легко вернешь все файлы, но, к сожалению, это не так. Очень часто chk-файлы могут содержать не все, а лишь часть данных исходного файла. Например, после смены расширения chk-файла мы получаем битый doc или кусок картинки. В этих случаях, для получения удовлетворительных результатов, может потребоваться использование специализированных программам, предназначенных для восстановления данных из повреждённых файлов конкретных типов. Тематика использования такого софта достаточно обширна, и выходит за рамки этой статьи. Если потребуется, информацию о программах, выполняющих восстановления данных из битых файлов конкретного типа можно найти с помощью поисковых систем. Так же в .chk-файлах может быть просто «мусор», который тебе не нужен.
Автоматическая сортировка.
Вот, в принципе, и всё, целый один chk-файл мы опознали и вернули на место. Но ведь это только один файл, а их может быть порядка тысячи и более… Что же, просматривать все файлы вручную? Правильно! Конечно же нет… Благодарим Михаила Маврицина, который написал, с моей точки зрения, наиболее толковую из бесплатных программ для автоматической сортировки .chk. Итак, приветствуем нашего помощника – CHKParser32.
После запуска программы перед нами предстает окно, показанное выше. Как можно видеть, функционально всё достаточно удобно, видно количество известных сигнатур, количество chk-файлов в сканируемой директории и, по окончании процесса, количество распознанных. Во время тестирования все файлы, которые я попытался «скормить» программе были успешно «проглочены» и распознаны. Программа работает очень быстро. Так же к плюсам можно отнести легкость расширения списка сигнатур. Для этого нужно лишь добавить строчку в ini-файл, идущий в комплекте с программой. Я, например, при тестировании, в течении 5 минут изучил сигнатуры файлов типа mov и уже при следующем этапе тестирования программа легко их находила и распознавала. Если же хочется более подробно изучить работу программы, то милости прошу к её описанию. Как видно, потратив 2 минуты на работу с программой, мы экономим кучу времени, которое потратили бы на ручную сортировку. Однако не советую про нее забывать. Если все-таки программа не смогла распознать какие-то chk-файлы, рекомендую вручную их посмотреть, а не удалять, вдруг чего интересного разыщите!
Андрей Зельников, специально для rlab.ru.
(Перепечатка или цитирование разрешены при условии указания ссылки вида Восстановление данных R.LAB на первоисточник.)