Патрик Гёлль - Магнитные карты и ПК
В конце концов, мы уже поступали так несколько лет назад, когда взялись обучить наших читателей считывать и записывать информацию на чип-карты.
С другой стороны, мы решительно не можем согласиться, что так называемые важные приложения настолько уязвимы, что любой дилетант способен взломать их с помощью простой магнитофонной головки, подключенной к ПК. Если бы это было так, все секреты уже давно стали бы общим достоянием.
ДОЛЖЕН ЛИ КОДЕР БЫТЬ ОБЯЗАТЕЛЬНО АВТОМАТИЗИРОВАННЫМ?Хотя это мнение широко распространено (и не без оснований), ответ на него отрицательный. В самом деле, на рынке встречаются считывающие и записывающие устройства (кодеры), работающие при проведении карты вручную. При этом в них используются некоторые технические хитрости, которыми не запрещено воспользоваться и нам.
Автоматизированная версия, бесспорно, имеет то преимущество, что обеспечивает постоянную и точную скорость прохождения карты перед записывающей головкой. Однако можно получить сравнимый результат и при помощи простого датчика, способного постоянно улавливать точное положение карты.
Если только в кодирующих схемах будет использован весь этот опыт, то запись, осуществленная вручную, окажется так же стабильна, как и в автоматизированном варианте. Рискуя вызвать гнев специалистов, мы все-таки зададимся вопросом: «А так ли уж необходимо стабильное кодирование?»
И снова ответом будет категорическое «нет» — по крайней мере, для наиболее распространенного случая, когда карта предназначена для считывания в ручном считывающем устройстве.
Ручные считывающие устройства, начиная с описанных в главе 3, настолько «терпимы» к скорости прохождения карт и ее изменениям, что без проблем воспринимают карты, стабильность параметров кодирования которых катастрофична.
Как ни странно, это распространяется и на значительное число автоматизированных считывающих устройств просто потому, что они часто построены на тех же самых схемах декодирования, что и ручные! Как говорится, кто может больше, тот может и меньше; кстати, такой метод работы повышает надежность и экономит средства. Так зачем от него отказываться?
Единственное настоящее неудобство такого подхода заключается в невозможности автоматического отсеивания подозрительных карт или, наоборот, появляется возможность отсеивания и некоторого числа вполне нормальных карт со всем вытекающим отсюда недовольством пользователей.
В качестве резюме можно сказать, что применение для кодирования той же самой простейшей механики, что и для считывания, допустимо только в теории, но никак не на практике.
ТРАНСФОРМАЦИЯ СЧИТЫВАЮЩЕГО УСТРОЙСТВА В КОДЕРНесмотря на все вышесказанное, не стоит и мечтать напрямую использовать для кодирования устройство, которое уже послужило нам для считывания.
Этого не следует делать по той простой причине, что для считывания мы применяли головку от кассетного магнитофона, воздушный зазор которой едва покрывает половину ширины дорожки.
Без сомнения, удобно иметь одновременно головки для считывания и для записи. Поэтому лучше остановиться на решении, состоящем в добавлении записывающей головки к уже существующему считывающему устройству.
Учитывая ограничения, налагаемые шириной дорожки, речь может идти практически только о головке записи-считывания от катушечного монофонического двухдорожечного магнитофона.
Мы проводили весьма успешные эксперименты с помощью допустимо изношенной головки, снятой со старого магнитофона Sony (сопротивление приблизительно 400 Ом), а также другой настолько старой головки, что нам не удалось выяснить ее происхождение (сопротивление 2700 Ом).
Адаптация к существующему считывающему устройству состоит в том, чтобы установить записывающую головку точно напротив считывающей.
Если вам повезло и у вас есть промышленное считывающее устройство с двумя головками, считывающее карты вне зависимости от направления их вставления, то для установки записывающей головки вместо одной из считывающих достаточно изготовить несложную адаптирующую подставку.
Если вы предпочли построить самодельное считывающее устройство по чертежам, приведенным в данной книге (рис. 3.13), то для его доработки достаточно вырезать окошко в пластине, противоположной считывающей головке (деталь В) и зафиксировать на ней записывающую головку с помощью маленьких алюминиевых уголков.
Как это выполнить, показано на рис. 4.1–4.3.
Рис. 4.1. Вариант установки записывающей головки на промышленном считывающем устройстве
Рис. 4.2. Установка записывающей головки на самодельном считывающем устройстве
Рис. 4.3. Самодельное устройство записи-считывания (вид сверху)
Отметим, что для обоих случаев не требуется пружинящий головкодержатель, поскольку карта может прижиматься к записывающей головке за счет головки считывания. Необходимо только, чтобы записывающая головка немного (приблизительно на 2 мм) выступала в окошко за внутреннюю поверхность крепежной пластины.
Конечно, необходимо предусмотреть средства регулировки как для центрирования головки напротив дорожки, так и для обеспечения надежного контакта с картой.
Как правило, для этого достаточно, чтобы диаметры отверстий с запасом превышали диаметры крепежных винтов; можно также использовать несколько шайбочек.
УНИВЕРСАЛЬНЫЙ УСИЛИТЕЛЬ ЗАПИСИЗапись информации на карту с изменением направления магнитного потока предполагает, что ток должен протекать через обмотку головки в двух направлениях. Запись должна осуществляться до насыщения, величина тока будет существенно больше, чем при аудиозаписи.
При необходимости закодировать карты с высокоэнергетическими магнитными полосками, то есть с высокой коэрцитивностью (HiCo ~= 2750 Э), потребуется еще больший ток — до нескольких десятков миллиампер.
Все это, конечно, осуществимо при условии, что магнитный сердечник головки в состоянии выдержать такое возбуждение, не входя в режим насыщения. При отсутствии подробных характеристик каждой используемой головки единственный способ убедиться в вышесказанном — проведение реальных экспериментов.
С другой стороны, совершенно бесполезно пытаться закодировать карты HiCo с коэрцитивной силой 4000 Э при помощи простых магнитофонных головок, именно этим и обеспечивается безопасность таких карт.
С учетом вышесказанного мы и исследовали схему, представленную на рис. 4.4, в которой предпринято множество предосторожностей, учитывающих все возможные ситуации.
Рис. 4.4. Схема усилителя записи
В ней мы используем очень распространенную и недорогую интегральную схему. TDА2030, обычно предназначенную для создания аудиоусилителей с выходной мощностью до 14 Вт и током до 3,5 А.
С помощью этой ИС можно проводить эксперименты и с весьма специфическими головками, имеющими очень низкие сопротивления.
Для работы ИС требуется двухполярное напряжение питания ±12 В, а иногда — при необходимости — и ±18 В. В отдельных случаях достаточно иметь две батарейки по 9 В.
Поскольку ИС TDA2030 обладает большим коэффициентом усиления, то с разомкнутым контуром отрицательной обратной связи она может работать в качестве компаратора. Порог переключения схемы фиксируется с помощью простого диода и составляет приблизительно 0,7 В, что более чем вдвое меньше нижнего уровня выходного напряжения логической 1 параллельного порта ПК. Ниже мы рассмотрим ситуацию подачи на этот усилитель сигнала с линии интерфейса Centronics компьютера. Пока же усилитель может управляться с помощью импульсов самого разного происхождения.
Во всяком случае, следует запомнить, что предельным входным TTL-уровням (0 и +5 В) на выходе будут соответствовать уровни, составляющие приблизительно +9 и -18 В. Несмотря на то что к выходу ИС можно напрямую подключать головку сопротивлением 250–500 Ом, следует ограничить ток с помощью резистора, соединенного с ней последовательно. Наши исследования показали, что если ограничиться кодированием карт с низкоэнергетическими магнитными полосками (LoCo), то величина сопротивления должна быть не менее 18 кОм. На практике мы рекомендуем величину, близкую к 2 кОм, хотя, повторяю, вполне допустимо и прямое подключение головки к усилителю, а для кодирования карт HiCo оно даже необходимо.
Чертеж печатной платы усилителя записи представлен на рис. 4.5. Размеры платы, что уже стало привычным, должны позволять разместить ее в непосредственной близости от записывающей головки.