КРИС КАСПЕРСКИ
Восстановление данных с лазерных дисков
…Такой объем информации можно уничтожить в один миг разве что динамитом,
потому что существуют дублирующие системы, и у скорости обработки есть предел.
Джон Варли «Нажмите ENTER»
Записываемые и перезаписываемые лазерные диски представляют собой идеальное средство для резервирования информации умеренных объемов (а всякий администратор обязательно должен заботиться о периодическом резервировании вверенной ему информации). К сожалению, никакая работа без ошибок не обходится (что поделаешь, человеку свойственно ошибаться – errare humanum est, как говорили древние), и ошибочное удаление файлов CD-R/CD-RW дисков, равно как и непредумышленная очистка последних хотя бы однажды да случается (на самом деле, как показывает практика, с этим явлением приходится сталкиваться далеко не однажды, особенно если пользователи самостоятельно резервируют ту или иную информацию на CD-R/CD-RW). Насколько известно автору, утилит, предназначенных для восстановления информации с лазерных дисков, до сих пор не разработано (во всяком случае, они не были широко представлены на рынке), поэтому восстановлением запоротых дисков в подавляющем большинстве случаев приходится заниматься самостоятельно. О том, как именно это сделать и рассказывает настоящая статья.
Восстановление удаленных файлов с CD-R/CD-RW
Заявляя о своей поддержке многосессионных дисков, операционные системы Windows 9x и Windows NT (вплоть до W2K включительно) тактично умалчивают о том, что поддерживают их лишь частично.
Каждая сессия – это вполне самостоятельный том (в терминологии Windows – «логический диск»), имеющий свою собственную файловую систему и свои собственные файлы. Благодаря сквозной нумерации секторов лазерного диска, файловая система одной сессии может ссылаться на файлы, физически расположенные в любой другой сессии. Для того чтобы с многосессионным диском было можно работать как с единым томом, файловая система последней сессии должна включать в себя содержимое файловых систем всех предыдущих сессий. Если этого не сделать, то при просмотре диска штатными средствами Windows оглавления остальных сессий окажутся потерянными, поскольку Windows монтирует лишь последнюю сессию диска, а все прочие – игнорирует. Программы «прожига» CD-R/RW по умолчанию добавляют содержимое файловой системы предыдущей сессии к последующей, однако это еще не означает, что последняя сессия диска всегда содержит в себе все то, что имеют предыдущие.
Рассмотрим, например, как осуществляется удаление файлов с CD-R/RW. Нет, это не опечатка! Содержимое дисков CD-R, несмотря на физическую невозможность их перезаписи, в принципе все же уничтожаемо.
Для имитации удаления файла программы записи на CD просто не включают ссылку на уничтожаемый файл в файловую систему последней сессии. И хотя «удаленный» файл все еще присутствует на диске, «отъедая» часть дискового пространства, при просмотре содержимого диска из-под Windows он уже не отображается в каталоге. «Какой же тогда смысл несет в себе удаление файлов с CD-R, если свободная емкость диска при этом не увеличивается, а даже уменьшается?!» – удивленно спросит иной читатель. На самом же деле смысл этой операции (если его вообще можно назвать «смыслом») заключен исключительно в сокрытии «удаляемых» файлов от простых пользователей.
Раз удаленные файлы не видны при просмотре содержимого диска штатными средствами, то неквалифицированному пользователю они формально недоступны. Подчеркиваю: для штатных средств операционной системы Windows недоступны, но те же «Маки» позволяют монтировать любую сессию диска на отдельный том, благодаря чему при просмотре многосессионных дисков под «Маками» все удаленные файлы сразу же «всплывают».
Аналогичным образом обстоят дела и при удалении информации с CD-RW дисков. Несмотря на теоретическую возможность физического уничтожения их содержимого, подавляющее большинство записывающего софта поддерживает лишь функцию очистки всего диска целиком, но не в состоянии выборочно удалять отдельные файлы. Так что все, сказанное выше о CD-R дисках, в равной мере применимо и к CD-RW.
Поэтому, записывая на диск информацию, предназначенную для передачи постороннему лицу, ни в коем случае не используйте для этой цели болванки, содержащие конфиденциальные данные. «Удаление» ранее записанных на болванку данных на самом деле не уничтожает их!
Просматривая содержимое лазерного диска, полученного от приятеля (купленного на радио-рынке, вытащенного из мусорной корзины), имеет смысл попытаться заглянуть внутрь предыдущих сессий на предмет поиска скрытой информации. Как показывает практика, очень часто там обнаруживается много интересного. Так же вам может потребоваться восстановить ошибочно удаленный файл со своего собственного диска, а то и воскресить всю «пришибленную» сессию целиком (некоторые программы записи на CD позволяют пользователю выбирать: следует ли при создании новой сессии добавлять в нее файловую систему предыдущей или же в новую сессию следует включать только новые файлы. Неверный выбор настроек приводит к утрате содержимого всех предыдущих сессий, но, к счастью, эта утрата обратима).
Для восстановления удаленных файлов можно воспользоваться любой программой, умеющей извлекать содержимое выбранной сессии диска и записывать его в ISO-образ. Пусть для определенности это будет Roxio Easy CD Creator. Позволив приводу «заглотить» восстанавливаемый диск, в меню «CD» выбираем пункт «CD Information» и после этого на экране отображается диалоговое окно следующего вида:
Рисунок 1. Анализ содержимого диска на предмет выявления удаленных файлов
Как мы и видим, перед нами представлен перечень всех сессий, имеющихся на диске с указанием номеров, стартовых адресов (в секторах) и длин (в мегабайтах). Давайте попробуем определить, имеются ли на диске скрытые файлы или нет. Используя команду «dir», выведем директорию диска и запомним суммарный размер всех файлов, которые только «видит» операционная система:
Листинг 1. Вывод содержимого диска на экран, на самом деле коварная Windows выводит содержимое одной лишь последней сессии диска. Что содержат все остальные – неизвестно. Во всяком случае, пока неизвестно
KPNC$G:>dir
Том в устройстве G имеет метку 030710_1433
Серийный номер тома: 4DD0-BB09
Содержимое папки G:
28.05.2003 05:57 6 283 745 phck31.drf.zip
03.06.2003 05:39 8 085 410 phck31.Вт 03.06.2003.zip
04.06.2003 16:45 7 898 149 phck31.Ср 04.06.2003.zip
05.06.2003 06:06 6 718 926 phck31.Чт 05.06.2003.zip
03.07.2003 15:51 10 612 230 phck31.Чт 03.07.2003.zip
05.07.2003 06:37 8 946 860 phck31.Сб 05.07.2003.zip
08.07.2003 12:51 9 009 642 phck31.Вт 08.07.2003.zip
09.07.2003 06:21 9 138 651 phck31.Ср 09.07.2003.zip
10.07.2003 14:32 9 388 543 phck31.Чт 10.07.2003.zip
9 файлов 76 082 156 байт
1 папок 0 байт свободно
Ага, совокупный объем 9 файлов, доступных для операционной системы, составляет всего 72 Мб (760 82 156 байт), а совокупный объем всех сессий диска – 47,66 + 6,50 + 8,21 + 8,04 + 6,91 + 10,62 + 9,04 + 9,10 + 9,22 + 9,46 = 124,76 Мб, что на 52 Мб длиннее! (Примечание: поле «Write Sector», содержащее длину записанной области диска и равное в данном случае 255 Мб, для наших целей абсолютно бесполезно, поскольку в записанную область диска входят не только полезные данные, но и служебные области каждой сессии, в результате чего полная емкость диска всегда меньше его эффективной емкости, даже если на нем нет никаких удаленных файлов).
В какой именно сессии содержатся удаленные файлы, сказать невозможно – они могут присутствовать в любой из них (или даже в нескольких сессиях сразу). Поэтому в общем случае все имеющиеся сессии должны просматриваться последовательно. Однако иногда удается найти более короткие пути. Применительно к рассматриваемому нами примеру: давайте попробуем оттолкнуться от того факта, что количество имеющихся на диске сессий на единицу больше числа выведенных командой dir файлов, причем размеры девяти последних секций практически совпадают с размерами соответствующих им файлов. Первая же сессия диска, имеющая размер 48 Мб, не соответствует ни одному из видимых файлов. Что же она тогда содержит? А вот сейчас смонтируем эту сессию на отдельный дисковый том и посмотрим! К сожалению, штатные средства Windows не позволяют осуществлять такое монтирование непосредственно и потому приходится идти обходным путем, записывая выбранную сессию в ISO-образ с последующим копированием последнего на чистый CD-R/CD-RW диск. Естественно, CD-RW диски более практичны для таких экспериментов, поскольку их можно использовать многократно. Еще удобнее Alcohol 120%, динамически монтирующий ISO-образы на виртуальный CD-ROM, и тем самым экономящий кучу времени (но, к сожалению, он не предоставляет возможности выбора сохраняемых сессий и всегда помещает в создаваемый им образ содержимое всего диска целиком, поэтому одного лишь «Алкоголика» для наших экспериментов будет более чем достаточно).
Возвращаясь к нашим баранам (простите, к Roxio Easy CD Creator), дважды щелкнем мышем по строке «Session 1» или, предварительно выделив ее курсором, нажмем на кнопку «Read Track». На экране немедленно появится диалоговое окно следующего вида:
Рисунок 2. Диалоговое окно извлечения сессии с настройками по умолчанию
Поле «Имя файла», как и следует из его названия, задает имя образа (по умолчанию «Track»), а «Тип файла» – формат. Каким-либо образом «колдовать» над ним бесполезно, поскольку других форматов бесплатная версия программы все равно не поддерживает и возможность их выбора (точнее, видимость возможности выбора) предоставляется пользователю исключительно из соображений этикета и/или вежливости.
А вот настройки, обведенные рамкой «Read Data Track Settings», намного более интересны. Окно редактирования «Start Block» содержит LBA-адрес первого сектора выбранной сессии, а «Length in Block» – длину сессии в секторах и по умолчанию сюда подставляется информация, подчерпнутая из TOC. При условии, что TOC не был умышленно искажен с целью защиты диска от копирования, этим данным можно верить. Однако как мы увидим в дальнейшем, искажение TOC не редкость и с ним довольно часто приходится сталкиваться на практике (впрочем, возможности Easy CD Creator по восстановлению треков с искаженными адресами даже более чем ограничены, т.к. он слишком щепетильно проверяет «правильность» начального и конечного адресов, и если TOC говорит, что начальный адрес больше конечного, то Easy CD Creator будет свято верить TOC, причем настолько свято, что все попытки убедить его в обратном заранее обречены на провал, так что для работы с защитами лучше подыскать другую программу, поумнее).
Поле «Block Size» содержит размер пользовательской части сектора в байтах. Свобода выбора здесь представлена чисто символически, все равно изменить это значение вы не сможете (да и нужно ли его изменять? ведь «сырых» секторов Easy CD Creator все равно не поддерживает, а размер пользовательской части сектора однозначно определяется типом самого сектора и его изменение бессмысленно).
Короче говоря, оставив все установки в состоянии, предлагаемым по умолчанию, нажимаем кнопочку «сохранить» и некоторое время ждем, пока выбранная нами сессия копируется в ISO-файл. Когда же процесс «трансплантации» будет закончен, сформированный образ можно «закатать» на новую болванку тем же Easy CD Creator (в меню «File» необходимо выбрать пункт «Record CD from CD image», указав в типе файлов «ISO Image File»), либо запустить «Алкоголика» и смонтировать образ на виртуальный диск.
Так или иначе, доступ к удаленным файлам будет получен, и вы сможете делать с ними все что хотите. (Внимание! При просмотре содержимого «сграбленной» сессии всегда учитывайте, что, во-первых, файлы, физически принадлежащие другим сессиям, из данной сессии окажутся недоступными, в то время как ссылки на них здесь могут изобиловать. При обращении к реально несуществующему файлу будет выдаваться либо мусор, либо сообщение об ошибке. Как альтернативный вариант – операционная система может просто зависнуть. Если это произошло, просто нажмите кнопку выброса диска. Windows тут же выйдет из ступора и радостно завопит, что «устройство не готово». Во-вторых, в силу сквозной адресации секторов, каждая «сграбленная» сессия должна записываться на то же самое место диска, на котором она была ранее, в противном случае все ссылки на стартовые адреса файлов внутри этой сессии окажутся недействительными. Требуемый результат обычно достигается изменением стартового адреса первого трека. О том, как это сделать, рассказывается в следующей части статьи, посвященной восстановлению информации с очищенных CD-RW дисков.)
Восстановление очищенных CD-RW
Существует две принципиально различных методики очистки CD-RW: быстрая (quick) и полная (full). При быстрой очистке диска с него удаляется лишь область TOC, в результате чего диск выглядит «пустым», хотя его основное содержимое остается совершенно нетронутым. Напротив, при полной очистке луч лазера «выжигает» всю поверхность диска целиком – от первого пита до последнего. Естественно, на это требуется время и полная очистка диска может растянуться на добрый десяток минут, в то время как быстрая спокойно укладывается в одну-две минуты.
Восстановление полностью очищенных дисков возможно только на специальном оборудовании, способном улавливать даже незначительные изменения отражательной способности рефлекторного слоя. Такое оборудование подавляющему большинству пользователей, разумеется, недоступно. Однако диски, подвергнувшиеся быстрой очистке, могут быть восстановленны и на штатном рекордере (правда, не на всех моделях).
Мы не будем касаться этической стороны проблемы и для простоты предположим, что вы хотите реанимировать свой собственный непредумышленно очищенный CD-RW диск, или условимся считать всех читателей сотрудниками КГБ, которым поручили восстановить информацию с диска, добытого бесстрашными советскими разведчиками у американских шпионов. Отметим лишь то, что восстановление конфиденциальной информации с чужих CD-RW может быть классифицировано как получение несанкционированного доступа к последней со всеми вытекающими отсюда последствиями (на долгие годы – друзья в полоску и небо в клетку).
Для опытов по восстановлению информации с очищенных CD-RW дисков нам потребуется следующее:
- пишущий привод, не слишком дотошно следящий за корректностью содержимого TOC, поддерживающий режим RAW DAO и умеющий читать содержимое pre-gap первого трека. Не все модели писцов подходят для этой цели, поэтому будьте готовы к тому, что вам придется перепробовать большое количество различного оборудования (из двух моих рекордеров для восстановления очищенных дисков подходит лишь NEC, а PHILIPS на это, увы, не способен);
- продвинутый записывающий soft, позволяющий манипулировать служебными областями диска по своему усмотрению. Вы можете использовать Clone CD, CDRWin, Alcohol 120% или любую другую аналогичную утилиту по своему выбору. Однако весь последующий материал рассчитан исключительно на Clone CD и при переходе на остальные программы вы можете столкнуться с теми или иными проблемами. Если вы не уверены, что сможете справиться с ними самостоятельно – используйте Clone CD, ну а затем, по мере приобретения профессиональных навыков и должного опыта, вы без труда восстановите диск любой такой программой;
- средство для работы с диском на секторном уровне – утилита, позволяющая прочесть любой заданный сектор (конечно, при условии, что он вообще читается приводом) и не пытающаяся пропустить те сектора, в которых по ее самоуверенному мнению ничего интересного все равно нет. Копировщики защищенных дисков, перечисленные выше, для этой цели не подходят, т.к. отказываются читать «бесполезные» с их точки зрения сектора. Может быть, другие копировщики ведут себя и иначе – не знаю, не проверял. Вместо этого необходимую для работы утилиту я написал самостоятельно (ее можно скачать с сайта журнала по адресу: http://www.samag.ru/source/k1.zip).
Прежде чем начинать экспериментировать, давайте разберемся, почему после очистки диск перестает читаться. Вопрос не так глуп, каким он кажется, ведь информация, необходимая для позиционирования головки и поиска конкретных секторов при быстрой очистке диска остается нетронутой! Управляющие данные «размазаны» вдоль всей спиральной дорожки и для чтения диска на секторном уровне TOC, в общем-то, и не нужен. Да, отсутствие TOC значительно усложняет анализ геометрии диска и для определения количества треков/сессий диска в общем случае привод должен прочитать весь этот диск целиком. Но при восстановлении информации фактор времени играет второстепенную роль и им можно полностью пренебречь.
Тем не менее при попытке чтения любого из секторов очищенного диска привод с неизменным упорством возвращает ошибку. Почему? Очень просто, это «защита» от чтения заведомо некорректной информации. Еще ни один из всех знакомых мне приводов не мог читать сектора за пределами Lead-Out области (собственно, на программном уровне содержимое Lead-in/Lead-out областей недоступно тоже). Тем не менее эта невозможность отнюдь не концептуального уровня и удаление из микропрограммы привода «лишних» проверок позволят прочитать такой диск на ура. Нет, не подумайте! Призывать вас к дизассемблированию прошивок я не собираюсь. Дело это сложное, трудоемкое, да к тому же небезопасное. Неверно хакнутая прошивка может ко всем чертям угробить привод без малейшей надежды на его восстановление. Нет, уж лучше мы пойдем другим путем!
Идея восстановления информации, предлагаемая автором, в общих чертах сводится к записи на диск фиктивного TOC, адреса Lead-in и Lead-out областей которого указывают на первый и последний сектор диска соответственно, а стартовый адрес первого трека аккурат совпадает с концом pre-gap области, которая по стандарту должна занимать не менее 150 секторов (или 2 секунд в пересчете на абсолютные адреса). После этой нехитрой операции привод будет читать оригинальное содержимое очищенного диска как миленький, конечно, при том условии, что мы ухитримся настроить пишущий софт так, чтобы он, записав фиктивный TOC, никоим образом не пытался интерпретировать подсунутые ему указатели на Leadin/LeadOut области как указание «выжечь» всю поверхность диска целиком.
Проверка показывает, что Clone CD вообще не записывает такой TOC на диск, ругаясь на несоответствие размеров диска и образа файла. Alcohol 120% выполняет нашу просьбу без лишних препирательств, но совсем не так, как мы хотели! Забив весь восстанавливаемый диск непонятно откуда взятым мусором, он авторитетно сообщает, что в процессе записи произошли ошибки и, возможно, вам следует убедиться в исправности оборудования.
Хорошо, зайдем с другой стороны. Запишем на диск один реальный трек, занимающий минимально возможное количество секторов (по стандарту – 300, но некоторые приводы вполне удовлетворяются и меньшими значениями), но расширим его pre-gap с двух секунд на… весь диск! В результате мы потеряем лишь 300 последних секторов, но получим доступ ко всему остальному содержимому. Учитывая, что на диске этих секторов насчитывается немногим более 300 тысяч, нетрудно подсчитать, что процент успешно восстановленной информации составляет по меньшей мере 99,999% емкости всего диска, да и то лишь при том условии, что исходный диск был забит целиком, что в живой природе практически никогда не наблюдается. Если же это вас не удовлетворяет – разрабатывайте свой собственный софт, корректно записывающий фиктивный TOC, но ничего не делающий сверх этого (Lead-in область все равно записывает сам привод, ну а без Lead-out при аккуратном обращении с диском в принципе можно и обойтись, главное – пытаться прочитать сектора, находящиеся за пределами диска, иначе поведение привода станет трудно предсказуемым). Мне же это делать лень – с восстановлением полностью забитых дисков я еще не сталкивался. Во всяком случае пока…
Процедура восстановления состоит из трех частей: подготовки исходного образа трека с нормальным pre-gap; увеличения pre-gap до размеров целого диска и записи исправленного образа на восстанавливаемый диск. Первые два этапа достаточно выполнить всего один раз, т.к. полученный образ (далее мы будем называть его «лечебным») может использоваться для всех дисков (читай: для всех дисков той же самой емкости, по понятным соображениям вы не сможете корректно восстановить 23-минутрый диск с помощью образа, предназначенного для 80-минутного диска и, соответственно, наоборот).
Для начала возьмем чистый CD-RW диск («чистый» не в смысле «ни разу не записанный», а очищенный быстрой или полной очисткой, так же для этих целей подойдет и CD-R). Используя любую утилиту для штатного «прожига», запишем на него один крошечный файл, «весящий» не более 500 Кб (более тяжелый файл просто не уместится в запланированные 300 секторов). Выполнять финализацию диска не нужно.
Запустим Clone CD (Alcohol 120%) и снимем образ диска. Спустя минуту-другую на винчестере образуются два файла: file name.img и file name.ccd (если вы попросили Clone CD сохранять так же и субканальную информацию, образуется третий файл – file name.sub, однако субканальная информация в данном случае будет только мешать, потому опцию «чтение субканалов из треков с данными» лучше всего отключить или же просто удалить file name.sub с диска; также нам не нужен «Cue-Sheet», который Clone CD предлагает создавать для совместимости с другими программами, конкретно – с CDRWin).
Открыв file name.ccd-файл любым текстовым редактором, найдем в нем следующие строки (ключевые слова для поиска «Point=0xa2» и «Point=0x01»):
Листинг 2. Оригинальный стартовый адрес Lead-Out (слева) и стартовый адрес первого трека диска (справа).
[Entry 2] [Entry 3]
Session=1 Session=1
Point=0xa2 Point=0x01
ADR=0x01 ADR=0x01
Control=0x04 Control=0x04
TrackNo=0 TrackNo=0
AMin=0 AMin=0
ASec=0 ASec=0
AFrame=0 AFrame=0
ALBA=-150 ALBA=-150
Zero=0 Zero=0
PMin=0 PMin=0
PSec=29 PSec=1
PFrame=33 PFrame=0
PLBA=2058 PLBA=0
Изменим поля PMin:PSec:PFrame, принадлежащие Point=0xa2 так, чтобы они указывали на самый конец диска (0xa2 – это как раз Lead-Out и есть). Измененный Lead-Out может выглядеть, например, так: 74:30:00. Адрес Lead-Out следует выбирать с тем расчетом, чтобы между ним и внешней кромкой диска оставался по меньшей мере 30-секундный зазор. Еще лучше, если ширина Lead-Out составит полторы минуты или около того. Однако в этом случае будут неизбежно теряться последние треки восстанавливаемого диска (если, конечно, вам действительно требуется их восстановить).
К содержимому полей PMin:PSec:PFrame, принадлежащих Point=0x01 (стартовый адрес первого трека), необходимо добавить ту же самую величину, которую вы добавили к соответствующим полям Lead-Out. Отредактированный вариант может выглядеть, например, так: 74:01:42. (74:30:00 /* новый адрес Lead-out */ – 00:29:33 /* старый Lead-Out */ + 00:01:00 /* старый стартовый адрес первого трека */ = 74:01:42 /* новый стартовый адрес */). Короче говоря, новая версия ccd-файла должна выглядеть так:
Листинг 3. Ключевой фрагмент «реаниматора» 75-минутных CD-RW дисков.
[Entry 2] [Entry 3]
Session=1 Session=1
… …
PMin=74 PMin=74
PSec=30 PSec=01
PFrame=00 PFrame=42
Вообще-то, для приличия следовало бы скорректировать и поля PLBA (LBA-адрес связан с абсолютным адресом следующим соотношением: LBA = ((Min*60) + Sec)*75 + Frame, однако текущие версии работают исключительно с абсолютными адресами и LBA-адреса игнорируют. Теперь все что находится между концом Lead-in области и началом первого сектора и будет называться pre-gap. При «прожиге» диска область pre-gap остается нетронутой и позже может быть прочитана на секторном уровне (а это как раз то, что нам нужно!). Сказать по чести, чрезмерное увеличение pre-gap первого трека – не самая лучшая идея, т.к. не все приводы способны читать такой «жирный» pre-gap. С точки зрения совместимости было бы лучше увеличивать pre-gap второго трека, однако при этом первый трек придется располагать в самом начале диска и его тело неизбежно затрет восстанавливаемые сектора. И хотя это не такая уж большая проблема (в первых секторах диска все равно ничего ценного нет), к такой мере без особой необходимости все же лучше не прибегать. На крайний случай действуйте так: запишите на диск две сессии и вместо стартового адреса Point номер 0x01 меняйте стартовый адрес Point номер 0x02 (он будет находиться в разделе session=2).
Теперь наскоро очистим наш подопытный диск и до отвала забьем его какими-нибудь файлами (предпочтительнее всего использовать текстовики, т.к. в этом случае будет сразу видно: извлекается ли с восстановленного диска мусор или полезная информация). Записав файлы на диск, тут же выполним его быструю очистку.
Убедившись, что диск действительно очищен и его содержимое уже недоступно, запустим Clone CD и запишем только что созданный нами «лечебный» образ. Запись должна проводиться в режиме DAO, иначе ничего хорошего у вас не получится (поэтому прежде чем восстанавливать сколь-нибудь ценный диск на еще неизвестном вам приводе, попробуйте потренироваться на «кошках» – диске, не содержащем ничего интересного).
Вот наконец мы держим в руках свежевосстановленный диск. Но действительно ли он восстановлен? А вот сейчас и убедимся! Вставляем «воскресшего из пепла» в привод NEC и с замиранием сердца пробуем прочитать один из наугад взятых секторов из середины диска (начальные сектора обычно содержат нули, потом файловую систему, и их очень легко принять за бессмысленный мусор). О чудо! Оригинальное содержимое очищенного диска читается как ни в чем не бывало! Правда, при попытке прочесть оглавление диска средствами операционной системы привод может впасть в глухую задумчивость, граничащую с полным зависанием (ведь стартовый адрес первого трека расположен не в начале диска, а совсем в другом месте), но это все ерунда! Главное, что на секторном уровне диск все-таки доступен, пускай и не на всех приводах. Так, в частности, ASUS вообще отказывается читать такой диск, возвращая ошибку, а PHILIPS читает один мусор (к счастью, этот мусор можно восстановить, – достаточно просто на битовом уровне выполнить EFM-перекодировку с более «правильной» позиции. Поскольку возможных позиций всего 14, перебор обещает не затягиваться на длительное время. Тем не менее лучше не извращаться, а просто приобрести более качественный привод).
Остается лишь привести диск в состояние, пригодное для переваривания операционной системой (что толку в работе с диском на низком уровне?). Последовательно читая все сектора диска один за одним, мы будем собирать их в один img-файл, для определенности именуемый recover.img. Сектора, которые не удалось прочитать даже с нескольких попыток, мы будем просто пропускать. Теперь скопируем «лечебный» ccd-файл в recover.ccd и вернем стартовый адрес первого трека на прежнее место. Запишем сформированный образ диска на новую болванку и… (если все сделано правильно) любой привод должен читать ее правильно. Сеанс демонстрационного восстановления окончен, и мы, малость освоившись с этой технологией, можем приниматься за вещи куда как более серьезные. Например, откроем собственную компании по восстановлению очищенных дисков. Шутка! Хотя… почему бы и нет?
Хорошо, а как быть, если очищенный диск был многосессионным? Ведь описанные выше приемы рассчитаны на работу лишь с одной сессией! На самом деле можно восстановить и многосессионный диск. Это лишь чуть-чуть труднее. Но, чтобы это сделать, мы должны предварительно познакомиться с остальными полями TOC. А это уже тема следующей статьи!
Постойте, а если после очистки диска на него что-то писалось – возможно ли тогда его восстановление или нет? Разумеется, непосредственно затертые места утеряны безвозвратно, но остальную часть информации по-прежнему можно спасти. Если диск до очистки был многосессионным, то нам даже не придется корпеть над восстановлением файловой системы, т.к. файловая система каждой последующей сессии обычно дублирует предыдущую («обычно» это в смысле «за исключением удаленных файлов») и последняя сессия диска оказывается достаточно далеко от его начала, а потому и риск ее затирания минимален (если, конечно, схватиться вовремя, а не тогда, когда весь диск перезаписан до отказа). Восстановление одно-сессионных дисков с затертой файловой системой – намного более трудная, но все-таки разрешимая задача. Во-первых, этих файловых систем на типовом диске целых две: ISO-9660 и Joliet, правда, в силу их близкого географического положения при затирании диска они обычно гибнут обе. Во-вторых, указанные файловые системы не поддерживают фрагментации и всякий файл, записанный на лазерный диск, представляет собой единый информационный блок. Все что нужно для его восстановления – определить точку входа и длину. Точка входа в файл всегда совпадает с началом сектора, а подавляющее большинство типов файлов позволяют однозначно идентифицировать свой заголовок по уникальной сигнатуре (в частности, для zip-файлов характерна следующая последовательность: 50 4B 03 04). Конец файла, правда, определяется уже не так однозначно и единственная зацепка – структура самого восстанавливаемого файла. Впрочем, большинство приложений довольно лояльно относится к «мусору» в хвосте файла и потому точностью определения его длины с погрешностью в один сектор на практике оказывается вполне достаточной. Поскольку файлы располагаются на диске вплотную, без «зазоров», конечный сектор всякого файла надежно вычисляется путем вычитания единицы из стартового сектора следующего за ним файла.
Вообще же говоря, техника восстановления лазерных дисков намного проще и незатейливее искусства врачевания их прямых коллег – дискет и жестких дисков. Правда, поговорку «семь раз отмерь – один раз отрежь» еще никто не отменял, и одна из пренеприятнейших особенностей работы с CD-RW как раз и состоит в том, что вы не можете гарантированно управлять процессом происходящей записи. Дискеты и жесткие диски в этом смысле полностью прозрачны: что вы пишите, то вы и получаете. Перезаписываемые же носители, напротив, представляют собой «черный ящик», и вы никогда не можете быть уверенными в том, что данный конкретный привод будет правильно интерпретировать отдаваемые ему команды (увы, восстановление CD-RW дисков никак не вписывается в рамки стандарта, а все нестандартные махинации могут интерпретироваться приводом неоднозначно). Единственное, что остается посоветовать – не пускайте все на самотек, а бесконечно экспериментируйте, экспериментируйте и еще раз экспериментируйте, накапливая бесценный опыт, который вам когда-то очень пригодится.