Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
vse_polnostyu.doc
Скачиваний:
31
Добавлен:
22.09.2019
Размер:
705.02 Кб
Скачать

Изменение межсекторных промежутков

Таблица базы дисков, с помощью которой частично управляется работа НГМД, содержит параметр, определяющий величину межсекторного промежутка. Выбирается дорожка на дискете, которая специальной программой форматируется заново с измененным значением межсекторного промежутка в таблице базы дисков, что ведет к нестандартному расположению секторов.

Контролирующая часть защищаемой программы при обращении к выбранной дорожке производит ее анализ и делает вывод, является ли дискета дистрибутивной.

Использование дополнительной дорожки

При этом способе защиты используется дополнительная, 81-ая дорожка на дистрибутивной дискете. Заметим, что на гибком диске имеется место для размещения еще трех дорожек, сверх принятых 80. Дисковод позволяет вести на них запись данных. Поэтому на дополнительной 81-ой дорожке на дистрибутивной дискете хранится информация для контролирующей части защищаемой программы.

При копировании на стандартно отформатированную дискету дополнительно введенная 81-ая дорожка воспринята не будет, что и обнаруживается контролирующей частью защищаемой программы.

Ведение логических дефектов в заданный сектор

Сначала необходимо сказать несколько слов о физическом и логическом строении дорожки на гибком диске. Как известно, начало дорожек на дискете отмечено индексным отверстием. Каждый сектор на дорожке имеет две части: секторный ID маркер и собственно данные. ID маркер имеет шесть байт и дополнительные байты, которые идентифицируют его для контроллера накопителя на гибких магнитных дисках (НГМД) как секторный маркер, а не как данные. Эти шесть байт следующие:

  • 1-ый. Номер дорожки с 0 по 79 включительно.

  • 2-ой. Номер стороны или номер головки. Верхняя сторона обозначается 0, нижняя - 1.

  • 3-ий. Номер сектора на треке с 1 по 18 включительно.

  • 4-ый. Размер сектора в байтах: 0,1,2 или 3 обозначают соответственно, 128-,256-,512- или 1024- байта в секторе. По умолчанию формат DOS имеет 512 байт в секторе.

  • 5-ый и 6-ой. CRC байты для контроля при помощи циклического избыточного кода возможных искажений.

Четыре первых байта секторного ID маркера обозначаются как CHRN. CRC-байты фактически содержат 16-битную контрольную сумму CHRN-байт, которая вычисляется, когда сектор записывается. Когда же сектор читается, контрольная сумма перевычисляется для прочитанных из CHRN данных и сравнивается с данными из байтов CRC. Любое расхождение вызывает CRC-ошибку ID маркера.

Следующими за ID маркером идут несколько меточных байт маркера начала данных (BOD) и 512 байт собственно данных. Еще два проверочных байта CRC следуют за данными. Они содержат контрольную сумму 512 байт данных, вычисленную при записи сектора.

Расхождение между контрольными суммами, записанной в CRC байтах и вычисленной при чтении, определяется как CRC-ошибка данных. После CRC-байтов первого сектора имеется межсекторный промежуток, затем идут другие сектора и межсекторные промежутки.

Теперь нам понятна идея метода защиты, основанного на использовании CRC-ошибки данных. Ее возникновение достигается следующим образом. Стандартная операция записи данных в сектор включает шесть шагов:

  • Включение мотора НГМД и короткое ожидание его разгона.

  • Выполнение операции поиска заданного сектора и ожидание прерывания, указывающего на завершение данной операции.

  • Инициализация микросхемы прямого доступа в память (DMA) 8237 для пересылки данных из памяти.

  • Посылка команды записи микросхеме контроллера НГМД 765 и ожидание прерывания, указывающего на окончание пересылки данных.

  • Получение информации о статусе контроллера НГМД.

  • Выключение мотора.

На дистрибутивной дискете при выполнении операции записи в определенный сектор во время четвертого шага изложенной выше процедуры производится кратковременное отключение мотора НГМД, что приводит к искажению записываемых данных. Контрольная же сумма данных в CRC-байтах будет иметь значение, которое было получено по исходным передаваемым данным. Так что при чтении данных из этого сектора и подсчета их контрольной суммы полученное значение, будет отличаться от содержащегося в CRC-байтах. Таким образом, контролирующая часть защищаемой программы при попытке чтения заданного сектора обнаружит CRC-ошибку данных и определит дискету как дистрибутивную.

При копировании ранее искаженные данные на заданном секторе воспринимаются как истинные и по ним подсчитывается соответствующая контрольная сумма. Следовательно, при чтении данного сектора на скопированной дискете CRC-ошибка данных не возникает, и контролирующая часть защищаемой программы дискету отвергает.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]