Искажение TOC как средство борьбы с несанкционированным копированием диска
( Часть 2 )
Как мы видим, здесь присутствует как абсолютный, измеряемый в минутах, секундах, фреймах, так и LBA-адрес трека, представляющий собой не что иное, как порядковый номер сектора, считая от нуля. На самом деле, LBA-адрес – это «отсебятина», добавляемая в файл самим Clone CD, и в TOC LBA-адрес не хранится. Судя по всему, Clone CD вычисляет LBA-адрес исходя из соображений удобства (работать с LBA-адресацией действительно намного комфортнее). Однако при внесении каких-либо изменений в CCD-файл за согласованием обоих типов адресов нам придется следить самостоятельно. Для перевода абсолютных адресов в LBA можно воспользоваться следующей формулой:
Logical Sector Address=(((Minute*60)+Seconds)*75+Frame)–150
Ниже представлен вид атрибутов трека 1 до и после искажения:
Листинг 3. Атрибуты трека 1 до искажений (слева) и после искажения (справа).
[Entry 3] [Entry 3]
Session=1 Session=1
Point=0x01 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=10
PSec=2 --> PSec=2
PFrame=0 --> PFrame=0
PLBA=0 --> PLBA=-1
На самом деле, коварный автор схитрил и вместо вычислений LBA-адреса сослался на тот факт, что его версия Clone CD всегда использует абсолютные адреса, а LBA игнорирует.
Выбор абсолютного адреса первого трека произвольный, но осуществленный с таким расчетом, чтобы искаженный адрес гарантированно вылетал за границы первой сессии, Lead-out-область которой находится по адресу 00:29:33 (см. элемент TOC №2).
Шаг четвертый.
Теперь смонтируем искаженный образ диска на виртуальный привод, создаваемый программой Alcohol 120%, и посмотрим, что из этого получилось. Конечно, нет никакой уверенности в том, что виртуальный привод поведет себя как настоящий, но ведь и настоящие приводы на искаженных дисках ведут себя по-разному! Поэтому использовать Alcohol в качестве рабочего «макетника» вполне допустимо, тем более что это экономит уйму времени и болванок, ведь монтирование виртуального диска в отличие от «прожига» болванки осуществляется мгновенно, если, конечно, оно вообще осуществляется… Вплоть до версии 1.4.3 включительно – самой свежей версии на момент написания этих строк – Alcohol органически не переваривал искаженные образы дисков и отказывался их монтировать, апеллируя к недоступности образа файла: «Unable to mount image. File not accessible». Судя по всему, Alcohol понимает искаженный TOC слишком буквально, пытаясь отыскать в файле-образе то, чего там заведомо нет (трека, начинающегося с адреса 10:02:00 и заканчивающегося адресом 00:29:33 там нет точно!).
Какая жалость! Возможность монтирования дисковых образов с искаженным TOC позволила бы нам преодолевать защиту от копирования на любых пишущих приводах, а не только на тех, что поддерживают режим RAW DAO, – просто сбрасываем образ защищенного диска на болванку в виде обыкновенного файла и динамически монтируем его Alcohol по мере необходимости. Выходит, что на проверку Alcohol оказывается гораздо менее крут, чем это кажется!
Шаг пятый.
В порядке эксперимента попробуем «прожечь» искаженный образ в режиме RAW SAO, в котором, как уже было сказано выше, корректная запись сессий с искаженным TOC невозможна. Для гарантированного исключения возможных побочных эффектов желательно использовать привод, не поддерживающий RAW DAO чисто физически (ну мало ли, вдруг копировщик в плане проявления чудес искусственного интеллекта автоматически перейдет на более подходящий режим записи, игнорируя наши установки).
Мастер записи образов копировщика Alcohol 120% выдает следующую информацию о записываемом образе:
Листинг 4. Сводная информация по записываемому образу, выдаваемая Alcohol. Обратите внимание на размеры и адрес первого трека первой сессии (они выделены другим цветом).
Тип: Файл-образ Clone CD
Путь: L:\
Имя: Image.ccd
Image.img
Image.sub
Размер: 8.81 MB
Сессий: 2
Треков: 2
Сессия 01:
Трек 01: Mode 1, Длина: -42942(8191.92 GB), Адрес: 045000
Сессия 02:
Трек 02: Mode 1, Длина: 001715(3.3 MB), Адрес: 013458
Вот это номер! Если верить Alcohol, то длина первого трека составляет целых 8 Тб. Этот чудовищный объем не то что на CD на DVD-диск не влезет! На самом деле, длина треков в TOC нигде явным образом не хранится, но вычисляется как разница стартовых адресов двух смежных треков (если же сессия содержит всего один трек, в ход идет адрес Lead-out-области, примыкающий к треку). Искажение стартового адреса первого трека привело к тому, что разница стартовых адресов Lead-out-области и этого самого трека стала отрицательной. Действительно, 00:29:33 – 10:02:00 = 2058 – 45000 = – 42942, а если вспомнить, что LBA-адреса по стандарту выражаются 32-разрядными неотрицательными числами, становится понятно, как Alcohol получил такой неестественно огромный объем (отрицательные числа – это такие числа, чей старший бит взведен, отсюда – маленькое отрицательное число – это очень большое положительное). Расчеты показывают, что заявленное Alcohol значение в 8 Тб достигается лишь при использовании 43-битных переменных. Вот это да! Alcohol спроектирован с запасом на будущее (а в будущем нас, как известно, ждут диски с объемами от 30 и более гигабайт, для адресации которых 32 бит оказывается уже недостаточно, плюс еще необходимо учесть резерв, предназначенный для «отлова» отрицательных длин, образовавшихся в результате жестоких извращений с TOC, ведь Alcohol – это защищенный копировщик!)
И вот наступает волнующий момент – момент заливки искаженного образа на CD-R/CD-RW-диск (внимание! используя CD-RW-диск, вы должны отдавать себе отчет в том, что можете его безвозвратно потерять! Если ваш единственный пишущий привод откажется опознавать такой диск, очистка последнего окажется невозможной!). Благополучно проглотив искаженный образ, Alcohol, безо всяких препирательств со своей стороны зажигает огонек индикации записи (если, конечно, на вашем приводе он есть) и приступает к делу. Проходит минута, другая… а индикатор прогресса по-прежнему остается на нуле. К исходу шестой минуты, когда пишущая головка достигает кромки диска, процесс записи аварийно прерывается приводом и Alcohol, издав грустное «бэмс», сигнализирует об аппаратной ошибке.
Просмотр «недорезанного» диска на приводах ASUS и NEC обнаруживает лишь первую сессию, а от второй не видно и следа. С приводом PHILIPS дела обстоят еще хуже – он вообще отказывается признавать засунутую в него штуку лазерным диском, и после непродолжительного скрежета своих механических внутренностей, сопровождаемых натужными завываниями перебирающего различные скорости мотора, индикатор «DISC IN» прощально гаснет. «Прощально» в том смысле, что с испорченной болванкой вам придется расстаться. Конечно, если это всего лишь дешевый CD-R, то туда ему и дорога, но потерять CD-RW жалко. К счастью, на NEC очистка диска протекает успешно, и, воодушевленные этим обстоятельством, мы продолжаем свои издевательства вновь.
Копировщик Clone CD ведет себя в этом отношении иначе. Во-первых, он оценивает длину искаженного трека в 4 294 868 664 Кб (см. листинг, приведенный ниже), что указывает на использование 32-разрядных переменных и вытекающую отсюда невозможность отличать положительные длины от отрицательных.
Листинг 5. Сводная информация по записываемому образу, выдаваемая Clone CD. Обратите внимание на размер первого трека первой сессии (он выделен другим цветом).
ИНФОРМАЦИЯ О ФАЙЛЕ-ОБРАЗЕ:
Число сессий: 2
Занято на диске: 34850 Кбайт
Секторов: 15173
Время: 03:22:23 (мин:сек:кадр)
ИНФОРМАЦИЯ О СЕССИИ 1:
Размер сессии: 4726 Кбайт
Число треков: 1
Pregap: Данные Mode 1, размер: 103359 Кбайт
Track 1: Данные Mode 1, размер: 4294868664 Кбайт
ИНФОРМАЦИЯ О СЕССИИ 2:
Размер сессии: 3939 Кбайт
Число треков: 1
Track 2: Данные Mode 1, размер: 3939 Кбайт
Во-вторых, обнаружив, что запись искаженного TOC на данном приводе невозможна, Clone CD корректирует TOC так, чтобы его облик принял человеческий вид. В результате процесс «прожига» протекает без каких-либо ошибок и мы получаем как будто бы работоспособный диск. Стартовый адрес первого трека начинается там, где кончается Lead-in-область первой сессии (точнее, pre-gap первого трека начинается там, где кончается post-gap Lead-in-области первой сессии, но это уже детали). Такой диск нормально читается в любом приводе CD-ROM, но! Если защитный механизм прочитает содержимое TOC, он легко обнаружит, что имеет дело с копией, но не с оригиналом. Спрашивается: и на кой черт нам такое копирование нужно?! Хоть бы предупреждение было какое… Ладно, профессионалы запросто определят, в чем подвох, но в каком положении окажутся новички, и/или просто квалифицированные пользователи, использующие Clone CD для своих нужд? В общем мрак, одним словом...
Правда, в режиме RAW DAO нарезка искаженного образа протекает отлично и Clone CD не вносит в TOC никакой отсебятины, благодаря чему у нас образуется действительно защищенный CD, который мы сейчас и будем ломать.
Шаг шестой.
Просмотр защищенного диска под приводом NEC показывает все файлы, даже те, что принадлежат первому треку – тому самому треку, чей стартовый адрес жестоко искажен. Двойной щелчок мышью доказывает, что файлы не только присутствуют в каталоге, но и успешно открываются ассоциированным с ними приложениям и, судя по всему, выглядят вполне нормальными. Нашу душу начинают грызть смутные сомнения: действительно ли пишущий привод записал стартовый адрес первого трека таким, каким мы просили, или молчаливо исправил его на лету?
Для ответа на этот вопрос мы должны исследовать геометрию диска, т.е., попросту говоря, прочитать TOC. Запускаем уже полюбившийся нам Roxio Easy CD Creator и в меню «CD» находим пункт «CD Information». Щелкаем по нему мышкой, и на экран тут же выпрыгивает диалоговое окно с раскладкой диска (внимание! не все программы способны «переваривать» искаженный TOC! Easy CD Creator это умеет, а вот, например, Record NOW! – нет. В отсутствии подходящей утилиты вы можете воспользоваться программой raw.TOC.exe, поставляемой вместе с этой книгой).
Как и следовало ожидать, стартовый адрес первого трека лежит далеко за пределами своей «родной» сессии, и его длина, будучи выраженная положительным числом, значительно превышает доступную емкость диска (см. рис. ниже). Так что все наши волнения абсолютно безосновательны!
Рисунок 1. Отрицательная длина первого трека сводит штатный копировщик с ума.
Постойте, но как же тогда осуществляется доступ к содержимому первого трека? А кто вам вообще сказал, что лазерный диск адресуется по трекам?! Основной адресацией лазерного диска с данными является сектор. Абсолютный же адрес всякого сектора однозначно определяется принадлежащим ему Q-каналом подкода (с учетом несовпадения границ секций и секторов максимально возможное расхождение, допускаемое стандартом, составляет 1 сек, т.е. 75 секторов, поэтому этот способ используется лишь для грубого позиционирования оптической головки). Точная наводка на цель выполняется непосредственно по самому секторному заголовку, в явном виде содержащему его абсолютный адрес. Номера треков в процессе обработки сектора вообще не участвуют, вернее могут и не участвовать… Но могут ведь и участвовать! Все зависит от электронной начинки привода и его микропрограммной прошивки. Как именно они в этом участвуют – сие есть великая тайна разработчиков привода, и простым смертным ее понять не дано. Но так или иначе, встретив некорректный TOC, некоторые приводы запутываются, и в стройных битовых рядах возникает настоящая сумятица.
Результаты тестирования трех моих приводов следующие: NEC, как уже говорилось выше, показывает содержимое обоих секций, корректно обрабатывая их содержимое. ASUS показывает только первую – искаженную – сессию и в упор не видит вторую, делая ее недоступной даже на секторном уровне. Зато файлы первой сессии обрабатываются вполне корректно. PHILIPS, напротив, видит обе сессии, но корректно обрабатывает файлы лишь последней из них (т.е. той, что не искажена). Искаженная сессия доступна на секторном уровне, но нестабильно. Иногда без всяких видимых причин PHILIPS и возвращает лишенный всякого смысла мусор.
Мораль: защитные механизмы, базирующиеся на искаженном TOC, не могут закладываться ни на одну из сессий. Поэтому обе сессии должны дублировать содержимое друг друга – авось хоть одну из них привод пользователя да прочтет. Какой же тогда в этой защите смысл? А вот какой – пускай защита не может без риска для жизни привязаться к сессиям, она может привязаться к сырому содержимому TOC. О том, как осуществить такую привязку на практике, мы поговорим чуточку позднее, а пока попробуем скопировать защищенный диск нашими фаворитами – Clone CD и Alcohol 120%.
_____________________
←
| →
¯¯¯¯¯¯¯¯¯¯¯
Материалы в этом разделе:
и b ( New! )
|
| |
|
|
( /
) |
() |
()
| |