Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

articles:cd.defects [2017/09/05 02:55] (текущий)
Строка 1: Строка 1:
 +====== cd.defects ======
 +<​sub>​{{cd.defects.odt|Original file}}</​sub>​
 +
 +====== защита от копирования,​ основанная на физических дефектах ======
 +
 +===== введение =====
 +
 +===== основные принципы работы =====
 +
 +Рассмотрим лазерный диск с нанесенным дефектом (см. рис. 1). Какое он оказывает воздействие?​ Если ширина дефекта составляет менее 0,3 мм, то он автоматически восстанавливается декодером Рида-Соломона нижнего уровня (CIRC-декодером) и привод его просто "не заметит"​. Существует возможность вернуть позиции сбойных битов (см. команду READ CD), однако,​ она реализована не на всех приводах и потому на нее нельзя опереться. При увеличении длины дефекта до ~0,8 мм CIRC-декодер уже не справляется с его восстановлением,​ но в подавляющем большинстве случаев сектор может быть полностью восстановлен декодером верхнего уровня (ECC-декодером),​ и чтение завершится без ошибок. Дефектны с длинною свыше 1 мм уже не могут быть восстановлены и привод возвращает ошибку.
 +
 +{{cd.defects_Image_0.png?​553}}
 +
 +Рисунок 1 нанесение ключевой метки на спиральную дорожку
 +
 +Корректирующая способность различных моделей сильно неодинакова,​ поэтому мы не можем определять позицию дефективной метки так, как определяли ее на дискетах лет пятнадцать — двадцать тому назад. Но в нашем распоряжении имеются и другие механизмы.
 +
 +Рассмотрим,​ что происходит с приводом,​ когда оптическая головка встречается с дефектом. В грубом приближении,​ лазерный диск можно уподобить патефонной пластинке. Следящая система ведет оптическую головку вдоль спиральной дорожки и если эта дорожка в каком-то месте оказывается разрушенной,​ оптическая головка дезориентируется и "​вылетает"​ на один из соседних витков спирали. Затем, конечно,​ она возвращается,​ но на это приводу требуется какое-то время.
 +
 +Если создать локальный дефект размером ~2 мм, то сектор будет читаться с ошибками и время его чтения существенно возрастет. Этот факт можно использовать для идентификации диска.
 +
 +Проведем следующий эксперимент:​ возьмем лазерный диск и на расстоянии 5 мм от внешней кромки нанесем маркером риску толщиной ~0,5 мм и шириной ~2 мм (это будет наша ключевая метка). Затем, последовательно читая сектора в сторону увеличения их LBA-адресов,​ станем замерять время чтения каждого сектора.
 +
 +Нанеся полученные величины на график,​ мы увидим циклически повторяющиеся "​выбросы",​ которых отстоят друг от друга на ~16 секторов. Это позволяет нам рассчитать длину одного сектора. Расстояние риски от центра диска равно ~55 мм, следовательно,​ длина одного сектора — 2 * 55 *PI /​ 16 ~ 21 мм. Наша метка может перекрыть два сектора,​ тогда ошибка возникнет в обоих, однако,​ опираться на этот факт нельзя,​ поскольку он завязан на корректирующую способность привода,​ а она, как уже отмечалось,​ неодинакова.
 +
 +Для идентификации ключевого диска мы должны просто прочитать несколько секторов с диска в окрестностях ключевой метки и замерять время их чтения. При этом необходимо убедиться,​ что ключевая метка расположена посередине выбранных секторов,​ а не с их краю, в противном случае,​ определение будет нестабильным.
 +
 +Это осуществляется так: исследуя полученный график находим два смежных сбойных сектора. Очевидно,​ ключевая метка находится на их границе. Зная длину одного сектора,​ расстояние ключевой метки от центра диска, нетрудно рассчитать LBA-адрес сектора,​ попадающий на середину метки.
 +
 +//​**Замечание**//:​ //еще можно определять период следования сбойных секторов. Такой метод более надежен в работе,​ зато ключевую метку легко скопировать вручную,​ поскольку плотность секторов на виток спирали меняется незначительно — ~12 секторов посередине диска, ~21////​ ////​сектор у внешней кромки. Таким образом,​ при радиальном смещении ключевой метки на ~2 мм период следования сбоев изменяется на 1 сектор.//​
 +
 +{{cd.defects_Image_1.png?​553}}
 +
 +Рисунок 2 Красный график с желтыми точками описывает скорость чтения каждого из секторов,​ синий график с зелеными точками иллюстрирует успешность чтения. Нулевое значение — сектор прочитан успешно,​ ненулевое — чтение сектора завершилось с ошибкой.
 +
 +===== борьба с копировщиками =====
 +
 +Копировщики защищенных дисков пытаются имитировать сбойные сектора различными методами,​ однако,​ это у них плохо получается. Таких методов известно всего три: а) сектора с низким DSV; б) сектора с искаженными EDC/ECC полями;​ в) сектора с искаженным MODE. Все эти способы увеличивают время чтения сектора и приводят к ошибке,​ однако,​ их легко разоблачить. Поскольку дорожка физически остается цела, дезориентации следящей системы не происходит и потому мы получаем совсем другую временную характеристику.
 +
 +