Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
А давайте запрограммируем защиту самостоятельно! Ядро измерителя структуры спиральной дорожки занимает всего несколько строк на Си. Вместе с обвязочным кодом выходит около десятка… Полный цикл разработки вместе с отладкой легко укладывается в пару недель. Так стоит ли за это платить?
Star-force своими руками
Спиральная дорожка лазерных дисков очень похожа на грампластинку, только начинается не снаружи, а изнутри, наматываясь от центра к краю. Оптическая головка, удерживаемая в магнитном поле «звуковой катушки», движется на «салазках» поперек спиральной дорожки. Сама дорожка состоит из секторов с данными и каналов подкода. Номера секторов находятся как в заголовках самих секторов, так и в каналах подкода, «размазанных» вдоль спиральной дорожки. Для грубой наводки на требуемый сектор используются салазки и каналы подкода, а для точной – отклонение в магнитном поле и секторные заголовки.
Просто взять и измерить структуру спиральной дорожки нельзя, но можно сделать вот что: допустим, головка считывает сектор X, а следом за ним сектор Y. Если угол XOY, образованный центром (O) диска, секторами X и Y составляет порядка ~15 град., а сами сектора расположены на соседних витках спирали, то приводу достаточно всего лишь немного отклонить головку и через мгновение сектор Y сам падает в руки, как перезревшее яблоко – диск ведь вращается! Если же угол XOY составляет менее ~15 град., тогда за время перемещения головки сектор Y уже «уплывет» и приводу придется ждать целый оборот лазерного диска, пока он не достигнет оптической головки (см. рис. 4)!
Рисунок 4. Когда угол между секторами X и Y составляет ~15 град. при переходе на соседний виток,
сектор Y сразу же «подлетает» к оптической головке (рисунок слева) при меньшем значении угла сектор Y
успевает уплыть, и головка вынуждена ждать целый виток
Замеряя время чтения различных пар секторов, мы можем приблизительно определить их взаимное расположение на спиральной дорожке. У каждой партии диска для заданных секторов X и Y оно будет своим (ведь степень «закрутки» спирали неодинакова и варьируется от одного производителя к другому). Чтобы побороть упреждающее считывание (которым «страдают» многие приводы), защита должна читать сектора в порядке убывания их LBA-адресов. Также она должна измерять скорость вращения привода, чтобы, во-первых, определить постоянство временных замеров (пляшут ли они как пьяные человечки или нет), а во-вторых, скорректировать формулу для вычисления угла, поскольку, чем быстрее вращается диск, тем скорее «уплывает» сектор.
Исходный текст «измеряющей» программы приведен ниже:
Листинг 1. Макет программы sf.c для снятия топологий
//-[чтение сектора с диска]---------------------------------
// ARG: