Информационная безопасность



              

Лазерный диск с нулевым треком как средство защиты от копирования - часть 5


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

Процесс подготовки защищенного диска не лишен определенных тонкостей. Создание фиктивного трека с нулевым номером не вызывает особых трудностей, но вот вопрос: где его разместить? В первой, а, может быть, лучше во второй сессии? До подлинного трека или после? Поскольку вводная область первой сессии недоступна для чтения на субканальном уровне, то прочитать TOC первой сессии вручную нельзя. Нельзя и закладываться на команду READ TOC, поскольку, как уже было сказано выше, ее корректное выполнение не гарантируется. Вводные области второй и всех последующих сессий свободно доступны на субканальном уровне и ручное чтение хранимого ими TOC'а все-таки возможно. Конкретная позиция нулевого трека внутри сессии особой роли не играет, и нулевой трек может быть с одинаковым успехом размещен как до ненулевого трека, так и после него.

Только, пожалуйста, не забывайте о необходимости коррекции point'а A0h, хранящего номер "первого" трека всякой сессии. Если его значение оставить без изменений, то образ диска запишется без каких-либо препирательств со стороны Clone CD, но никаких упоминаний о нулевом треке в TOC'е прожженного диска не окажется! Точно так же ведет себя и Алкоголь. Чтобы этого избежать, значение point'а A0h той сессии, к которой вы добавляете нулевой трек, должно быть сброшено в Zero.

Фрагмент отредактированного CCD-файла приведен ниже:

TocEntries=13TocEntries=14;корректируем количество входов в TOC
[Entry 8][Entry 8]; это вход не обязательно должен быть восьмым…
Session=2Session=2; …главное, чтобы Session == 2, а Point == A0h
Point=0xa0Point=0xa0; этот Point отвечает на номер первого трека
ADR=0x01ADR=0x01; это служебные поля ADR/Control, описывающие
Control=0x04Control=0x04; режим обработки трека (это трек с данными)
TrackNo=0TrackNo=0; TNO = 0 – это Lead-In область
AMin=0AMin=0; \
ASec=0ASec=0; +- условный текущий абсолютный адрес
AFrame=0AFrame=0; /
ALBA=-150ALBA=-150; условный текущий LBA-адрес
Zero=0Zero=0; это поле всегда равно нулю
PMin=2àPMin=0;корректируем номер "первого" трека
PSec=0PSec=0; эти поля не имеют никакого смысла и должны
PFrame=0PFrame=0; быть равны нулю
PLBA=8850PLBA=8850; LBA-"адрес" номера "первого" трека
[Entry 11];добавляем еще одно Entry, описывающее нулевой трек
Session=2; нулевой трек должен быть не в первой сессии
Point=0x00; номер трека - ноль
ADR=0x01; Sub-channel Q encodes current position data
Control=0x04; трек с данными
TrackNo=0; это Lead-In
AMin=0;\
ASec=0;  + - условный абсолютный адрес Lead-In
AFrame=0;/
ALBA=-150; условный LBA-адрес Lead-In
Zero=0; это поле должно быть равно нулю
PMin=3; \
PSec=1;  + - абсолютный стартовый адрес нулевого трека
PFrame=66; /
PLBA=13458; LBA-адрес нулевого трека
<


Содержание  Назад  Вперед