12 лет назад 16 июня 2006 в 21:50 130

При быстром форматировании rw-дисков очищается только небольшая заголовочная область, содержащая таблицу размещения файлов, – toc (table of contents). Сами же файлы остаются на своих местах, они уничтожаются только при последующей записи на болванку или при полном форматировании. Данные на оптических носителях, в отличие от магнитных, после полного форматирования уже не восстановить, а вот после быстрого – еще можно.

На практике задача восстановления данных после выполнения операции Quick Erase Rewritable Disk весьма сложна: ни одна из программ для работы с дисками не может даже получить доступ к испорченному треку. Потерпели фиаско Multi Data Rescue (www.naltech.com), CD/DVD Diagnostic (www.infinadyne.com), CDRoller (www.cdroller.com), CD&DVD Recovery (www.diskinternals.com), и даже полезнейшая во многих других случаях утилита ISOBuster (www.ibobuster.com) осталась не у дел.

Происходит это потому, что программы, не видя ТОС, не могут распознать начало трека и считают диск абсолютно чистым, поэтому первое, что нужно сделать – записать на диск ТОС, однако таким образом, чтобы не повредить основные данные. Таблица размещения файлов не обязательно должна соответствовать реальному расположению данных на спасаемом диске, главное, чтобы записанный в ней объем файлов был не меньше реального.

Делается это достаточно просто. В стандартную поставку Nero Burning Rom входит утилита CDSpeed, предназначенная для тестирования качества дисков, в том числе и качества записи. По команде “Запуск теста” > “Создать диск данных” (или просто по нажатию F9) утилита создает тестовый диск, объем которого равен максимальному объему носителя в дисководе.

После начала записи примерно через две секунды процесс нужно остановить, нажав “Стоп” или для верности перезагрузив компьютер кнопкой Reset. Время от начала до остановки записи должно быть таким, чтобы в области ТОС запись уже завершилась, а в области данных – еще не началась. Оно может варьироваться в зависимости от носителя, привода и скорости записи и составляет от двух до пятнадцати секунд, поэтому перед восстановлением важных данных обязательно потренируйтесь на ненужной болванке, иначе данные могут быть уничтожены безвозвратно.

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

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

Разумеется, размеры и имена файлов отображаются совершенно некорректно, но это не имеет значения – с помощью ISOBuster восстанавливать данные мы не будем. Нам нужно лишь узнать, файлы каких типов были на диске, а с этим программа справилась на отлично. На следующем этапе нужно перенести данные с RW-носителя на жесткий диск. В принципе, это не обязательно, однако такой перенос ускорит последующий поиск файлов в сотни раз.

Обычные средства экспорта трека (например, команда Extras > Save Tracks в Nero) в нашем случае могут не справиться, поскольку почти наверняка при чтении возникнут ошибки и процесс завершить не удастся (особенно если данных на диске записано меньше, чем указано в ТОС). Можно воспользоваться ISOBuster. Для этого нужно выделить трек и в меню правой кнопки мыши выбрать “Извлечь имя_трека > Извлечь пользовательские данные”. При этом в случае DVD нельзя забывать, что образ нужно сохранять на раздел с файловой системой NTFS, поскольку он наверняка будет длиннее четырех гигабайт.

Стопроцентную же гарантию чтения может дать только шестнадцатеричный редактор с модулем прямого доступа к диску. Таких программ много, но лучше остановиться на WinHex (www.x-ways.net), она имеет богатые возможности и весьма дружелюбный интерфейс, в интернете можно найти и русскую версию. После запуска WinHex следует командой Tools > Open disk (Инструменты > Открыть диск) подключиться к нужному дисководу – выбирайте из раздела Physical Media, флажок “Raw CD-access” устанавливать не нужно.

