Восстановление лазерных дисков
Записываемые и перезаписываемые лазерные диски представляют собой идеальное средство для резервирования информации умеренных объемов (а всякий администратор обязательно должен заботиться о периодическом резервировании вверенной ему информации!). К сожалению, никакая работа без ошибок не обходится. Что поделаешь — человеку свойственно ошибаться — Errare humanum est, как говорили древние. Ошибочное удаление файлов с носителей CD-R/CD-RW, равно как и непредумышленная очистка последних, хотя бы однажды, да случается. Кстати, как показывает практика, с этим явлением приходится сталкиваться далеко не однажды, особенно если пользователи самостоятельно резервируют ту или иную информацию на CD-R/CD-RW.
Насколько мне известно, утилит, предназначенных для восстановления информации с лазерных дисков, до сих пор не разработано. Во всяком случае, такие утилиты не были широко представлены на рынке. Поэтому в подавляющем большинстве случаев восстановлением испорченных дисков приходится заниматься самостоятельно.
Восстановление удаленных файлов с CD-R/CD-RW
Заявляя о своей поддержке многосессионных дисков, операционные системы Windows 9x и Windows NT (вплоть до Windows 2000 включительно) тактично умалчивают о том, что поддерживают их лишь частично. Каждая сессия — это вполне самостоятельный том (в терминологии Windows — "логический диск"), имеющий собственную файловую систему и собственные файлы. Благодаря сквозной нумерации секторов лазерного диска файловая система одной сессии может ссылаться на файлы, физически расположенные в любой другой сессии. Для того чтобы с многосессионным диском было можно работать как с единым томом, файловая система последней сессии должна включать в себя содержимое файловых систем всех предыдущих сессий. Если этого не сделать, то при просмотре диска штатными средствами Windows оглавления остальных сессий окажутся потерянными, поскольку Windows монтирует лишь последнюю сессию диска, а все прочие — игнорирует. Программы "прожига" CD-R/RW по умолчанию добавляют содержимое файловой системы предыдущей сессии к последующей, однако это еще не означает, что последняя сессия диска всегда содержит в себе все то, что имеется в предыдущих.
Рассмотрим, например, как осуществляется удаление файлов с CD-R/RW. Нет, это не опечатка! Содержимое дисков CD-R, несмотря на физическую невозможность их перезаписи, в принципе все же уничтожаемо. Для имитации удаления файла программы записи на CD просто не включают ссылку на уничтожаемый файл в файловую систему последней сессии. Следует, правда, заметить, что эта возможность дарована далеко не всем программам. Например, Roxio Easy CD Creator может поступать таким образом, a Stomp Record Now! — нет. И хотя "удаленный" файл все еще присутствует на диске, "отъедая" часть дискового пространства, при просмотре содержимого диска штатными средствами Windows он уже не отображается в каталоге. Если удалению одних файлов сопутствует запись других, то в любом случае приходится открывать новую сессию, а каждая вновь открываемая сессия требует для своего размещения определенного пространства. Какой же тогда смысл в удалении файлов с CD-R, если объем свободного пространства на диске при этом не увеличивается, а даже уменьшается? На самом же деле смысл этой операции (если, его вообще можно назвать "смыслом") заключен исключительно в сокрытии "удаляемых" файлов от простых пользователей. Раз удаленные файлы не видны при просмотре содержимого диска штатными средствами, то неквалифицированному пользователю они формально недоступны.
Здесь уместно подчеркнуть, что "недоступны" эти файлы будут только для штатных средств операционной системы Windows. Например, компьютеры Macintosh позволяют монтировать любую сессию диска на отдельный том, благодаря чему при просмотре многосессионных дисков на Macintosh все якобы удаленные файлы сразу же "всплывают".
Аналогичным образом обстоят дела и при удалении информации с носителей CD-RW. Несмотря на теоретическую возможность физического уничтожения удаляемой информации подавляющее большинство записывающих программ поддерживают лишь функцию очистки всего диска целиком, но не могут выборочно удалять отдельные файлы. Так что все, сказанное выше о CD-R, в равной мере применимо и к CD-RW.
Записывая на диск информацию, предназначенную для передачи постороннему лицу, ни в коем случае не используйте для этой цели носители, содержащие конфиденциальные данные. "Удаление" ранее записанных на лазерный диск данных на самом деле не уничтожает их!
Просматривая содержимое лазерного диска, полученного от приятеля (купленного на радиорынке, вытащенного из мусорной корзины), можно попытаться заглянуть внутрь предыдущих сессий на предмет поиска скрытой информации. Как показывает практика, очень часто там обнаруживается много интересного. Кроме того, вам может потребоваться восстановить ошибочного удаленный файл со своего собственного диска, а то и воскресить всю затертую сессию целиком. Стоит отметить, что некоторые программы записи на CD позволяют пользователю выбирать, следует ли при создании новой сессии добавлять в нее файловую систему предыдущей. При желании в новую сессию можно включить только новые файлы. Неверный выбор настроек приводит к утрате содержимого всех предыдущих сессий. К счастью, эта утрата обратима.
Для восстановления удаленных файлов можно воспользоваться любой программой, способной извлекать содержимое выбранной сессии диска и записывать его в образ ISO. Для определенности пусть это будет Roxio Easy CD Creator. Вставьте диск, подлежащий восстановлению, в привод, выберите пункт CD Information из меню CD. На экране появится диалоговое окно CD Information (рис. 10.1).
Рис. 10.1. Анализ содержимого диска на предмет выявления удаленных файлов
Как мы и предполагали, в этом окне представлен перечень всех сессий, имеющихся на диске, с указанием номеров, стартовых адресов (в секторах) и длин (в мегабайтах). Давайте попробуем определить, имеются ли на диске скрытые файлы. Используя команду
dir
, выведем каталог диска и запомним суммарный размер всех файлов, которые только "видит" операционная система (листинг 10.1). Как следует из листинга 10.1, коварная Windows выводит содержимое одной лишь последней сессии диска. Что содержат все остальные — не известно. Во всяком случае — пока неизвестно.Листинг 10.1. Вывод содержимого диска на экран
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.Bт 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 байт свободно
Ага, совокупный объем девяти файлов, доступных для операционной системы, составляет всего 72 мегабайта (76 082 156 байт), а совокупный объем всех сессий диска —
47,66 + 6,50 + 8,21 + 8,04 + 6,91 + 10,62 + 9,04 + 9,10 + 9,22 + 9,46 == 124,76
Мбайт, что на 52 Мбайт длиннее!Поле Written sectors, содержащее длину записанной области диска и равное в данном случае 255 Мбайт, для наших целей абсолютно бесполезно, поскольку а записанную область диска входят не только полезные данные, но и служебные области каждой сессии. В результате этого полная емкость диска всегда меньше его эффективной емкости, даже если на нем нет никаких удаленных файлов.
В какой именно сессии содержатся удаленные файлы, сказать невозможно. Они могут присутствовать в любой из сессий, или даже в нескольких сессиях сразу. Поэтому в общем случае все имеющиеся сессии должны просматриваться последовательно. Однако иногда удается найти более короткие пути. Применительно к рассматриваемому нами примеру попробуем оттолкнуться от того факта, что количество имеющихся на диске сессий на единицу больше числа выведенных командой
dir
файлов. При этом размеры девяти последних сессий практически совпадают с размерами соответствующих им файлов. Первая же сессия диска, имеющая размер 48 Мбайт, не соответствует ни одному из видимых файлов. Что же она тогда содержит? Давайте смонтируем эту сессию на отдельный дисковый том и посмотрим! К сожалению, штатные средства Windows не позволяют осуществлять такое монтирование непосредственно. Поэтому приходится идти обходным путем, записывая выбранную сессию в образ ISO с последующим копированием последнего на чистый диск CD-R/CD-RW. Естественно, носители CD-RW более практичны для таких экспериментов, поскольку их можно использовать многократно. Еще более практичный и удобный подход — использование программы Alcohol 120%, способной динамически монтировать образы ISO на виртуальный CD-ROM. Это позволяет существенно экономить время. К сожалению, Alcohol 120% не предоставляет возможности выбора сохраняемых сессий и всегда помещает в создаваемый им образ содержимое всего диска целиком. Поэтому для наших экспериментов одной лишь этой программы будет недостаточно.Возвращаясь к Roxio Easy CD Creator (см. рис. 10.1), дважды щелкнем мышью по строке Session 1 или, предварительно выделив ее курсором, нажмем на кнопку Read Track. На экране немедленно появится диалоговое окно, показанное на рис. 10.2.
Рис. 10.2. Диалоговое окно извлечения сессии с настройками по умолчанию
Поле Имя файла, как и следует из его названия, задает имя образа (по умолчанию "Track"), а Тип файла — формат. Каким-либо образом "колдовать" над ним бесполезно, поскольку других форматов бесплатная версия программы все равно не поддерживает, и возможность их выбора (точнее, видимость возможности выбора) предоставляется пользователю исключительно из соображений этикета или как дань традиции.
А вот настройки из группы опций Read Data Track Settings намного более интересны. Окно редактирования Start Block содержит LBA-адрес первого сектора выбранной сессии, a Length in Blocks — длину сессии в секторах. По умолчанию сюда подставляется информация, извлеченная из TOC. При условии, что диск не был защищен от копирования посредством умышленного искажения TOC, этим данным можно верить. Однако, как мы увидим в дальнейшем, искажение TOC — это не редкость, и с ним довольно часто приходится сталкиваться на практике. Здесь следует отметить, что возможности Easy CD Creator по восстановлению треков с искаженными адресами более чем ограниченны. Эта программа слишком щепетильно проверяет "правильность" начального и конечного адресов. Если TOC говорит, что начальный адрес больше конечного, то Easy CD Creator будет свято верить TOC. Вера эта будет настолько святой, что все попытки убедить Easy CD Creator в обратном заведомо обречены на провал. По этой причине для работы с защитами лучше подыскать другую программу, более интеллектуальную.
Поле Block Size содержит размер пользовательской части сектора в байтах. Свобода выбора здесь представлена чисто символически — все равно изменить это значение вы не сможете. Да и нужно ли его изменять? Ведь "сырых" секторов Easy CD Creator все равно не поддерживает, а размер пользовательской части сектора однозначно определяется типом самого сектора, и его изменение — бессмысленно.
Короче говоря, оставив все установки в состоянии, предлагаемом по умолчанию, нажимаем кнопку Сохранить и некоторое время ждем, пока выбранная нами сессия копируется в файл ISO. Когда этот процесс завершится, сформированный образ можно записать на новый диск с помощью все той же программы Easy CD Creator. Для этого в меню File необходимо выбрать пункт Record CD from CD image, указав в поле типа файлов опцию ISO Image File. Как вариант, можно запустить Alcohol 120% и смонтировать образ на виртуальный диск.
Так или иначе, доступ к удаленным файлам будет получен и вы сможете делать с ними все, что хотите.
При просмотре содержимого "сграбленной" сессии всегда учитывайте, что файлы, физически принадлежащие другим сессиям, из данной сессии окажутся недоступными, в то время как ссылки на них здесь могут изобиловать. При обращении к реально несуществующему файлу будет выдаваться либо мусор, либо сообщение об ошибке. Как альтернативный вариант — операционная система может просто зависнуть. Если это произошло, просто нажмите кнопку выброса диска. Зависание тут же прекратится, и Windows радостно сообщит о неготовности устройства. Еще один факт, который обязательно нужно принять во внимание, состоит в том, что в силу сквозной адресации секторов каждая "сграбленная" сессия должна записываться на то же самое место диска, на котором она находилась ранее. В противном случае все ссылки на стартовые адреса файлов внутри этой сессии окажутся недействительными. Требуемый результат обычно достигается изменением стартового адреса первого трека. О том, как это сделать, рассказывается в следующем разделе данной главы, посвященном восстановлению очищенных носителей CD-RW.
Восстановление очищенных CD-RW
Существует две принципиально различных методики очистки CD-RW: быстрая (quick) и полная (full). При быстрой очистке диска с него удаляется лишь область TOC, в результате чего диск выглядит "пустым", хотя его основное содержимое остается нетронутым. Напротив, при полной очистке луч лазера "выжигает" всю поверхность диска целиком — от первого пита до последнего. Естественно, на это требуется время, и полная очистка диска может растянуться на добрый десяток минут, в то время как быстрая спокойно укладывается в одну или две минуты.
Восстановление полностью очищенных дисков возможно только на специальном оборудовании, способном улавливать даже незначительные изменения отражательной способности отражающего слоя. Такое оборудование подавляющему большинству пользователей, разумеется, недоступно. Однако диски, подвергшиеся быстрой очистке, могут быть восстановлены и на штатом рекордере (правда, не на всех моделях).
Мы не будем касаться этической стороны проблемы, и для простоты предположим, что вы хотите реанимировать свой собственный непредумышленно очищенный диск CD-RW. Отметим, что восстановление конфиденциальной информации с чужих CD-RW может быть классифицировано как получение несанкционированного доступа к последней, со всеми вытекающими отсюда последствиями.
Для опытов по восстановлению информации с очищенных дисков CD-RW нам потребуется следующее.
□Пишущий привод, не слишком дотошно следящий за корректностью содержимого TOC, поддерживающий режим RAW DAO и умеющий читать содержимое
pre-gap
первого трека. Не все модели пишущих приводов подходят для этой цели. Будьте готовы к тому, что вам придется перепробовать большое количество различного оборудования. Например, из двух моих рекордеров для восстановления очищенных дисков подходит лишь NEC, a PHILIPS на это, увы, не способен.□Продвинутое ПО для записи CD/DVD, позволяющее манипулировать служебными областями диска по своему усмотрению. Вы можете использовать Clone CD. CDRWin, Alcohol 120% или любую другую аналогичную утилиту по своему выбору. Однако весь последующий материал относится исключительно к Clone CD, и при переходе на любую другую программу вы можете столкнуться с теми или иными проблемами. Если вы не уверены, что сможете справиться с ними самостоятельно — используйте Clone CD. Затем, по мере приобретения профессиональных навыков и должного опыта, вы без труда восстановите диск любой из перечисленных выше программ.
□Средство для работы с диском на сектором уровне — утилита, позволяющая прочесть любой заданный сектор (конечно, при условии, что он вообще читается приводом) и не пытающаяся пропустить те сектора, в которых, по ее самоуверенному мнению, ничего интересного все равно нет. Копировщики защищенных дисков, перечисленные выше, для этой цели не подходят, так как отказываются читать "бесполезные" с их точки зрения сектора. Может быть, другие копировщики ведут себя и иначе — не знаю, не проверял. Вместо этого необходимую для работы утилиту я написал самостоятельно.
Прежде чем начинать экспериментировать, давайте разберемся, почему после очистки диск перестает читаться. Вопрос не так уж глуп, как кажется, — ведь информация, необходимая для позиционирования головки и поиска конкретных секторов при быстрой очистке диска, остается нетронутой! Управляющие данные "размазаны" вдоль всей спиральной дорожки, и для чтения диска на секторном уровне TOC в, общем-то, и не требуется. Да, отсутствие TOC значительно усложняет анализ геометрии диска, и для определения количества треков/сессий диска, в общем случае, привод должен прочитать весь этот диск целиком. Однако при восстановлении информации фактор времени играет второстепенную роль, и им можно полностью пренебречь.
Тем не менее, при попытке чтения любого из секторов очищенного диска привод с неизменным упорством возвращает ошибку. Почему? Очень просто — это "защита" от чтения заведомо некорректной информации. Еще ни один из всех знакомых мне приводов не мог читать сектора за пределами области
Lead-out
(собственно, на программном уровне содержимое областей Lead-in/Lead-out
тоже недоступно). Тем не менее, эта невозможность отнюдь не носит концептуального характера, и удаление из микропрограммы привода "лишних" проверок позволяет прочитать такой диск "на ура". Нет, не подумайте! Призывать вас к дизассемблированию прошивок я не собираюсь. Дело это сложное, трудоемкое, да к тому же еще и небезопасное. Неверно модифицированная прошивка может угробить привод без малейшей надежды на его восстановление. Нет, уж лучше мы пойдем другим путем!Предлагаемая мною идея восстановления информации в общих чертах сводится к записи на диск фиктивного TOC, адреса областей
Lead-in
и Lead-out
которого указывают на первый и последней сектор диска соответственно. При этом стартовый адрес первого трека точно совпадает с концом области pre-gap
, которая по стандарту должна занимать не менее 150 секторов (или 2 секунд в пересчете на абсолютные адреса). После этой нехитрой операции привод будет послушно читать оригинальное содержимое очищенного диска. Разумеется, произойдет это только при условии, что мы ухитримся настроить записывающую программу, чтобы она, после записи фиктивного TOC, никоим образом не пыталась интерпретировать подсунутые ему указатели на области Lead-in/Lead-out
как указание "выжечь" всю поверхность диска целиком.Проверка показывает, что Clone CD вообще не записывает такое оглавление на диск, сообщая о несоответствии размеров диска и образа файла. Alcohol 120% выполняет это указание без лишних препирательств, но совсем не так, как требовалось. Забив весь восстанавливаемый диск непонятно откуда взятым мусором, программа авторитетно сообщает, что в процессе записи произошли ошибки и, возможно, вам следует убедиться в исправности оборудования.
Хорошо, зайдем с другой стороны. Запишем на диск один реальный трек, занимающий минимально возможное количество секторов (по стандарту — 300, но некоторые проводы вполне удовлетворяются и меньшими значениями), но расширим его
pre-gap
с двух секунд на... весь диск! В результате мы потеряем лишь 300 последних секторов, но получим доступ ко всему остальному содержимому. Учитывая, что на диске этих секторов насчитывается немногим более 300 тысяч, нетрудно подсчитать, что процент успешно восстановленной информации составляет, по меньшей мере, 99,999% емкости всего диска. Это при том условии, что исходный диск был заполнен целиком, что на практике встречается редко. Если же это вас не удовлетворяет, то разрабатывайте свои программы, корректно записывающие фиктивное оглавление, но ничего не делающие сверх этого. В любом случае область Lead-in
записывает сам привод, ну а без Lead-out
при аккуратном обращении с диском, в принципе, можно и обойтись. Главное здесь — корректно работать с секторами, находящимися за пределами диска, иначе поведение привода станет трудно предсказуемым. Стоит, правда, отметить, что с восстановлением полностью забитых дисков я еще не сталкивался. Во всяком случае, пока.Процедура восстановления состоит из трех частей: подготовки исходного образа трека с нормальным
pre-gap
, увеличения pre-gap
до размеров целого диска и записи исправленного образа на восстанавливаемый диск. Первые два этапа достаточно выполнить всего один раз, так как полученный образ (далее мы будем называть его "лечебным") может использоваться для всех дисков. Маленькое уточнение — для всех дисков той же самой емкости, что и восстанавливаемый, ведь по понятным соображениям вы не сможете корректно восстановить 23-минутный диск с помощью образа, предназначенного для 80-минутного диска и, соответственно, наоборот.Для начала возьмем чистый диск CD-RW. Здесь понятие "чистый" не означает "ни разу не записанный". Под "чистым" диском будем понимать носитель 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
. Результаты поиска приведены в листинге 10.2.Листинг 10.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 должна выглядеть так, как показано в листинге 10.3.Листинг 10.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 вообще отказывается читать такой диск, возвращая ошибку, a PHILIPS читает сплошной мусор. К счастью, этот мусор можно восстановить, — достаточно на битовом уровне выполнить EFM-перекодировку с более "правильной" позиции. Поскольку возможных позиций всего 14, перебор обещает не затягиваться на длительное время. Тем не менее, лучше всего будет просто приобрести более качественный привод.
Остается лишь привести диск в состояние, пригодное для работы с ним, средствами операционной системы. Последовательно читая все сектора диска один за другим, мы будем собирать их в один img-файл, для определенности именуемый recover.img. Сектора, которые не удалось прочитать даже с нескольких попыток, мы будем просто пропускать. Теперь скопируем "лечебный" ccd-файл в recover.ccd и вернем стартовый адрес первого трека на прежнее место. Запишем сформированный образ на новый диск. Теперь, если все было сделано правильно, любой привод должен корректно читать созданный диск. Сеанс демонстрационного восстановления окончен, и мы, освоившись с этой технологией, можем приниматься за вещи куда более серьезные. Например, откроем собственную компанию по восстановлению очищенных дисков. Шутка! Хотя… почему бы и нет?
Хорошо, а как быть, если очищенный диск был многосессионным? Ведь описанные выше приемы рассчитаны на работу лишь с одной сессией! На самом деле можно восстановить и многосессионный диск. Это лишь чуть-чуть труднее. Но, чтобы это сделать, мы должны предварительно познакомиться с остальными полями TOC.
Постойте, а что, если после очистки диска на него что-то писалось, — возможно ли тогда его восстановление или нет? Разумеется, непосредственно затертые позиции утеряны безвозвратно, но остальную часть информации по-прежнему можно спасти. Если диск до очистки был многосессионным, то нам даже не придется возиться над восстановлением файловой системы, так как файловая система каждой последующей сессии дублирует предыдущую, за исключением удаленных файлов. Последняя сессия диска оказывается достаточно далеко от его начала, а потому и риск ее затирания — минимален (если, конечно, спохватиться вовремя, а не тогда, когда весь диск перезаписан до отказа). Восстановление односессионных дисков с затертой файловой системой — намного более трудная, но все-таки разрешимая задача. Во-первых, этих файловых систем на типовом диске целых две: ISO-9660 и Joliet. Правда, в силу их близкого географического положения при затирании диска обе они обычно гибнут. Во-вторых, указанные файловые системы не поддерживают фрагментации, и всякий файл, записанный на лазерный диск, представляет собой единый информационный блок. Все, что нужно для его восстановления, — определить точку входа и длину. Точка входа в файл всегда совпадает с началом сектора, а подавляющее большинство типов файлов позволяют однозначно идентифицировать свой заголовок по уникальной сигнатуре (в частности, для zip-файлов характерна следующая последовательность:
50 4B 03 04
). Конец файла, правда, определяется уже не так однозначно, и единственная зацепка — структура самого восстанавливаемого файла. Впрочем, большинство приложений довольно лояльно относится к "мусору" в хвосте файла, и потому точность определения его длины с погрешностью в один сектор на практике оказывается вполне достаточной. Поскольку файлы располагаются на диске вплотную, без "зазоров", конечный сектор всякого файла надежно вычисляется путем вычитания единицы из стартового сектора следующего за ним файла.Вообще же говоря, техника восстановления лазерных дисков намного проще и незатейливее искусства врачевания их прямых коллег — дискет и жестких дисков. Правда, поговорку "семь раз отмерь — один раз отрежь" еще никто не отменял, и одна из неприятнейших особенностей работы с CD-RW как раз и состоит в том, что вы не можете гарантированно управлять процессом происходящей записи. Дискеты и жесткие диски в этом смысле полностью прозрачны, — что вы пишете, то вы и получаете. Перезаписываемые же носители, напротив, представляют собой "черный ящик", и вы никогда не можете быть уверенными в том, что конкретный привод будет правильно интерпретировать отдаваемые ему команды (увы, восстановление дисков CD-RW никак не вписывается в рамки Стандарта, а все нестандартные махинации могут интерпретироваться приводом неоднозначно). Единственное, что остается посоветовать: не пускайте все на самотек. Бесконечно экспериментируйте, экспериментируйте и еще раз экспериментируйте, накапливая бесценный опыт, который вам когда-нибудь может очень пригодиться.
Искажение размеров файлов
Еще (или, скорее уже) во времена монохромных терминалов и первых магнитных дисков существовал некрасивый, но элементарно реализуемый защитный прием, препятствующий пофайловому копированию носителя. Внося определенные искажения в структуры файлов системы, разработчики "портили" дискету ровно настолько, чтобы работа с ней становилась возможной лишь при условии учета характера внесенных искажений. Защищенная программа, "знающая" об искажениях файловой структуры, работала с ней без проблем, но штатные утилиты операционной системы работать с такими дисками не могли. Общедоступных "хакерских" средств копирования в те времена еще не существовало.
Несколько файлов зачастую ссылались на общие для всех них кластеры, и тогда запись данных в один файл приводила к немедленному их появлению в другом, что защита могла так или иначе использовать. Естественно, после копирования файлов на новый диск пересекающиеся кластеры "разыменовывались", и хитрый способ неявной пересылки данных переставал работать. Вместе с ним переставала работать и сама защищенная программа, если, конечно, содержимое диска вообще удавалось скопировать. Ведь копирование файлов с пересекающимися кластерами приводило к тому, что эти кластеры многократно дублировались в каждом копируемом файле, в результате чего их суммарный объем подчас увеличивался настолько, что емкости тогдашних носителей попросту не хватало для хранения таких объемов данных! Если же последний кластер файла "приклеивался" к его началу (файл, таким образом, попросту зацикливался), то объем и время его копирования попросту обращались в бесконечность. Конечно, дисковые доктора в то время уже существовали, но их использование не давало желаемого результата, потому что лечение файловой системы приводило к полной неработоспособности защиты. В случае с зацикливанием, например, если защита основывалась на том, что за концом файла следует его начало, то после обработки диска доктором осуществление этого приема становилось невозможным со всеми от сюда вытекающими последствиями.
Файловые системы лазерных дисков, конечно, совсем не те, что на гибких дисках, но общие принципы их искажений достаточно схожи. Увеличивая фиктивные длины защищаемых файлов на порядок-другой, разработчик защиты может довести их суммарный объем до нескольких сотен гигабайт, так что для копирования защищенного диска понадобится, по меньшей мере, пачка DVD или винчестер солидного объема. Защитный механизм, "помнящий" оригинальные длины всех файлов, сможет работать с ними без проблем, но все средства копирования файлов не поймут этого юмора, и их поведение станет неадекватным.
В принципе, выход за границы файла ничем не чреват. Файловые системы лазерных дисков очень просты. Лазерные диски не поддерживают фрагментацию файлов, а потому и не нуждаются в FAT. Все файлы занимают непрерывный ряд секторов, и с каждым файлом связано только две важнейшие характеристики: номер первого сектора файла, заданный в формате LBA (Logical block address), и его длина, заданная в байтах. Остальные атрибуты, вроде имени файла и времени его создания — не в счет, мы сейчас говорим исключительно о секторах.
Увеличение длины файла приводит к "захвату" того или иного количества примыкающих к его хвосту секторов, и при условии, что номер последнего сектора, принадлежащего файлу, не превышает номера последнего сектора диска, копирование файла, в принципе, протекает нормально. Я не случайно заметил, что "в принципе нормально", а не просто "нормально", так как в копируемый файл будут включены все файлы, встретившиеся на его пути. Если же в процессе своего копирования файл "выскакивает" за конец диска, то привод CD-ROM сигнализирует об ошибке и прекращает чтение. Штатные средства копирования, входящие в состав операционной системы, равно как и большинство оболочек сторонних производителей, автоматически удаляют "огрызок" недокопированного файла с диска, и в результате пользователь остается ни с чем.
Утилита IS09660.DIR.EXE выгодно отличается тем, что позволяет копировать не только весь файл целиком, но и любую его часть! Но как мы узнаем, сколько именно байт следует скопировать? Как определим, где идут полезные данные, а где начинается "послехвостовой" мусор (over-end garbage)? Будем исходить из того, что по Стандарту файлы на диске располагаются последовательно, т. е. за последним сектором одного файла, непосредственно следует стартовый сектор следующего. Поскольку стартовые сектора всех файлов нам известны, определение истинных длин всех файлов за исключением последнего, не составит никакого труда! Так как длина одного сектора лазерного диска составляет 2048 байт, истинный размер всякого файла равен:
(стартовый адрес следующего файла — стартовый адрес самого этого файла) * 2048
. Все просто, не правда ли?С помощью утилиты IS09660.DIR.EXE мне и моим друзьям удалось скопировать большое количество дисков с MP3, обладающих защитой данного типа.
Звездная сила обращается в пыль
На нас надвигается тьма! Защита Star-Force наступает по всем направлениям, и новые игры уже не копируются. Защита выглядит неприступной, как скала, и за ней уже закрепилась слава несокрушимой. На самом деле ситуация не так мрачна. Кроме столбовой дороги есть и обходные пути, никем не охраняемые. Воспользуемся одним из них.
Что такое Star-Force
Star-Force (рис. 10.3) — это семейство защит от копирования, привязывающихся к физической структуре спиральной дорожки. Оно оснащено термоядерным ракетным комплексом противохакерских средств типа "земля — пользователь". Вместо простейшей проверки по схеме "свой — чужой", которую можно запросто нейтрализовать заменой одной инструкции
jmp
, Star-Force преобразует топологические характеристики диска в число, используемое для расшифровки основного тела программы, причем специальные защитные компоненты следят за тем, чтобы после расшифровки никто не снял дамп.Рис. 10.3. Логотип Star-Force, по которому эту защиту легко отличить от любой другой
Часть защитного кода сосредоточенна в многомегабайтной библиотеке protect.dll, часть — в драйверах, а часть — скомпилирована в p-код, выполняемый на собственном интерпретаторе. Помимо этого, защита реализует множество антиотладочных приемов, препятствующих как изучению защитного кода, так и эмуляции оригинального диска.
Защита не стоит на месте, а напротив, активно совершенствуется. С каждой новой версией разработчики все туже и туже "затягивают гайки", да так, что резьба уже начинает сдавать. Последние версии "Звездной Силы" очень глубоко вклиниваются в Windows и даже модифицируют ее ядро, в результате чего система начинает работать нестабильно. У одних пропадают данные, у других система регулярно демонстрирует BSOD, у третьих после установки очередного обновления от Microsoft лицензионные игры внезапно отказывают в работе, требуя установки обновления от Star-Force (http://www.star-force.ru/support/sfdrvup.zip), а у кого-то защищенные диски вообще не опознаются. Разработчики, естественно, списывают все это на низкую квалификацию пользователей, которые не ведают, что творят. Хотя мое мнение и не обязательно однозначно правильно, но мне есть, что на это возразить. Никто не спорит, что Windows может упасть и сама. Тут посторонней помощи не надо. Но вот то, что вытворяет команда разработчиков Star-Force — это не просто "аморально" или "нехорошо". Ведь кроме закона о защите авторских прав, есть и закон о защите прав потребителя! Вмешиваться в работу операционной системы на компьютере пользователя, да так, чтобы защитная программа портила пользовательские данные — незаконно! Более того, требовать, чтобы при наличии привода IDE защищенный диск запускался именно с него (a Star-Force это требует) — незаконно с любой точки зрения. Если программа умышленно отказывается работать на определенных конфигурациях, и легальные пользователи никак не проинформированы об этом факте, то перед нами, как минимум, грубая конструктивная недоработка, а как максимум — злостная закладка.
В западном мире защиты от копирования вообще мало популярны. Обычно используется серийный номер или прочие надежно работающие, хотя и легко ломаемые алгоритмы. А все потому, что лучше терпеть убытки от пиратства, чем держать специальную службу поддержки, отвечающую на звонки разгневанных пользователей, требующих или немедленно сделать что-нибудь, или вернуть деньги. И не важно, что это — аппаратная несовместимость, дефект защиты или ошибка покупателя. Клиент всегда прав! Поэтому серьезные продукты "Звездной Силой" защищать никогда не будут и никуда дальше игр она не уйдет.
Как это работает
Привязка к диску основана на измерении угла между секторами. Похожая техника использовалась еще во времена 8-битных компьютеров и дискет. Аналогичным образом работают CD-Cops, SecureROM и многие другие защитные механизмы, так что назвать идею Star-Force "революционной" очень трудно. Но это не помешало разработчикам запатентовать ее, или, по крайней мере, объявить, что она запатентована. Впрочем, не будем углубляться в юридические тонкости, а лучше перейдем к техническим деталям.
Спиральная дорожка лазерных дисков очень похожа на грампластинку, только начинается не снаружи, а изнутри, и разворачивается от центра к краю. Лазерная головка, удерживаемая в магнитном поле (примерно так же, как удерживается звуковая катушка в акустических системах), движется на салазках поперек спиральной дорожки. Сама дорожка состоит из секторов с данными и каналов подкода. Номера секторов находятся как в заголовках самих секторов, так и в каналах подкода, "размазанных" вдоль спиральной дорожки. Для грубой наводки на требуемый сектор используются салазки и каналы подкода, а для точной — отклонение в магнитном поле и секторные заголовки.
Просто взять и измерить структуру спиральной дорожки нельзя, но можно использовать следующий подход (рис. 10.4). Допустим, головка считывает сектор X, а следом за ним сектор Y. Если угол XOY, образованный центром (О) диска и секторами X и Y, составляет примерно 15 градусов, а сами сектора расположены в соседних витках спиральной дорожки, то приводу будет достаточно всего лишь немного отклонить головку и через мгновение сектор Y сразу же окажется у оптической головки. Если же угол составляет менее 15 градусов, то за время перемещения головки сектор Y уже "уплывет", и приводу придется ждать целый оборот лазерного диска.
Рис. 10.4. Когда угол между секторами X и Y составляет -15 градусов, при переходе на соседний виток сектор Y сразу же "подлетает" к оптической головке (рисунок слева), при меньшем значении угла сектор Y успевает "уплыть" и головка вынуждена ждать целый виток (рисунок справа)
Таким образом, замеряя время чтения различных пар секторов, мы можем приблизительно определить их взаимное расположение на спиральной дорожке. У каждой партии дисков оно будет своим (ведь плотность секторов на 1 мм и крутизна спирали неодинакова, и варьируется от партии к партии). Чтобы побороть упреждающее считывание, которым "страдают" многие приводы, защита должна читать сектора в порядке убывания их номеров. Кроме того, защита должна измерять скорость вращения привода, чтобы определить постоянство временных замеров и скорректировать формулу для вычисления угла, ведь, как легко показать, чем быстрее вращается диск, тем скорее "уплывает" сектор.
Именно так Star-Force и поступает. Ниже приведен протокол работы защиты, перехваченный программой BusHound (рис. 10.5). При этом использовался накопитель SCSI, поскольку с IDE защита работает напрямую, и программный перехват уже не спасает.
Рис. 10.5. BusHound за работой
Сначала защита выполняет профилировку поверхности, определяя время одного оборота и оценивая величину разброса, на основании которого будет рассчитываться допуск на отклонение ключевых характеристик. Результаты профилировки спиральной дорожки представлены в листинге 10.4. Обратите внимание на то, что все номера секторов представлены в шестнадцатеричном формате.
Листинг 10.4. Профилировка спиральной дорожки (все номера секторов представлены в шестнадцатеричном формате)
049634 292ms
04961f 192ms
04960a 8.5ms
0495f5 8.3ms
0495e0 8.5ms
0495cb 8.5ms
0495b6 8.5ms
0495a1 8.5ms
04958c 8.5ms
049577 8.5ms
049562 8.5ms
04954d 8.5ms
049538 8.5ms
049523 8.5ms
04950e 8.7ms
... ...
048e7e 8.1ms
048e69 8.2ms
048e54 8.2ms
048e3f 8.2ms
048e2a 8.2ms
048e15 8.2ms
048e00 8.2ms
Как видно, каждый последующий номер на
15h
меньше предыдущего (приблизительно столько секторов и содержится на данном витке спирали), а время чтения сектора колеблется от 8,1 до 8,7 миллисекунд.Затем защита делает некоторые несущественные операции (т.е. очень даже существенные, но не суть важные) и приступает к измерению углов. Протокол измерений углов между секторами оригинального диска показан в листинге 10.5.
Листинг 10.5. Измерения угла между секторами (оригинальный диск)
051dfe 25ms
051dfa 7.3ms
051df5 6.6ms
051dee 6.2ms
051de6 5.5ms
051ddd 5.2ms
051dd2 12ms
051dc6 12ms
051db9 11ms
051daa 11ms
051d9a 10ms
051d89 10ms
051d76 9.9ms
051d62 9.1ms
051d4c 8.8ms
051d35 8.0ms
Сразу бросается в глаза тот факт, что шаг убывания между секторами не остается постоянным, а плавно растет. Это означает, что защита перебирает различные комбинации X и Y, засекая в какой момент происходит "перескок" сектора, вынуждающий ждать целый оборот. В данном случае он расположен между секторами
051ddd
и 051dd2
. Время доступа скачкообразно увеличивается с 5,2 мс до 12 мс, т.е. больше чем в два раза!А теперь посмотрим, как выглядит протокол обмена с копией (см. листинг 10.6).
Листинг 10.6. Измерение угла между секторами (копия)
051dfe 29ms
051dfa 7.3ms
051df5 6.6ms
051dee 6.2ms
051de6 5.5ms
051ddd 5.1ms
051dd2 4.7ms
051dc6 12ms
051db9 11ms
051daa 11ms
051d9a 10ms
051d89 10ms
051d76 9.9ms
051d62 9.2ms
051d4c 8.8ms
051d35 8.0ms
Ha первый взгляд может показаться, что все осталось по-прежнему. Однако, присмотревшись внимательнее, можно заметить, что перескок происходит не между секторами
051ddd
и 051dd2
, как раньше, а между секторами 051dd2
и 051dc6
, т.е. на один шаг позже. Вот это-то и отличает скопированный диск от его оригинала!Как это ломают
Скопировать физическую структуру спиральной дорожки нельзя. Во всяком случае, пока. Но кое-какие шаги в этом направлении уже сделаны. На рынке появились приводы с переменной плотностью записи, например, Plextor Premium; правда, поддержки со стороны программного обеспечения для копирования дисков пока еще нет. Мне удалось создать экспериментальный копировщик, имитирующий структуру оригинальной дорожки путем переупорядочивания секторных номеров, однако до законченного продукта он так и не был доведен. Имеются и другие идеи, однако в долговременной перспективе все они нежизнеспособны и разработчики Star-Force их легко обойдут.
Перед проверкой ключевых характеристик спиральной дорожки защита выполняет профилировку привода, чтобы оценить стабильность всех временных характеристик. Чем качественнее привод, тем жестче проверка и, соответственно, наоборот. На разболтанных приводах защита вынуждена "снижать планку", иначе даже лицензионный диск опознается как поддельный, а вот этого уже допускать нельзя. Отсюда вывод — копируем диск на скверную болванку и запускаем ее на разболтанном приводе. Кстати, на некоторых приводах можно даже специально расстроить автоматический регулятор скоростей, за это отвечает специальный подстроечный резистор. Существует некоторый шанс, что скопированный диск опознается как оригинальный. Если же ничего не получится, необходимо повторить фокус на другой партии болванок от другого производителя. Достаточно многие пользователи сообщают, что им удавалось скопировать защищенные диски на CD-RW. За счет невысокой отражательной способности перезаписываемые носители читаются гораздо хуже и, естественно, не так стабильно. Также полезно использовать приводы, которые не позволяют себя "тормозить" с помощью утилит наподобие CDSlow. Если при профилировке диска разброс замеров превышает некоторую величину, Star-Force пытается перевести привод на более низкую скорость.
По моему опыту, для гарантированного копирования диска на CD-R нужно затратить не менее 10 болванок от различных производителей с различной геометрией спиральной дорожки, для измерения которой можно использовать мою утилиту, которую можно найти на прилагаемом к этой книге CD. Конечно, 10 болванок — это много, но лицензионная копия обойдется ничуть не дешевле, а даже дороже. Как правило, квалифицированный хакер может "отвязать" игру от CD самое большее за день (при условии, что он уже знаком со Star-Force), однако универсальный взломщик еще никто не написал, поэтому с каждой программой приходится воевать индивидуально.
Действовать можно так. Запускаем программу Alcohol 120% (рис. 10.6) и создаем образ диска, в типе данных выбрав опции Star-Force 1.x/2.x/3.x или Securom *NEW (V4.x). При этом автоматически устанавливается флажок Измерение позиционирования данных (Точность: высокая). Опция Чтение субканальных данных с текущего диска должна быть сброшена, положение всех остальных — некритично (на некачественных дисках опция Быстрый пропуск ошибочных блоков иногда приводит к проблемам). Скорость измерения позиционирования обычно рекомендуется ставить на минимум, и в течение всей операции не выполнять на компьютере никаких других работ. Возможно, на этом этапе вам придется поэкспериментировать. Например, мой привод TEAC-52x нормально измеряет геометрию спиральной дорожки (также называемую топологией) при 52x, а вот при снижении скорости начинает вести себя непредсказуемо.
Рис. 10.6. Настойка программы Alcohol 120%
Снятый образ не может быть непосредственно записан на новый диск. Он предназначен специально для эмулятора. Одни предпочитают использовать эмулятор, встроенный в программу Alcohol 120%, другие же выбирают Daemon Tools. Для использования встроенного эмулятора в Alcohol 120% достаточно выбрать из меню команды Настойки|Виртуальный диск, указать любое разумное количество виртуальных дисков, отличное от нуля, и, при желании, установить опцию Перемонтировать образы при перезагрузке системы, чтобы они монтировались автоматически.
Древние версии Star-Force доверчиво работали с виртуальным образом, принимая его за подлинный, но затем все изменилось. Если в системе есть хотя бы один IDE-привод, защита требует вставить лицензионный диск именно в IDE. Да! Даже если остальные диски — вполне законные накопители SCSI. Разумеется, можно просто отключить шлейф IDE от привода CD-ROM (или обесточить его), после чего виртуальный образ будет работать, как ни в чем не бывало. Естественно, все эти манипуляции должны проводиться при выключенном компьютере. Исключение составляют приводы, поддерживающие "горячую замену" (hot unplug). Как вариант, можно приобрести SCSI. USB или LPT CD-ROM. Наконец, можно воспользоваться программами типа Star-Force Nightmare, выключающими каналы IDE-каналы "на лету", однако новые версии Star-Force уже научились бороться с ними.
Что делать, если снятый образ не работает? Первым делом необходимо удостовериться, что образ снят правильно. Запускаем программу AdvancedMDSEditor.exe, открываем файл образа и смотрим — если форма кривой, характеризующей скорость чтения спиральной дорожки, имеет "выбросы" или дрожит (рис. 10.7), то снятый образ никуда не годится. В этом случае необходимо выбрать другую скорость и повторить операцию еще раз, или просто "сгладить" кривую, нажав кнопку Linear Interpolation или, что еще лучше, — Spline Graph, добившись максимальной "гладкости" кривой (рис. 10.8).
Рис. 10.7. Исходный график имеет выбросы, поэтому скопированный диск не опознается
Рис. 10.8. Сглаженный график после обработки —скопированный диск запускается нормально
Но и это еще не все! Новые версии Star-Force блокируют работу файловой системы на время проверки ключевого диска и следят, чтобы с жесткого диска не читались защищаемые данные. Что тут можно предпринять? Поскольку блокировка файловой системы осуществляется посредством SFC (возможно, не во всех версиях Star-Force), то, отключив SFC, мы вырвемся на свободу. Запускаем редактор реестра, находим ключ
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
и меняем значение параметра SfcDisable
на dword:ffffff9d
, а затем перезагружаемся. Чтобы включить SFC, достаточно восстановить исходное значение параметра (0).Однако отключать SFC на продолжительное время нежелательно. Функция это полезная, позволяющая защитить компьютер от вирусов и червей. К тому же, этот прием работает не со всеми версиями Star-Force. Обладатели приводов DVD на шине SCSI могут запускать образ оттуда. Защита не распознает подмены, и эмулятор работает на ура. На CD-R/RW записать полный образ нельзя, поскольку информация о структуре спиральной дорожки, содержащаяся в файле mds, отнимает примерно 27 Мбайт свободного места и на обычный диск влезает только с пережигом, да и то не всегда.
Хакеры ответили на это безобразие методом "обрезков". Все очень просто. Проверяя структуру спиральной дорожки, защита не проверяет (точнее, не проверяла) ее содержимое. Запустим Alcohol 120% и дождемся, когда "измерение DPM" подойдет к концу. Когда начнется сброс дампа, дадим программе поработать несколько секунд (чтобы успел считаться корневой каталог и некоторые другие служебные структуры, без которых Windows не сможет опознать диск), а затем нажмем кнопку Отмена. Alcohol 120% запросит подтверждения на удаление файлов. На этот запрос следует ответить отрицательно. Затем запускаем Nero Burning ROM и записываем оставшиеся от Alcohol 120% файлы с расширениями mdf и mds на CD как обычные файлы. Вставляем записанный диск в SCSI или USB CD-ROM, подключаем эмулятор и наслаждаемся игрой, причем игру в этом случае придется запускать с винчестера.
К сожалению, в новых версиях этот трюк уже не работает. Теперь защита помимо структуры спиральной дорожки проверяет и ее содержимое. Так что ждем новых версией эмуляторов. Разработчики Daemon Tools обещают вот-вот выпустить четвертую версию, главной "вкусностью" которой станет обход Star-Force без всех этих шаманских танцев с образами и приводами. Пока же приходится использовать хакнутые драйвера для Star-Force, из которых вырезана блокировка файловой системы, благодаря чему полноценный образ (не обрезок!) можно запускать с винчестера. Где их взять? Хороший вопрос. Они постоянно меняют свои адреса, и дать постоянную ссылку довольно затруднительно. Поисковики также не помогают, поскольку к тому моменту, когда они проиндексируют хакерскую страничку, она уже успевает умереть. А вот форумы — это самое то! Если нет хакнутых драйверов, можно запустить снятый образ по сети. Эмулятор его увидит, а вот защита — нет. Разумеется, локальная сеть есть далеко не у всех, а приобретать второй компьютер решится далеко не каждый.
Впрочем, дела обстоят не так уж и мрачно. В ходу до сих пор остается множество старых версий защиты, и Alcohol 120% с ними успешно справляется. Кстати говоря, при установке обновлений на игру вместе с самой игрой зачастую обновляется и защита, поэтому прибегать к обновлениям следует лишь тогда, когда они действительно необходимы. К тому же, с эмуляторами борется только Star-Force Professional. Многие фирмы предпочитают Star- Force Basic Edition, так как она надежнее и дешевле. На сайте разработчиков приводится сводная таблица, сравнивающая защиты друг с другом (http://www.star-force.ru/protection/protection.phtml?c=113), которую полезно изучить перед тем, как кричать на весь мир "я Star-Force сломал!" Basic Edition, действительно, ломается элементарно, а вот над Professional приходится проделывать все вышеописанные "танцы с бубнами".
После экспериментов со Star-Force хотелось бы начисто удалить ее из системы, чтобы исключить всевозможные неполадки и конфликты. Теоретически это должен сделать разработчик деинсталлятора игрушки, практически же "зачисткой" операционной территории приходится заниматься самостоятельно. Предвидя праведный гнев пользователей, разработчики Star-Force выпустили специальную утилиту, которая все делает сама, и отдали ее на всеобщее растерзание. Качайте! http://www.star-force.ru/support/sfdrvrem.zip.
Существует (по крайней мере, теоретически) весьма элегантный метод взлома, основанный на генерации ключей. Действительно, Star-Force "оцифровывает" особенности структуры спиральной дорожки, генерирует знако-цифровую последовательность и сравнивает результат с введенным ключом. Естественно, это упрощенная схема, и вместо простого сравнения используется шифрование. Но суть остается прежней — если восстановить алгоритм генерации ключей, то для скопированного диска можно будет вычислить свой ключ, который будет воспринят как правильный. Программы, защищенные по KeyLess-технологии, не запрашивают ключа, и он хранится на диске в Data Preparer Identifier в Primary Volume Descriptor, где легко может быть изменен. Ковырнув Star-Force, я установил, что разобраться с алгоритмом генерации вполне реально. Однако в новых версиях он наверняка изменится, и тогда весь труд пойдет насмарку. Кстати говоря, в сети уже появилось множество предложений об услугах подобного рода. Причем за деньги, что сразу настораживает. И не зря! Все это сплошное мошенничество. Рабочего генератора пока нет ни у кого!
Star-Force как троянский компонент
Одно из лучших определений вирусов гласит, что вирус (троянец) — это такая программа, которая тайно от пользователя выполняет те действия, о которых он не подозревает, в которых не нуждается и которые, напротив, хотел бы запретить. То, что Star-Force пакостит в системе, всем известно. Практически любая программа делает то же самое (так говорят разработчики Star- Force), но никому бы и в голову не пришло оставлять в системе дыру таких размеров.
Для укрепления противохакерской обороны часть защитного кода выполняется в нулевом кольце, что достигается открытием устройства
\\.\PRODRV06
, заботливо установленного драйвером Star-Force. Для этого даже не нужно администраторских прав. Любой посторонний код может проникнуть в RING0
, не спрашивая нашего разрешения! Чуть позже эту дыру залатали (правда, я не проверял, насколько надежно), однако уже сам факт говорит о многом. Если нашли одну дыру — найдут и другие. Поодиночке дыры никогда не ходят!HASP, extreme protector и другие защиты также используют переход на нулевое кольцо, но при этом ухитряются обходиться без дыр и голубых экранов. Так что подходить к защите надо с головой, а не одним лишь желанием досадить хакерам.
Так все же взломана Star-Force или нет?
Создать пиратскую копию защищенного диска вполне реально, но при этом придется возиться с эмуляторами, переключать шлейфы, переходить на накопители SCSI и проделывать еще массу других манипуляций, противоестественных для рядового пользователя.
"Отвязать" Star-Force от диска вручную вполне реально, и все популярные игры уже давно отвязаны, так что говорить о безальтернативном переходе на лицензионную продукцию слишком рано. Легендарная "неломаемость" Star-Force относится именно к автоматическому копированию дисков с помощью специализированных утилит. Появление таких средств ожидается в ближайшем будущем. Разработчики Daemon Tools и Alcohol 120% не дремлют, но ведь и разработчики Star-Force тоже на месте не стоят! Иными словами, перед нами разворачивается целое представление в стиле "противостояние щита и меча". Каждый из нас сам выбирает "свою" сторону баррикады. Но если присоединиться к хакерскому племени может каждый, то принять участие в разработке защиты — едва ли. Ведь это закрытый клуб, со своими законами и бизнес-машиной внутри.
Ссылки по теме
□http://www.star-force.ru — официальный сайт разработчиков защиты Star-Force.
□http://www.gamecopyworld.com — огромная коллекция взломанных игр с инструкциями по копированию (игры преимущественно английские).
□http://help.star-force.ru — большая коллекция русских игр, когда-то защищенных Star-Force.
□http://cdru.nightmail.ru — образы некоторых защищенных дисков, пригодные для эмуляции. Там же можно найти описание принципа работы Star-Force и методы копирования дисков, защищенных от копирования с помощью Star-Force.
□http://www.alcohol-soft.com — Alcohol 120%, лучший копировщик всех времен и народов, частично справляющийся и со Star-Force.
□http://cdru.nightmail.ru/cdru/ssilki/progs/mdsedit/AdvancedMDSEdit055.rar — Advanced MDS Editor, редактор образов для Alcohol 120% с возможностью сглаживания образов.
□http://www.daemon-tools.cc — Daemon Tools, эмулятор для работы с образами, созданными Alcohol 120%, намного более компактен и, в отличие от Alcohol 120%, совершенно бесплатен.
□http://www.project-starfuck.tk — Star-Fuck, программа для отключения накопителей IDE "на лету".
□ Форумы, посвященные взлому Star-Force:
• http://www.wasm.ru/forum/index.php?action=vthread&forum=5&topic=5457
• http://cracklab.ru/f/index.php?action=vthread&forum=1&topic=2060
• http://forum.ru-board.com/topic.cgi?forum=55&topic=0519&start=0
• http://www.amit.ru/foruma/showmes.asp?cust_id=1318&PageNo=&page=1
UDF — расплата за бездумность
Как-то раз, когда записывающие приводы только-только входили в моду, робко осваивая необъятные просторы российского рынка, в одной компьютерной фирме раздался звонок взбешенного покупателя. Состоялся следующий диалог:
Покупатель: "Мужики! Что за дела?! Какого черта вы мне подсунули неработающий рекордер!"
Продавец: "А какую программу вы используйте для записи?"
Покупатель: "Нортон, естественно, и нечего держать меня за дурака!"
Сейчас этот анекдот уже не вызывает улыбки. Современные оптические носители поумнели настолько, что запись можно вести любыми средствами, хоть из Проводника Windows, хоть из FAR, хоть из того же Нортона. Однако это удобство обходится высокой ценой — снижением надежности, уменьшением емкости, замедлением работы операционной системы и прочими неприятностями.
Как же непросто начинающему пользователю разобраться со всей этой кухней! Информация, почерпнутая с форумов, достаточно противоречива, а технические спецификации слишком сложны. Как быть? Что делать?
Механизм "прозрачной" записи на CD/DVD, прочно ассоциирующийся у большинства с торговой маркой DirectCD, базируется на двух взаимодополняющих технологиях: пакетной записи (packet writing) и динамической файловой системе (dynamic file system), роль которой, как правило, играет UDF (Universal Disk Format — универсальный дисковый формат). Эти два понятия очень часто путают, хотя они стоят на разных ступенях иерархии.
Пакетная запись — это режим прожига, аппаратно поддерживаемый приводом. Помимо него существуют и другие режимы: SAO (Session At Once — сессия за раз), DAO (Disk At Once — диск за раз) и TAO (Track At Once — трек за раз). Не вдаваясь в технические подробности, отметим, что режим определяет размер порции данных, записываемых рекордером за один раз (т.е. без остановки лазера).
Самый "расточительный" из всех режимов, DAO, выжигает весь образ диска целиком от первого до последнего сектора и не допускает "дозаписи". Более экономичный режим SAO позволяет дописывать диск многократно, по одной сессии за раз, но при этом каждая сессия занимает, по меньшей мере, 15 Мбайт дискового пространства, что ощутимо бьет по карману. Потрековый режим TAO, "съедающий" всего лишь 300 Кбайт служебных данных на каждый трек, к сожалению, применим лишь к аудиодискам, так как ни одной существующей файловой системой он не поддерживается. К тому же, все три режима не позволяют стирать ранее записанные данные, поскольку они проектировались исключительно для однократно записываемых дисков CD-R. В лучшем случае обеспечивается лишь имитация стирания, осуществляемая путем удаления ссылок из каталога. При этом сами данные физически остаются нетронутыми, да и свободного места не прибавляется.
Всех этих недостатков лишен пакетный режим, сокращающий "аппетит" бюрократического аппарата до 14 Кбайт на пакет. При этом сама запись ведется блоками постоянного или переменного размера от 2 Кбайт до 2 Мбайт. Предельно допустимый размер пакетов определяется конструктивными особенностями привода и варьируется от одной модели к другой. Однако этот размер должен составлять не менее 64 Кбайт, иначе это будет неправильный привод, идущий в разрез со стандартом. Пакеты последовательно заполняют диск, двигаясь от его внешней кромки к центру. Спиральная дорожка должна быть непрерывна на всем своем протяжении. Природа оптических дисков такова, что информация "размазывается" вдоль спиральной дорожки, перемешивая биты различных секторов, что обеспечивает лучшую восстанавливающую способность в борьбе с радиальными царапинами и локальными дефектами, поэтому записать один-единственный сектор за раз невозможно в принципе! Нельзя записать пакет в середину диска, оставив за собой хотя бы один непрожженный сектор (рис. 10.9), но ранее записанные пакеты могут перезаписываться многократно, за счет чего, собственно говоря, и обеспечивается возможность удаления файлов.
Рис. 10.9. Примеры инкрементной записи
Одного лишь механизма пакетной записи для осуществления задуманного явно недостаточно, и к нему еще требуется подобрать адекватную файловую систему. Стандартные файловые системы ISO-9660 и Joliet, разработанные специально для CD-ROM и ничего не знающие о фрагментации, при размещении файла на диске ожидают увидеть непрерывный блок свободного дискового пространства, который обнаруживается далеко не всегда.
Файловая система UDF — детище Optical Storage Technology Association — проектировалась с оглядкой на DVD и была далека от мыслей о мировом господстве. Однако разработка оказалась настолько удачной, что ее без труда удалось приспособить и к носителям CD-RW, с учетом всех особенностей их строения. UDF оперирует не с физической, а с логической разметкой диска, и поэтому ей все равно на каком носителе располагаться.
Таким образом, диск, записанный в формате UDF, не обязательно должен быть записан в пакетном режиме, равно как и наоборот — не всякий пакетный режим пользуется услугами файловой системы UDF. Возможность выборочной записи/удаления отдельных файлов на аппаратном уровне обеспечивается режимом пакетной записи, а на программном — специальной драйверной оснасткой. UDF лишь сокращает накладные расходы до разумного минимума, но не более того!
Существует несколько спецификацией UDF, самыми устойчивыми из которых являются четыре следующих релиза:
□ 1.02 описывает размещение данных (в том числе и видео) на DVD-ROM, поддерживает фрагментацию и ряд других полезных возможностей;
□ 1.50 включает менеджер управления дефектами, препятствующий размещению данных на некачественных участках носителя, добавлена работа с CD-RW/CD-R;
□ 2.00 поддерживает потоковые файлы, списки управления доступом, калибровку лазера и прочие второстепенные функции;
□ 2.01 поддерживает файлы реального времени, гарантирующие сохранение заданной скорости считывания на всем протяжении диска.
Windows 98 поддерживает UDF 1.02, Windows 2000 — 1.01, a Windows XP — 1.02, 1.50 и 2.01. Для работы с остальными операционными системами требуется установка соответствующего драйвера, точнее даже драйверов, так как последующие спецификации не включают в свой состав предыдущие. Что же касается Linux-подобных операционных систем, то здесь поддержка UDF представляет собой одну большую проблему, зачастую требующую не только установки специального драйвера, но и обновления ядра!
Компоненты, необходимые для работы с UDF
Для полноценной работы с дисками, размеченными в формате UDF, нам необходимо иметь:
□ рекордер, поддерживающий режим пакетной записи, причем поддерживающий его не кое-как (ради "галочки" в прайс-листе), а спроектированный и реализованный с учетом всей жесткости требований пакетного режима. Обычно тестовые лаборатории различных журналов приводят более или менее полную информацию о характере наиболее ходовых приводов, так что выбрать приличную модель не составит никакого труда;
□ драйвер UDF, переводящий язык служебных структур UDF на язык операционной системы (UDF-reader);
□ монитор UDF, перехватывающий все обращения с CD, а также обеспечивающий прозрачную запись и форматирование диска. Монитор обычно представляет собой иерархию драйверов, в которой можно выделить, по меньшей мере, два уровня — драйверы абстракции от конструктивных особенностей конкретного оборудования и драйверы, относящиеся непосредственно к самой операционной системе. Добавьте сюда еще программу-индикатор, отображающую состояние привода, и вы получите настоящий "коктейль" драйверов;
□ если вы не планируете "прожигать" диски из FAR Manager, но хотите использовать режим пакетной записи для минимизации накладных расходов прожигателя, без UDF-монитора можно и обойтись, заменив его автономной программой записи, например, Ahead Nero.
Первый опыт лучше всего приобретать, купив коробочный (retail) привод, в комплект поставки которого входит все необходимое программное обеспечение, автоматически устанавливаемое инсталлятором. В противном случае проблем совместимости вам не избежать.
Проследите за тем, чтобы программа пакетной записи (а точнее — ее системный драйвер) поддерживала последнюю ревизию UDF. Большинство вполне современных рекордеров, выпускаемых солидными фирмами, комплектуется программным обеспечением, поддерживающим только UDF v1.5, но не выше (эта информация содержится в спецификации на программное обеспечение выбранного вами привода, которую можно свободно найти в Интернете). Конечно, старую версию можно всегда обновить (например, через Интернет), но и тут не все так просто. Во-первых, далеко не всегда такое обновление бывает бесплатным, а, во-вторых, вероятность возникновения проблем при этом возрастает. Задумайтесь — если бы процедура обновления действительно была бы такой простой, то почему сами производители не сделали это? Ответ — они не хотят менять апробированное и протестированное программное обеспечение на новые версии.
Естественно, гнаться за последними версиями драйверов совершенно необязательно. Диски, размеченные в формате UDF v.2.x, в подавляющем большинстве случаев читаются и драйверами от UDF v.1.5, пускай и с ограниченными возможностями. Так, списков управления доступом вы не получите, а при архивировании каталога Documents and Settings в многопользовательских системах без этого обойтись невозможно.
Программное обеспечение для пакетной записи
Какие программы пакетной записи существуют? Это — хитрый вопрос, и толковать его можно двояко. Программ пакетной записи, включающих в свой состав драйверную оснастку (UDF-reader и UDF-монитор), не так уж и много, так как их разработка требует высокой инженерной культуры и доступна далеко не всем. Большинство производителей программного обеспечения для записи предпочитают не связываться с драйверами. Вместо этого они создают красивый пользовательский интерфейс, а драйверную оснастку приобретают по лицензии у высокотехнологичных корпораций.
Пальма первенства несомненно принадлежит пакету DirectCD, созданному в компании Adaptec. Основным держателем лицензии на этот пакет является компания Roxio с ее утилитой Easy CD Creator. Именно поэтому пакет часто называется Roxio DirectCD, что неверно. Краткая характеристика программы: нестабильная, в высшей степени капризная и неуживчивая, конфликтующая как с оборудованием, так и с программной средой, вероломно нарушающая стандартные спецификации на UDF и вносящая в них собственные расширения, затрудняющие чтение записанных дисков на других системах (особенно Linux). Активно использует нестандартные конструктивные особенности оборудования, поэтому весьма привередлива к версии и прошивке последнего. Бракует многие приводы как несовместимые. В общем, достоинств нет совсем, но зато какая яркая реклама! Если вы все еще хотите использовать этот пакет, то он доступен по следующему адресу: http://www.adaptec.com/. UDF-reader распространяется бесплатно, а за все остальное приходится платить.
PacketCD от CeQuadrat отличается менее амбициозным поведением, к тому же он поддерживает прозрачное сжатие данных. Эта возможность несколько увеличивает эффективную емкость диска, однако приводит к проблемам совместимости и потому никем реально не используется. В последнее время наблюдается отчетливая тенденция, выражающаяся в том, что современные рекордеры все чаще комплектуются DirectCD, захватывающим территории, некогда принадлежащие PacketCD. Печально.
InCD от Ahead — функциональность этого пакета находится на достаточно низком уровне, но зато он корректно уживается с Nero Burning ROM. Работу с дисками CD-R InCD не поддерживает в принципе. Некоторые считают это крупным недостатком, некоторые — нет. Лично меня невозможность записи дисков CD-R-дисков в пакетном режиме сильно коробит.
FloppyCD от Gutenberg Systems — единственная программа, поддерживающая пакетную запись в формате ISO-9660 и Joliet. Созданные с ее помощью диски читаются всеми операционными системами без каких-либо дополнительных драйверов, правда, за это приходится расплачиваться отсутствием фрагментации и, как следствие, неэффективным использованием дискового пространства при беспорядочном копировании и удалении большого количества файлов разного размера.
Windows XP обеспечивает встроенную поддержку UDF, и никаких дополнительных драйверов для пакетной записи не требует. Устанавливать дополнительное программное обеспечение не нужно, так как все оно нестабильное и неправильное. Хотя… вкусы бывают разные.
Технология Mount Rainer
Нашумевшая технология Mount Rainer в действительности является не более, чем маркетинговой уткой, реально не сулящей ничего принципиально нового. Но обо всем по порядку. Что такое Mount Rainer? Это — организация, названная в честь живописного национального парка (http://www.nps.gov/mora) и курирующая вопросы взаимодействия операционных систем с оптическими накопителями. В ее состав входят практически все крупные производители аппаратных средств и программного обеспечения: Philips, Microsoft, Compaq, Sony и т.д.
Mount Rainer Writer (сокращенно MRW), возносимый некоторыми журналистами чуть ли не до промышленного стандарта пакетной записи, в действительности представляет собой обычную программу для пакетной записи плюс UDF 2.0.1. От программного обеспечения требуется умение форматировать диск в фоновом режиме и корректно обрабатывать прерывание последнего по нажатию кнопки EJECT (после вставки диска форматирование будет продолжено).
Заявления о том, что технология Mount Rainer обеспечивает увеличение емкости и количества возможных циклов перезаписи дисков CD-RW, совместимость записанных носителей со всеми современными приводами и операционными системами, оптимизированную скорость передачи данных, дополнительную коррекцию ошибок приводами, не совсем соответствуют действительности. Увеличение циклов перезаписи за счет внедрения в файловую систему менеджера дефектов появилось еще в UDF v.1.5, которой нынче трудно кого-либо удивить. Совместимости со всеми операционными системами у Mount Rainer нет, и без соответствующего драйвера они не читаются. Конечно, это "неправильные" операционные системы, не поддерживающие MRW, а "правильность" — это прерогатива Windows XP, ради продвижения которой вся эта рекламная шумиха, собственно говоря, и затевалась.
Короче говоря, никакой необходимости в наличии логотипа Mount Rainer Compatible на коробке покупаемого привода нет! Живите спокойно! Ту же самую функциональность можно обеспечить и за меньшие деньги!
Регламент работ
При установке чистого диска CD-RW в привод UDF-монитор автоматически предлагает его отформатировать. Диски CD-R чаще всего игнорируются, и форматировать их приходится вручную. В зависимости от специфики драйверной оснастки эта операция осуществляется либо через стандартное контекстное меню проводника Windows, либо через интерфейс самой программы записи.
В зависимости от скорости и конструктивных особенностей привода форматирование может занять от двадцати минут до одного часа. В режиме Mount Rainer форматирование осуществляется в фоновом режиме, и возможность записи файлов доступна уже через несколько секунд после его начала. Эффективная емкость отформатированного диска составляет порядка 550 Мбайт, остальные мегабайты заняты служебными данными, так что если вы не обнаружите их на своем диске, не пугайтесь — все идет по плану. Структура пакета схематично показана на рис. 10.10. Как видите, значительный объем пространства отводится для служебной информации (run-in, run-out, pre-gap, post-gap и т.д.). В некоторых случаях эти накладные расходы могут быть весьма значительными. Попробуйте, например, скопировать в пакетном режиме полноценный фильм.
Рис. 10.10. Структура пакетов в режиме пакетной записи
Теперь, используя мышь или FAR Manager, попробуйте перетащить на CD- R/CD-RW диск несколько файлов, и они послушно скопируются, а свободный объем скачкообразно уменьшится на величину, существенно превышающую суммарный размер записываемых файлов. Что ж, пакетная технология берет свою мзду!
Будьте готовы к тому, что при попытке просмотра диска в системе без драйверов UDF (например, в свежеустановленной Windows 9x/Windows 2000) диск либо не будет читаться совсем, либо, что более вероятно, обнаружит в своем каталоге один-единственный исполняемый файл, который вы туда не записывали. Успокойтесь! Это отнюдь не вирус, разрушивший все ваши файлы. Это — UDF-reader. Естественно, предназначенный для Windows, и естественно, требующий после установки перезагрузки (а под Windows 2000 — еще и прав администратора). При этом его еще не так-то просто удалить из системы. Подумайте — а захочет ли владелец того компьютера устанавливать на него что-то навязываемое? Он может взять да и отказаться работать с вашим диском!
Правда, при закрытии сессии на родной машине UDF-монитор обычно формирует файловую систему ISO 9660 — стандартную для всех операционных систем и читающуюся безо всяких драйверов, но дальнейшая запись файлов на этот диск уже становится невозможной вплоть до его очистки.
Информация к размышлению
Чтобы там ни говорили производители, пакетная технология намного менее надежна, чем классическая запись всей сессии целиком. Многократные зажигания/гашения лазера образуют прерывистую цепочку, концы которой плохо "склеиваются" друг с другом, и потому оптической головке стоит больших усилий не сбиться с дорожки. В момент зажигания лазера его характеристики довольно сильно "пляшут", что ухудшает качество прожига. В обычном режиме у привода есть время стабилизироваться, так как прожиг начинается с записи вводной области (lead-in), многократно дублирующей служебную информацию. По этой причине первые несколько секторов вводной области практически всегда оказываются дефектными. Что касается пакетной записи, то в этом режиме лазеру приходится включаться в работу "с места в карьер".
К тому же, сектора, хранящие файловую систему, работают в необычайно интенсивном режиме, перезаписываясь при каждой операции копирования/удаления. Чтобы избежать множественной перезаписи одних и тех же секторов, были предприняты специальные меры. Например, виртуальная таблица расположения (virtual allocation table, VAT), являющаяся одним из ключевых элементов UDF, позволяющая осуществлять инкрементную запись, может свободно мигрировать по всему диску, что дает возможность избежать множественной перезаписи одних и тех же секторов (рис. 10.11). Однако как с этим ни борются, служебные структуры данных погибают раньше всего, иногда даже после ~100 циклов перезаписи. Диск перестает читаться безо всякой надежды на его восстановление (разумеется, мы говорим о непрофессионалах).
Рис. 10.11. Структура файловой системы UDF, ключевым элементном которой является VAT, свободно мигрирующая по всему диску и потому предотвращающая многократную перезапись одних и тех же участков
Не забывайте и о механических повреждениях — диски UDF к ним относятся весьма щепетильно, и одна-единственная царапина может угробить все ваши файлы. Рекламируемый механизм управления дефектами здесь не срабатывает, так как он не устраняет ошибки, а лишь препятствует использованию сбойных секторов!
Никогда и ни при каких обстоятельствах не записывайте в пакетном режиме действительно ценные файлы, которые вам было бы жаль потерять! Если вы все-таки делаете это, в обязательном порядке продублируйте их на несколько дисков. Перенос файлов между компьютерами — дело другое, и UDF тут практически незаменим.
Кстати, о надежности. Производители оптических накопителей склонны преувеличивать срок их службы, зачастую давая пожизненную гарантию. Но маловероятно, что кому-либо когда-либо удастся воспользоваться этой гарантией. Общеизвестно, что при попытке возврата дефектного диска на завод-изготовитель все компании отвечают неизменным отказом, ссылаясь на нарушение условий хранения диска. У вас помещение кондиционируется? Влажность и температура с какой точностью выдерживаются? Если вы честно ответите на такие вопросы, вы получите отказ в вашей просьбе. Реально (по собственному опыту и опыту своих друзей) могу сказать, что даже Verbatim спустя полтора-два года обнаруживает резкое ухудшение качества чтения за счет деградации активного слоя, поэтому хранить на дисках CD-R/CD-RW свои архивы могут только самоубийцы. Используйте стример, магнитооптику или умирающий, но все же неизменно надежный Iomega ZIP 100MB.
Какой привод выбрать
Для надежной работы в пакетном режиме и пишущий, и читающий приводы должны, как минимум, поддерживать режим Multi Read, о чем свидетельствует одноименный логотип на его лицевой панели. Разумеется, не всякому логотипу можно верить. Тщательное расследование, проведенное технологической ассоциацией по оптическим устройствам хранения данных (Optical Storage Technology Association, OSTA), показало, что качественных приводов на рынке единицы (рис. 10.12).
Рис. 10.12. Поддержка режима Multi Read различными производителями. "Совместимость продемонстрирована" — привод полностью соответствует спецификации, "Выдана лицензия на логотип MultiRead" — лицензия на логотип выдана, но этой информации нельзя доверять полностью
И все-таки, несмотря на все свои многочисленные недостатки, технология пакетной записи и файловая система UDF вызывают восхищение. Это — действительно прогрессивные технологии, активно подрывающие старые устои изнутри. Дайте ей время, и эта технология разовьет такую мощь, что турбинам реактивных самолетов останется лишь завидовать.
Секреты прожига лазерных дисков
Помните, во времена MS-DOS существовал драйвер, позволяющий записывать на обычную 740-килобайтную дискету до 800 Кбайт информации? А 900.com помните? О, времена, о нравы! Сегодня, когда дискеты давно вышли из моды, а емкость массовых носителей информации перешагнула через отметку в 650 Мбайт, старые идеи дают новые всходы...
Емкость дисков CD-R/RW, декларируемая производителем, всегда много меньше физической емкости данного диска и равна объему информации, который можно записать в режиме MODE 1. Разумеется, помимо MODE 1 существуют и другие режимы записи данных, отличающиеся друг от друга емкостью и надежностью.
Если целостность данных не является превалирующим фактором, то емкость лазерного диска можно существенно увеличить, выиграв порядка 15% дополнительного пространства за счет отказа от избыточных корректирующих кодов Рида-Соломона. Использование незадействованных каналов подкода дает еще 4% емкости, а отказ от выводной области — 2%. Наконец, не стоит забывать о такой полезной возможности, как overburn ("перепрожиг" диска).
Таким образом, на обычный лазерный диск емкостью 700 Мбайт при желании можно записать от 800 Мбайт до ~900 Мбайт данных, а на 90-минутный — от 900 Мбайт до 1 Гбайт. Чтобы этого добиться, первым делом необходимо вспомнить сколько там бит в байте. Правильно, восемь. А сколько бит в семистах мегабайтах? А это смотря в каких мегабайтах! Так, например, стандартный диск 700 Мбайт CD-R/RW вмешает, по меньшей мере, 23 миллиона бит или порядка трех гигабайт "сырой" информации, большая часть которой расходуется на служебные структуры данных, обеспечивающие лазерному диску работоспособность. На рис. 10.13 показано распределение дискового пространства CD между данными различных типов. Как видите, для хранения пользовательских данных отводится лишь немногим более половины от доступного дискового пространства.
Рис. 10.13. Распределение дискового пространства на CD между данными различных типов
Колоссальная избыточность принятой системы кодирования объясняется физическими свойствами светового луча, который, в силу своих волновых свойств, одиночные "питы" и "лэнды" просто огибает. Физически диск представляет собой тонкую пластину из поликарбоната, покрытую тонким отражающим слоем, изготовленным из алюминия или, в некоторых случаях, золота (рис. 10.14. а и б). Отражающий слой, в свою очередь, покрыт специальным защитным слоем. Нормальная поверхность отражающего слоя CD, называемая "лэндом" (от английского слова land — равнина, земля), покрыта микроскопическими углублениями, называемыми "питами" (от английского слова pit — ямка, впадина). Питы нанесены на отражающую поверхность таким образом, что чередующиеся питы и лэнды образуют длинную, непрерывную спиральную дорожку.
На носителях CD-R питов в строгом смысле этого слова нет. Однако они замещены специальным слоем красителя, который прожигается лазером. Обуглившийся краситель деформирует отражающий слой, и это препятствует отражению лазерного луча этим участком (рис. 10.14, в). Однако приводы воспринимают CD, изготовленные методом литья под давлением, точно так же, как и записанные диски CD-R. Единственное отличие состоит в том, что диски, изготовленные литьем под давлением, более контрастны.
Рис. 10.14. Физическая структура лазерного диска
Если рассмотреть поверхность CD под электронным микроскопом (рис. 10.15), то можно видеть чередующиеся цепочки питов и лэндов. Лэнды отражают большую часть падающего на них излучения, а питы, в силу своей удаленности от точки фокуса, не отражают практически ничего.
Рис. 10.15. Поверхность лазерного диска под электронным микроскопом
Вследствие волновой природы луч лазера обходит одиночные питы и лэнды. Минимальной "формацией", уверенно распознаваемой лазерным лучом, является последовательность из трех питов (лэндов), соответствующая трем логическим нулям. Таким образом, питы и лэнды формируют цепочки, каждая из которых имеет длину от трех до десяти питов или лэндов (рис. 10.16).
Рис. 10.16. Питы и лэнды образуют цепочки длиной от трех до десяти питов или лэндов каждая
Переход от пита к лэнду (или наоборот) соответствует логической единице, а логический ноль представляется отсутствием переходов в данной позиции. Поскольку диаметр сфокусированного лазерного луча равен трем питам, более короткие цепочки уже не распознаются лазером. Таким образом, две смежных двоичных единицы (каждая из которых соответствует переходу от пита к лэнду или от лэнда к питу) всегда должны отделяться друг от друга не менее, чем тремя нулями. В противном случае привод просто не сможет заметить, что здесь присутствует какая-то информация (вспомните, что длина одного пита или одного лэнда значительно меньше, чем диаметр сфокусированного лазерного луча). Что касается верхнего предела длины цепочек, то наличие этого ограничения обусловлено степенью точности тактового генератора и равномерностью вращения диска. В самом деле, если точность тактового генератора составляет порядка 10%, то при измерении 10-питовой цепочки мы получаем погрешность в ±1 пит. Некоторые производители уменьшают длину одного пита на 30%, что во столько же раз увеличивает эффективную емкость диска. Возникает вопрос: как же в таком случае привод ухитряется определить длину той или иной цепочки? Ведь в отсутствии каких бы то ни было опорных значений, привод вынужден сравнивать длину питов с эталоном, а это значит, что цепочка из
N
уплотненных питов будет интерпретирована как N
/2! Дизассемблировав прошивку своего привода PHILIPS, я выяснил, что привод имеет автоматический регулятор скорости, подбирающий такое значение T
, которое соответствовало бы наименьшему количеству ошибок чтения (см. рис. 10.16).Поскольку две соседние единицы всегда оказываются разделены, по меньшей мере, тремя нулями, приходится прибегать к сложной системе перекодировки, преобразующей всякий 8-битный символ исходных данных в 14- битное слово EFM (Eight to Fourteen Modulation). При этом слова EFM не могут следовать вплотную друг за другом (задумайтесь, что произойдет, если за одним словом EFM, оканчивающимся на единицу, попробовать записать другое слово EFM, которое тоже начинается с единицы). Таким образом, слова EFM должны разделяться тремя объединительными битами (merging bits). Соответственно, на каждые 8 бит исходных данных приходится 9 избыточных данных. Очевидно, что стандартная схема модуляции не является идеальной и оставляет достаточный запас для ее усовершенствования. Более подробно этот вопрос будет рассмотрен далее в этой главе.
Минимальной порцией данных, непосредственно адресуемой на программном уровне, является сектор (или в терминологии Audio CD — блок). Один блок состоит из 98 фреймов, каждый из которых, в свою очередь, содержит:
□ 24 байта полезных данных;
□ 8 байт кодов Рида-Соломона, часто называемых перекрестно-перемежающимися кодами Рида-Соломона (cross-inerleaved Reed-Solomon codes, CIRC codes), хотя с технической точки зрения это и не совсем верно;
□ 3 синхробайта;
□ 8 бит каналов подкода — по одному биту на каждый из восьми каналов, условно обозначаемых латинскими буквами P, Q, R, S, T, U, V и W соответственно. Q-канал хранит служебную информацию о разметке диска, P-канал служит для быстрого поиска пауз, остальные каналы — свободны.
Таким образом, эффективная емкость одного блока составляет 2352 байта, или даже 2400 байт, с учетом каналов подкода (из 98 байт субканальных данных — 34 байта отданы под служебные нужды). Корректирующие коды Рида-Соломона позволяют исправлять до 4 разрушенных байт на каждый фрейм, что составляет 392 байта на целый блок.
Диски с данными (Data CD), ведущие свою родословную от Audio-дисков, поддерживают два основных режима обработки данных: MODE 1 и MODE 2.
В режиме MODE 1 из 2352 байт сырой емкости сектора лишь 2048 байт отданы непосредственно под пользовательские данные. Остальные распределены между заголовком сектора (16 байт), контрольной суммой сектора (4 байта) и дополнительными корректирующими кодами, увеличивающими стойкость диска к физическим повреждениям (276 байт). Оставшиеся 8 байт никак не задействованы и обычно проинициализированы нулями.
В режиме MODE 2 из 2352 байт сырой емкости сектора только 16 байт отданы под служебные структуры (заголовок), а остальные 2336 байт содержат пользовательские данные. Легко видеть, что при записи диска в MODE 2 его эффективная емкость становится на -15% больше, но и надежность хранения данных при этом становится приблизительно на треть ниже. Однако при использовании качественных носителей информации (LG, TDK, Verbatim) и бережном обращении с ними риск невосстановимого разрушения данных достаточно невелик. К тому же, многие форматы данных безболезненно переносят даже множественные искажения средней и высокой степени тяжести. К этой категории относятся DivX, MP3, JPEG и другие типы файлов. С некоторой долей риска можно записывать архивы и исполняемые файлы, потерей которых вы не сильно огорчитесь, или которые возможно восстановить из основного хранилища (например, при переносе файлов между компьютерами, дублировании дисков, взятых напрокат, и т.д.).
Чистый MODE 2 встречается крайне редко, однако с его производными нам приходится сталкиваться буквально на каждом шагу. Это и CD-ROM XA MODE 2 (применяющийся в многосессионных дисках), и Video CD/Super Video CD, и CD-I, и многое многое другое.
Формат CD-ROM XA, возникший на фундаменте MODE 2, выгодно отличается от своего предшественника возможностью динамической смены типа трека на всем его протяжении. Часть трека может быть записана в режиме FORM 1, практически идентичном режиму MODE 1, но задействующем восемь ранее пустующих байт под нужды специального заголовка. Другая часть трека может быть записана в FORM 2 — усовершенствованном MODE 2: 2324 байта пользовательских данных, 16 байт основного и 8 байт вспомогательного заголовков плюс 4 байта контрольной суммы для контроля целостности (но не восстановления!) содержимого сектора.
Режим FORM 1 предполагалось использовать для критических к разрушению данных (исполняемых файлов, архивов и т.д.), a FORM 2 — для аудио/видеоданных. Увы, этим замыслам было не суждено сбыться, и широкого распространения режим FORM 2 так и не получил. Единственным популярным форматом, опирающимся на режим XA MODE 2 FORM 2, стал Video CD/Super Video CD, позволяющий записать на обычном 700-мегабайтном диске до 800 Мбайт информации и 900 Мбайт — на 90-минутном (плюс overburn). Это приблизительно на четыре мегабайта меньше, чем в чистом MODE 2, но такими потерями можно и пренебречь. Зато, в отличие от чистого MODE 2, формат Video CD/Super Video CD поддерживается операционными системами семейств Windows и Linux!
Проблемы
Сам по себе MODE 2 никаких сложностей не вызывает. Это — стандартный режим, штатно поддерживаемый всеми приводами, носителями и драйверами. Проблема состоит в том, что ISO 9660 и все файловые системы на ее основе налагают на размер сектора жесткие ограничения, требуя, чтобы он представлял собой степень двойки (т.е. составлял 512, 1024, 2048, 4096… байт). Размер пользовательской области данных сектора, записанного в MODE 1, удовлетворяет этому требованию (211=2048). О MODE 2 этого сказать нельзя, и в конце сектора остается "хвост" из 288 неиспользуемых байт (211+288=2336).
Программы профессионального "прожига" позволяют записывать диск как в XA MODE 2 FORM 1, так и в XA MODE 2 FORM 2. Однако это ни на йоту не увеличивает его объема, поскольку хвостовая часть секторов, записанных в FORM 2, вынуждена пустовать, что снижает надежность хранения данных, ничего не давая взамен.
Теоретически возможно создать драйвер, транслирующий n секторов MODE 2 в k*n секторов MODE 1, и мне действительно удалось его создать. Однако целесообразность его использования весьма сомнительна, поскольку далеко не каждый пользователь согласится устанавливать в свою систему "кустарный" драйвер. Ошибки драйверов зачастую обходятся непомерно дорого — вплоть до потери всех данных, хранившихся на жестком диске, а программисты, как и все люди в этом мире, склонны ошибаться. Так или иначе, от идеи использования драйвера я отказался, поскольку ею тестирование выглядело слишком масштабным проектом.
Немногим лучше обстоят дела и с Video CD/Super Video CD. На первый взгляд кажется: ну какие тут могут быть проблемы? Берем Ahead Nero Burning ROM, в меню диалогового окна New Compilation выбираем опцию Video CD, а затем записываем диск. Диск действительно записывается, но только в формате MPEG1. Формат Super Video CD, в свою очередь, соответствует MPEG2. Никакого обмана здесь нет — вы получаете 800/900 Мбайт настоящего MPEG1/MPEG2, что на 100 Мбайт превосходит емкость стандартного CD-R (рис. 10.17).
Рис. 10.17. Запись Video CD/Super Video CD средствами Ahead Nero Burning ROM. Емкость одного такого диска составляет порядка 800 Мбайт (900 Мбайт на 90-минутных CD-R), однако исходные данные должны быть представлены в формате MPEG1/MPEG2.
В то же время использование DivX (MPEG4) дает значительно больший выигрыш в емкости, сжимая два Video CD в один CD-ROM. Но что нам мешает записать в формате Video CD тот же самый MPEG4 или MP3? Увы, не все так просто! Большинство программ записи, включая Ahead Nero Burning ROM, осуществляют тщательную проверку всех данных, записываемых на диск. Столкнувшись с MPEG-4, они либо принудительно перекодируют данные в MPEG1/MPEG2, либо вообще отказываются от записи. Мотивация этого поведения такова — Video CD должен соответствовать Стандарту, иначе это не Video CD. Действительно, автономные Video-проигрыватели поддерживают диски строго определенных типов, и на декодирование MPEG4 у них не хватит аппаратной мощности. Персональный компьютер — другое дело. При наличии соответствующих кодеков он воспроизведет любой мультимедийный формат, независимо от того каким способом тот будет записан.
Но даже если волшебным образом "отучить" Ahead Nero Burning ROM задавать лишние вопросы и заставить его записывать MPEG4 как Video CD, это ни к чему не приведет, поскольку операционные системы семейства Windows "поддерживают" Video CD-диски весьма оригинальным образом. "Сырой" видеопоток в формате "настоящего" MPEG1/MPEG2 их не устраивает, и они насильно добавляют к нему свой заголовок в формате файла для обмена ресурсами (Resource Interchange File Format, RIFF), явным образом указывающий формат файла. Очевидно, что после таких вмешательств никакой формат воспроизводиться не будет, и попытка проиграть MPEG4 как MPEG1/MPEG2 успехом не увенчается.
Тупик? Вовсе нет! Из всякой ситуации найдутся выходы, и не один, а несколько.
Решение
Решение проблемы MODE2 сводится к записи диска в режиме, отличном от ISO 9660. Самый простой подход состоит в оформлении каждого файла в виде самостоятельного трека, отказавшись от использования файловой системы вообще. Конечно, штатными средствами операционной системы такой диск не прочесть, однако содержимое такого трека без труда может быть "сграблено" на жесткий диск и нормальным образом прочитано оттуда. Единственный минус такого решения заключается в невозможности воспроизвести записанный файл непосредственно на самом диске, что создает определенные проблемы и нервирует пользователей Windows, привыкших открывать всякий файл простым щелчком мыши, без необходимости выполнения каких-либо дополнительных действий. Правда, UNIX-сообщество, умело владеющее клавиатурой, командными файлами и скриптами, решает эту задачу без проблем. Действительно, "грабеж" трека легко автоматизировать (и позже мы покажем, как это делается), причем перед началом проигрывания файла вовсе не обязательно дожидаться извлечения всего трека целиком. Вспомните, ведь и Windows, и UNIX — это многозадачные системы, поэтому и извлечение, и воспроизведение могут выполняться параллельно.
Как вариант, можно записать диск в формате Video CD. Для этого нам потребуется программа, не слишком педантично относящаяся к требованиям Стандарта и послушно записывающая все, что ей указывают. Естественно, если формат записываемых файлов отличен от MPEG1/MPEG2, при попытке их воспроизведения возникнут серьезные проблемы, поскольку операционная система Windows принудительно снабжает их заголовком MPEG1, что вводит штатный проигрыватель в глубокое заблуждение, зачастую граничащее с зависанием. Существует, по меньшей мере, два выхода из этой ситуации. Самый простой и самый универсальный подход состоит в том, чтобы оснастить систему специальным фильтром DirectShow, поддерживающим разбор RIFF/CDXA (parsing). Примером такого фильтра является XCD DirectShow filter/NSIS installer от Alex Noe и DeXT, который может быть найден по следующему адресу: http://peque.homeftp.org/~dext/xcd/riff-cdxa-filter-test6b-nsis.zip. Другой путь заключается в использовании программного обеспечения, игнорирующего "лишний" заголовок (например, Freecom Beatman CD/MP3 Player, см: http://www.vnunet.com/Print/1129594).
Сеанс практической магии в MODE 2
Среди программ, поддерживающих запись диска в режиме MODE 2, в первую очередь следует выделить утилиту CDRWin, пользующуюся неизменной любовью профессионалов. Это — чрезвычайно мощный инструмент, возможности которого ограничены лишь фантазией пользователя, выполняющего запись. Самую свежую версию программы можно скачать, в частности, отсюда: http://www.goldenhawk.com/download_body.htm. Кроме того, пригодится и консольная версия программы, управляемая из командной строки, которая также имеется на сайте http://www.goldenhawk.com.
Процесс прожига диска мы начнем с подготовки исходного файла. Первым и единственным предъявляемым к нему требованием будет выравнивание его длины до целого количества секторов. Пусть длина файла равна 777 990 272 байтам, тогда, чтобы уложиться в целое число 2336-байтных секторов, мы должны либо отрезать 1824 байта от конца файла, либо дописать к нему 512 нулей. Аудио- и видеофайлы безболезненно переносят как усечение своего тела, так и мусор в хвосте. Обе этих операции можно осуществить в любом НЕХ-редакторе, например, HIEW (http://www.softpedia.com/get/Programming/File-Editors/Hiew.shtml). Усечение файлов выполняется очень просто. Открываем файл, запускаем стандартный Windows-калькулятор и, перейдя в инженерный режим, переводим десятичную длину файла в шестнадцатеричный формат:
777990272 - 1824 7779884482E5F2960
(обычным шрифтом набраны символы, набираемые на клавиатуре, а жирным — ответ калькулятора). Возвращаемся в HIEW, нажимаем 2E5F2960
) и, подтвердив серьезность своих намерений клавишей Переходим ко второму этапу — созданию файла cue sheet, содержащего всю информацию о структуре прожигаемого образа. Типичный файл cue sheet должен выглядеть приблизительно так, как показано в листинге 10.7.
Листинг 10.7. Типичный пример реализации файла cue-sheet
FILE "my_file.dat" BINARY
TRACK 1 MODE2/2336
INDEX 1 00:00:00
Здесь
my_file.dat
— имя записываемого на диск файла, TRACK 1
— номер трека, MODE2/2336
— режим записи, a INDEX 1
— номер индекса внутри файла. Подробнее о синтаксисе файлов cue sheet можно прочесть в документации, прилагаемой к CDRWin.Вставляем диск CD-R/CD-RW в привод, запускаем CDRWin, нажимаем кнопку Load Cuesheet и указываем путь к только что сформированному файлу. Дождавшись завершения его компиляции, нажимаем кнопку Record Disk, предварительно убедившись, что галочка у опции Raw Mode сброшена (рис. 10.18). Вот, собственно говоря, и все. Несмотря на то, что размер исходного файла намного превышает заявленную емкость диска, процесс прожига протекает без каких-либо проблем.
Рис. 10.18. Запись 800/900 Мбайт диска в режиме MODE 2 средствами CDRWin. Исходные данные могут быть представлены в любом формате, однако штатными средствами операционной системы такой диск не поддерживается
Однако попытка просмотра оглавления только что записанного диска штатными средствами операционной системы ни к чему хорошему не приводит, и нас пытаются убедить в том, что данный диск пуст. Но ведь это не так! Запускаем CDRWin, выбираем Extract Disc/Tracks/Sectors to Image File, и в окне Track Selection видим наш трек TRACK 1 (рис. 10.19). Хотите его проиграть? Установите переключатель Select Track, а в группе Reading Options сбросьте флажок RAW (если этого не сделать, содержимое трека будет читаться в сыром режиме, с перемешиванием полезных данных с заголовками, что никак не входит в наши планы). Выбираем трек, который требуется извлекать, и, выбрав номинальную скорость чтения, нажимаем кнопку START (чтение трека, записанного в MODE 2 на максимальной скорости, зачастую приводит к многочисленным ошибкам).
Рис. 10.19. Чтение диска, записанного в MODE 2 средствами CDRWin, путем предварительного копирования одного или нескольких треков на винчестер
Вернув файлу его законное расширение (которое рекомендуется записывать на коробке диска фломастером, так как в процессе записи оно необратимо теряется), запускаем любой другой аудио- или видеопроигрыватель и наслаждаемся.
При желании процесс извлечения файла можно автоматизировать, воспользовавшись утилитой SNAPSHOT.EXE из пакета консольной версии программы CDRWin. Используя утилиту MAKEISO.EXE, поставляемую вместе с CDRWin, создайте один легальный трек, записанный в формате MODE 1/ISO 9660 и содержащий командный файл для автоматического извлечения выбранного пользователем трека MODE 2. Подробное описание этого процесса вы найдете в сопроводительной документации к программе CDRWin. Минимальные навыки программирования вам также не помешают.
Сеанс практической магии в Video CD
Для записи файлов DivX/MP3 в формате Video CD нам понадобится утилита MODE 2 CD MAKER, бесплатную копию которой можно найти здесь: http://es.geocities.com/dextstuff/mode2cdmaker.html. Если командная строка вызывает у вас уныние (a MODE 2 CD MAKER — это утилита командной строки), воспользуйтесь специальной графической оболочкой, найти которую можно по следующему адресу: http://cs.geocities.com/dextstuff/mode2cdmaker.html.
Интерфейс программы прост и вполне традиционен: вы перетаскиваете мышью записываемые файлы в окно UbiK mode2cdmaker GUI (рис. 10.20) или нажимаете кнопку Add Files. Индикатор в нижней части этого окна отображает использованный объем. По умолчанию программа использует режим MODE 2 FORM 1 (2048 байт на сектор), и для перехода на MODE 2 FORM 2 (2324 байта на сектор) необходимо нажать кнопку Set/Unset Form 2.
Рис. 10.20. Запись 800/900-мегабайтного диска Video CD средствами MODE 2 CD MAKER. При наличии установленных фильтров RIFF/CDXA такой диск вполне корректно поддерживается операционной системой
Чтобы отключить еще одну установку по умолчанию, автоматически требующую размещать каждый файл в "своем" треке, установите флажок Single Track. Дело в том. что на создание одного трека расходуется порядка 700 Кбайт дискового пространства. Поэтому раздельная запись большого количества файлов становится попросту невыгодна (правда, диск, записанный в режиме Single Track, не поддерживается операционной системой Linux).
Наконец, когда все приготовления завершены, нажмите кнопку Write ISO, и через некоторое время на диске образуется образ CUE, для прожига которого можно воспользоваться все тем же CDRWin, Alcohol 120% или Clone CD.
Не забудьте только установить специальный фильтр DirectShow, без которого вы не сможете работать с диском Video CD в штатном режиме.
Резерв-6 или дополнительные источники емкости
Хотите — верьте, хотите — нет, но 800/900 Мбайт на диск — это далеко не предел! Помимо основного канала данных, в котором, собственно, сырые сектора и хранятся, существуют и 8 каналов подкода. Один из них используется устройством позиционирования оптической головки, а остальные семь — свободны. В общей сложности мы теряем порядка 64 байт на сектор или ~20 Мбайт на стандартный 700-мегабайтный диск.
К сожалению, непосредственное хранение пользовательских данных в каналах подкода невозможно, поскольку операционные системы семейства Windows отказываются поддерживать такую возможность. Подходящих утилит от сторонних разработчиков также не наблюдается. Однако в каналы подкода нетрудно спрятать конфиденциальную информацию, не предназначенную для посторонних глаз.
Используя Clone CD (http://www.elby.ch/) или любой другой копировщик дисков аналогичного назначения, снимите образ прожигаемого диска, предварительно скопировав его на CD-RW. Когда эта операция закончится, на жестком диске образуются три файла: image.ccd, хранящий оглавление диска, image.img, хранящий содержимое основного канала данных, и image.sub, содержащий субканальные данные. Откройте последний файл любым НЕХ-редактором (например, HIEW).
Первые 12 байт принадлежат каналу P, предназначенному для быстрого поиска пауз, и его мы трогать не будем (хотя подавляющее большинство современных приводов P-канал попросту игнорируют). Следующие 12 байт заняты служебной информацией Q-канала, содержащей данные разметки. Модифицировать его ни в коем случае нельзя, в противном случае один или несколько секторов перестанут читаться. Байты с 24 по 96 принадлежат незадействованным каналам подкода и могут быть использованы по нашему усмотрению. За ними вновь идут 12 байт P/Q каналов и 72 байта пустых субканальных данных и так далее, чередуясь в указанном порядке вплоть до конца файла.
Нажав клавишу
Смотрите! Вот, например, сообщение, которое мне удалось внедрить в субканальные данные (рис. 10.21).
Рис. 10.21. Использование пустующих каналов подкода для сокрытия конфиденциальной информации
Не все приводы поддерживают чтение и запись "сырых" субканальных данных. Убедитесь, что в группе опций Profile parameters в Clone CD установлена опция Read subchannels from data tracks, а флажок Do not restore subchannel data сброшен. В противном случае у вас ничего не получится.
Наконец, дополнительные 13.5 Мбайт можно получить за счет выводной области диска (lead out), закрывать которую, в общем-то, не так уж и обязательно. Диски с отсутствующей выводной областью вполне успешно читаются подавляющим большинством современных приводов, и риск встречи с "неправильным" приводом минимален. Просто сбросьте флажок Always close the last session в используемой вами программе прожига!
Но и это еще не все! Недостатки стандартной кодировки EFM очевидны (и об этом уже говорилось выше), однако навязать приводу более совершенные способы модуляции пока невозможно. Тем не менее, в обозримом будущем ситуация может радикально измениться. Уже появились рекордеры, позволяющие "вручную" формировать объединяющие биты (чем значительно упрощается копирование защищенных дисков), однако все еще отсутствуют приводы, позволяющие читать объединяющие биты с интерфейсного уровня иерархии управления. Тем не менее, практически любой существующий привод CD-ROM/CD-RW поддается соответствующей доработке — достаточно лишь слегка модернизировать его микропрограммную прошивку. Экспериментируя со своим скоропостижно умершим приводом PHILIPS — модель CD-RW 2400 ("полетел" автоматический регулятор скоростей, в результате чего привод всегда работает на скорости 42х, безошибочно читая только высококачественные диски), я увеличил физическую плотность хранения информации на 12%, и это — практически без снижения надежности! Благодаря этому эффективная емкость диска, предназначенного для хранения 700 Мбайт информации, возросла до одного гигабайта! А это, согласитесь, уже кое-что!
Главным (и единственным) минусом такого способа записи является его несовместимость со стандартным оборудованием и, как следствие — полная непереносимость. Тем не менее, предложенная технология выглядит вполне перспективной и многообещающей.
Тестирование дисков на надежность
Использование режима MODE 2 предъявляет достаточно жесткие требования, как к качеству самих носителей, так и к технологическому совершенству пишущего и читающего приводов. В противном случае риск необратимой потери данных недопустимо возрастает, а сам режим MODE 2 — нецелесообразен.
Тестировать только что записанные диски — бессмысленно. Во-первых, нам необходимо знать характер нарастания количества разрушений с течением времени. Во-вторых, следует набрать статистику надежности по нескольким партиям одних и тех же носителей.
Для получения достоверных результатов совершенно необязательно исследовать диски, записанные в MODE 2. Ведь с физической точки зрения режимы MODE 1 и MODE 2 совершенно идентичны. Необходимо лишь узнать, достаточны ли восстанавливающие способности кодов CIRC, или же нет.
Рис. 10.22. Диск Verbatim (а), записанный на приводе Teac 552Е, демонстрирует высочайшее качество записи, подходящее для записи в режиме MODE 2. Диск от безымянного производителя (б), записанный на том же приводе, содержит большое количество разрушенных секторов, и для записи в режиме MODE 2 не годится
Используя утилиту Ahead Nero CD Speed или любую другую аналогичную ей программу, протестируйте свою коллекцию CD-R/CD-RW дисков на предмет выявления разрушений. Утилита CD Speed ScanDisc (рис. 10.22) отображает исправные сектора, поврежденные сектора и нечитаемые сектора. "Хорошими" (good) считаются сектора, ошибки чтения которых восстанавливаются еще на уровне декодера CIRC. Частично разрушенные (damaged) сектора могут быть восстановлены на уровне MODE 1. На уровне CIRC такие ошибки уже неустранимы, и диск, содержащий большое количество таких секторов, категорически непригоден для записи в режиме MODE 2. Полностью разрушенные (unreadable) сектора не могут быть восстановлены ни на каком уровне. Присутствие даже одного-единственного нечитаемого сектора сигнализирует о ненормальности ситуации и требует перехода на более качественные носители или же указывает на неисправность читающего/пишущего приводов (наличие разрушений в конце диска вполне допустимо, поскольку здесь располагается 150 секторов области пост-зазора (post gap), не содержащей никаких данных).
Для чего все это нужно
Копеечная стоимость лазерных дисков практически полностью обесценивает достоинства режима MODE 2. Исходя из средней цены диска в 15 рублей, сотня дополнительных мегабайт позволяет сэкономить чуть более одного рубля пятидесяти копеек, при этом многократно снижая надежность хранения данных, которая на дешевых носителях и без того невелика. Даже при записи 100 Гбайт данных мы выигрываем порядка 20 дисков, экономя немногим менее 300 рублей. Стоит ли овчинка выделки?
Все зависит от того, что записывать. В частности, при перекодировке DVD на CD-R неизбежно снижается качество изображения, а записывать фильм на два CD-R-диска — слишком накладно. Сотня дополнительных мегабайт в такой ситуации оказывается как нельзя более кстати. С другой стороны, при выборе коэффициента сжатия невозможно заранее рассчитать точную длину перекодированного файла. Как же бывает обидно, когда с таким трудом сформированный файл превышает объем диска CD-R-диска на какие-то жалкие 30–50 Мбайт! Приходится, скрепя сердце, удалять файл с диска и повторять всю процедуру сжатия вновь, а это занимает от трех до двенадцати часов, в зависимости от скорости вашего процессора! Стоит ли говорить, что запись такого файла в режиме MODE 2 позволяет сэкономить не столько деньги, сколько время!
Глава 11