Крис Касперски - Восстановление данных. Практическое руководство
Теперь наскоро очистим наш подопытный диск, и до предела заполним его какими-нибудь файлами.
СоветПредпочтительнее всего использовать текстовые файлы, так как в этом случае будет сразу видно, что извлекается с восстановленного диска — мусор или полезная информация.
Записав файлы на диск, тут же выполним его быструю очистку. Убедившись, что диск действительно очищен, и его содержимое уже недоступно, запустим Clone CD и запишем на очищенный диск только что созданный нами "лечебный" образ. Запись должна проводиться в режиме DAO, иначе ничего хорошего у вас не получится.
СоветПрежде чем восстанавливать сколько-нибудь ценный диск на еще неизвестном вам приводе, попробуйте провести эксперимент на диске, не содержащем ничего интересного.
Вот, наконец, мы держим в руках свежевосстановленный диск. Но действительно ли он восстановлен? А вот сейчас и убедимся! Вставляем "воскресшего из пепла" в привод NEC и с замиранием сердца пробуем прочитать один из наугад взятых секторов из середины диска (начальные сектора обычно содержат нули, потом — файловую систему, и их очень легко принять за бессмысленный мусор). О чудо!!! Оригинальное содержимое очищенного диска читается, как ни в чем не бывало. Правда, при попытке прочесть оглавление диска средствами операционной системы привод может впасть в задумчивость, граничащую с полным зависанием (ведь стартовый адрес первого трека расположен не в начале диска, а совсем в другом месте), но это все ерунда! Главное, что на секторном уроне диск все-таки доступен, пусть и не на всех приводах. Так, в частности, ASUS вообще отказывается читать такой диск, возвращая ошибку, a PHILIPS читает сплошной мусор. К счастью, этот мусор можно восстановить, — достаточно на битовом уровне выполнить EFM-перекодировку с более "правильной" позиции. Поскольку возможных позиций всего 14, перебор обещает не затягиваться на длительное время. Тем не менее, лучше всего будет просто приобрести более качественный привод.
Остается лишь привести диск в состояние, пригодное для работы с ним, средствами операционной системы. Последовательно читая все сектора диска один за другим, мы будем собирать их в один img-файл, для определенности именуемый recover.img. Сектора, которые не удалось прочитать даже с нескольких попыток, мы будем просто пропускать. Теперь скопируем "лечебный" ccd-файл в recover.ccd и вернем стартовый адрес первого трека на прежнее место. Запишем сформированный образ на новый диск. Теперь, если все было сделано правильно, любой привод должен корректно читать созданный диск. Сеанс демонстрационного восстановления окончен, и мы, освоившись с этой технологией, можем приниматься за вещи куда более серьезные. Например, откроем собственную компанию по восстановлению очищенных дисков. Шутка! Хотя… почему бы и нет?
Хорошо, а как быть, если очищенный диск был многосессионным? Ведь описанные выше приемы рассчитаны на работу лишь с одной сессией! На самом деле можно восстановить и многосессионный диск. Это лишь чуть-чуть труднее. Но, чтобы это сделать, мы должны предварительно познакомиться с остальными полями TOC.
Постойте, а что, если после очистки диска на него что-то писалось, — возможно ли тогда его восстановление или нет? Разумеется, непосредственно затертые позиции утеряны безвозвратно, но остальную часть информации по-прежнему можно спасти. Если диск до очистки был многосессионным, то нам даже не придется возиться над восстановлением файловой системы, так как файловая система каждой последующей сессии дублирует предыдущую, за исключением удаленных файлов. Последняя сессия диска оказывается достаточно далеко от его начала, а потому и риск ее затирания — минимален (если, конечно, спохватиться вовремя, а не тогда, когда весь диск перезаписан до отказа). Восстановление односессионных дисков с затертой файловой системой — намного более трудная, но все-таки разрешимая задача. Во-первых, этих файловых систем на типовом диске целых две: ISO-9660 и Joliet. Правда, в силу их близкого географического положения при затирании диска обе они обычно гибнут. Во-вторых, указанные файловые системы не поддерживают фрагментации, и всякий файл, записанный на лазерный диск, представляет собой единый информационный блок. Все, что нужно для его восстановления, — определить точку входа и длину. Точка входа в файл всегда совпадает с началом сектора, а подавляющее большинство типов файлов позволяют однозначно идентифицировать свой заголовок по уникальной сигнатуре (в частности, для zip-файлов характерна следующая последовательность: 50 4B 03 04). Конец файла, правда, определяется уже не так однозначно, и единственная зацепка — структура самого восстанавливаемого файла. Впрочем, большинство приложений довольно лояльно относится к "мусору" в хвосте файла, и потому точность определения его длины с погрешностью в один сектор на практике оказывается вполне достаточной. Поскольку файлы располагаются на диске вплотную, без "зазоров", конечный сектор всякого файла надежно вычисляется путем вычитания единицы из стартового сектора следующего за ним файла.
Вообще же говоря, техника восстановления лазерных дисков намного проще и незатейливее искусства врачевания их прямых коллег — дискет и жестких дисков. Правда, поговорку "семь раз отмерь — один раз отрежь" еще никто не отменял, и одна из неприятнейших особенностей работы с CD-RW как раз и состоит в том, что вы не можете гарантированно управлять процессом происходящей записи. Дискеты и жесткие диски в этом смысле полностью прозрачны, — что вы пишете, то вы и получаете. Перезаписываемые же носители, напротив, представляют собой "черный ящик", и вы никогда не можете быть уверенными в том, что конкретный привод будет правильно интерпретировать отдаваемые ему команды (увы, восстановление дисков CD-RW никак не вписывается в рамки Стандарта, а все нестандартные махинации могут интерпретироваться приводом неоднозначно). Единственное, что остается посоветовать: не пускайте все на самотек. Бесконечно экспериментируйте, экспериментируйте и еще раз экспериментируйте, накапливая бесценный опыт, который вам когда-нибудь может очень пригодиться.
Искажение размеров файлов
Еще (или, скорее уже) во времена монохромных терминалов и первых магнитных дисков существовал некрасивый, но элементарно реализуемый защитный прием, препятствующий пофайловому копированию носителя. Внося определенные искажения в структуры файлов системы, разработчики "портили" дискету ровно настолько, чтобы работа с ней становилась возможной лишь при условии учета характера внесенных искажений. Защищенная программа, "знающая" об искажениях файловой структуры, работала с ней без проблем, но штатные утилиты операционной системы работать с такими дисками не могли. Общедоступных "хакерских" средств копирования в те времена еще не существовало.
Несколько файлов зачастую ссылались на общие для всех них кластеры, и тогда запись данных в один файл приводила к немедленному их появлению в другом, что защита могла так или иначе использовать. Естественно, после копирования файлов на новый диск пересекающиеся кластеры "разыменовывались", и хитрый способ неявной пересылки данных переставал работать. Вместе с ним переставала работать и сама защищенная программа, если, конечно, содержимое диска вообще удавалось скопировать. Ведь копирование файлов с пересекающимися кластерами приводило к тому, что эти кластеры многократно дублировались в каждом копируемом файле, в результате чего их суммарный объем подчас увеличивался настолько, что емкости тогдашних носителей попросту не хватало для хранения таких объемов данных! Если же последний кластер файла "приклеивался" к его началу (файл, таким образом, попросту зацикливался), то объем и время его копирования попросту обращались в бесконечность. Конечно, дисковые доктора в то время уже существовали, но их использование не давало желаемого результата, потому что лечение файловой системы приводило к полной неработоспособности защиты. В случае с зацикливанием, например, если защита основывалась на том, что за концом файла следует его начало, то после обработки диска доктором осуществление этого приема становилось невозможным со всеми от сюда вытекающими последствиями.
Файловые системы лазерных дисков, конечно, совсем не те, что на гибких дисках, но общие принципы их искажений достаточно схожи. Увеличивая фиктивные длины защищаемых файлов на порядок-другой, разработчик защиты может довести их суммарный объем до нескольких сотен гигабайт, так что для копирования защищенного диска понадобится, по меньшей мере, пачка DVD или винчестер солидного объема. Защитный механизм, "помнящий" оригинальные длины всех файлов, сможет работать с ними без проблем, но все средства копирования файлов не поймут этого юмора, и их поведение станет неадекватным.