После выбора привода программа попросит указать геометрию диска: количество цилиндров, головок и секторов. Важнее всего последний параметр, именно он определяет размер считываемой области. Зависит он от размера диска в байтах, посмотреть который можно, заглянув в свойства трека в той же ISOBuster. Для DVD-RW этот размер составляет 4707319808 байт, делением на 2048 получаем 2298496 секторов. Количество цилиндров и головок лучше установить на 1, количество секторов на трек – оставить по умолчанию.

Теперь осталось только нажатием Ctrl-A выделить все содержимое диска, а затем нажатием Shift-Ctrl-N сохранить его в файл на жестком диске. Процесс довольно длительный, зато дает полную гарантию извлечения данных. В конце этого процесса возможно появление ошибок, однако их можно просто игнорировать, запретив, разумеется, программе удалять якобы неудачно записанный файл. Итак, данные извлечены, осталось лишь разрезать их на отдельные файлы. Для этого вновь воспользуемся WinHex.

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

1. Откройте в WinHex полученный на предыдущем этапе образ.
2. Откройте в WinHex файл такого же типа, как тот, который нужно восстановить.
3. Скопируйте в буфер обмена первые 16 байт этого файла, для этого выделите их мышью и нажмите Ctrl-C.
4. Вернитесь к образу, сочетанием Ctrl-F вызовите модуль поиска, вставьте в строку поиска нужный заголовок (не пугайтесь, увидев вместо цифр непонятные символы – так и должно быть) и нажмите ОК.
5. По завершении поиска WinHex установит курсор на первый байт найденного заголовка – это и есть начало какого-то из файлов нужного нам типа. Пометьте этот байт как начало блока, кликнув по нему правой кнопкой мыши и выбрав “Beginning of block”. Теперь нужно найти место, где файл заканчивается.

В общем случае файлы разделяются блоками, заполненными нулевыми байтами, однако количество таких блоков может меняться от файла к файлу, так что какого-то однозначного признака конца файла нет (он записан в утерянной ТОС), искать его приходится самостоятельно. Если известно, что на диске подряд идут несколько файлов такого типа, можно просто найти следующий заголовок (установив при поиске направление Down вместо All) и пометить в качестве конца блока последние значащие (ненулевые) байты предыдущего файла.

Выделенный таким образом блок осталось сочетанием клавиш Shift-Ctrl-N сохранить в новый файл, не забыв указать соответствующее расширение. Как показывает практика, итоговый файл почти всегда получается рабочим. Немного сложнее, если подряд идут файлы разных типов, в этом случае последние значащие (ненулевые) байты придется отыскивать вручную, прокручивая образ клавишей PgDown. При этом нужно учитывать, что внутри файла тоже могут оказаться большие участки, заполненные нулями, так что может потребоваться несколько попыток. В этом деле поможет счетчик количества выделенных байтов, расположенный в правом углу строки состояния. С его помощью можно прикинуть примерный размер выделенного участка. Кроме того, процесс можно упростить, если поискать ниже заголовки других типов файлов, а после искать конец нужного файла перед ближайшим из них.

Описанный выше способ восстановления применим для любых типов RW-носителей: CD-RW, DVD-RW, DVD+RW. Он прекрасно подходит для плотно упакованных файлов, содержащих большие сплошные блоки байтов: архивы, мультимедиафайлы (музыка, видео, изображения), зашифрованные файлы и т. д. Намного сложнее иметь дело с “рыхлыми” файлами, содержащими большие блоки нулевых байтов (например, файлы MS Office). В таком случае поиск конца файла может сильно затянуться, а то и вообще не принести результатов. Также сложно работать и с простыми текстовыми файлами (TXT, HTML, RTF) – однозначного признака начала файла они не имеют, так что помочь здесь может только поиск в образе осмысленных слов или тэгов, однако вероятность восстановления несколько выше, поскольку текст и в бинарном виде хорошо различим, если взглянуть в столбец значений hex-редактора.

В итоге оказывается, что для того чтобы восстановить данные со случайно отформатированного RW-носителя, нужно только иметь стандартную поставку Nero Burning Rom, ISOBuster, WinHex, немного везения и несколько часов свободного времени.