Устройство считывания SIM-карт для ПК

Самые интересные манипуляции с мобильным телефоном требуют считывания и записи информации на его SIM-карте.

Эта тема подробно разбирается в главе 5, где также представлены различные необходимые для ее реализации пакеты программ, которые можно найти в продаже.

Здесь же ограничимся описанием того, как изготовить предельно упрощенное считывающее устройство, которое в сочетании с любым IBM-совместимым ПК, способным работать в MS DOS 3.30 или выше, позволит провести множество очень интересных экспериментов (естественно, под полную ответственность пользователя).

Любое устройство для считывания чип-карт протокола Т = 0 теоретически позволяет выполнить любые манипуляции, однако гораздо проще и удобнее воспользоваться специальным инструментарием.

Будучи асинхронной чип-картой, SIM-карта мобильного телефона является настоящим микрокомпьютером, обладающим центральным процессором, памятью, периферийными устройствами и программным обеспечением. Она общается со считывающим устройством (или терминалом), в котором размещается, при помощи двунаправленной последовательной шины данных, в то время как ее работа синхронизируется внешним тактовым генератором.

Для «общения» с асинхронными картами было разработано множество протоколов, однако самым распространенным является протокол Т - 0. Наличие в нем многих точек соприкосновения с протоколом RS-232 позволяет добиться совершенно удивительных результатов «в обход» обычного последовательного порта благодаря простейшей схеме сопряжения (интерфейса).

Как правило, устройства для считывания асинхронных карт построены на микроконтроллере, в котором запрограммирована настоящая операционная система (иногда говорят об операционной системе считывающего устройства ROS - Reader Operating System).

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

Таким образом, в состав схемы, представленной на рис. 4.8, входит стабилизатор напряжения (5 В), тактовый генератор (3,58 МГц), а также несколько буферов, задача которых - согласование уровней напряжения и разделение входящих (TXD) и выходящих данных (RXD).

Топология односторонней печатной платы приведена на рис. 4.9, схема размещения элементов - на рис. 4.10, а перечень элементов - в табл. 4.3. Собранная печатная плата (см. рис. 4.11) подключается к источнику питания (элемента питания 9 В может быть вполне достаточно), а также к последовательному порту ПК (СОМ1 или COM2 в зависимости от приложений).

Для этого используется кабель, так называемый удлинитель для монитора, соединяющий контакт в контакт разъем DB9 типа «вилка» с разъемом DB9 типа «розетка», хотя можно подключить схему к последовательному порту ПК и напрямую.

Таблица 4.3. Перечень элементов к рис. 4.10

Наименование Обозначение Номинал Примечание
Рсшстиры hi 10 КОМ
R3 ТОкОм
R4 1 МОм
R5 2,2 кОм
R6 15 0м
R7 6800м
Конденсаторы О 100мкФ х 10В Электролитический, вертикальное исполнение
С2 33 пФ
сз 33 пФ
С4 0,47 мкФ
С5 0,1 мкФ
Интегральные D1 74 HCT 04
микросхемы D2 LM 2931Z 5
Пилупроиодники HL1 Красный светодиод
VD1 4,7 В/0,25 Вт Стабилитрон
VT1 2N 2222
Прочгч- ZQ1 3,58 (или 3,579) МГц Кварцевый резонатор
Колодка клеммная на два контакта (5,08 мм)
Разъем DB9 - розетка
Картоприемник (ITT -

CANNON)

Разъемная колодка с двумя рядами квадратных угловых штырьков
Два десяти контактных разъема НЕ10 с заправкой плоского 10-лроводного кабеля длиной 10-20 см
Источник питания 9-12 В или элемент питания 9 В
Кабель «удлинитель для монитора» с разъемом DB9 вилка/розетка

Картоприемник (модель марки ITT-CANNON с контактом NO1, замыкающимся при вставлении карты) подключается к дополнительной плате, топология которой приведена на рис. 4.12, а схема размещения элементов - на рис. 4.13 (следует обратить внимание на пять перемычек, которые надо будет припаять в первую очередь).

Соединение этих двух модулей производится при помощи широ- • ко распространенного разъема НЕЮ. При этом используются двухрядные разъемные колодки с квадратными угловыми штырьками и плоский кабель с двумя десятиконтактными розетками НЕЮ, их ключи должны быть направлены в одну сторону, а соединение производиться контакт в контакт. Подобного рода соединение гарантирует совместимость с инструментальным комплектом, описанным в моей книге «Чип-карты: Устройство и применение в практических конструкциях» (М.: ДМК, 2000).

Внешний вид собранной дополнительной платы с картоприемни-ком приведен на рис. 4.14.

Так как в данном картоприемнике используются только те контакты, которые необходимы для работы асинхронных карт, его не рекомендуется применять в любой другой схеме, предназначенной для синхронных карт (например, для телевизионных карт).

Приведенные ниже исходные тексты программ также содержатся в каталоге BASIC. Не следует пытаться запускать их в простом интерпретаторе GWBASIC или QBASIC. Если в исходный текст вносятся какие-либо изменения (например, вместо СОМ1 используется COM2), то необходимо откомпилировать его с помощью Turbo Basic (этот вопрос подробно рассматривается в моей книге «BASIC pour microcontroleurs et PC»).




Программа INVISO.EXE позволяет проводить-любые манипуляции с картами, работающими по обратному соглашению (ответ на сброс начинается с байта 3Fh). Для карт, работающих по прямому соглашению (ответ на сброс начинается с байта ЗВп), используется программа DIRISO.EXE.

Как только карта вставлена в устройство для считывания (по приглашению, поступившему от программы), она непроизвольно выдает группу байтов - ответ на сброс, или ATR (Answer То Reset). Этот ответ появляется на экране, и часто он оканчивается на 90 00 (но это не обязательно).

Затем карта ждет команд, которые необходимо ввести с клавиатуры. Все ответы карты будут постепенно отображаться на экране в окружении звездочек (во избежание путаницы с тем, что набиралось на клавиатуре).

Любая команда протокола Т = 0 состоит из заглавного блока (заголовка) из пяти байт, за которым следует блок данных. Все выражается в шестнадцатеричном формате. Пять байт заголовка соответственно именуются CLA INS, PI, Р2 и LEN и представляют собой следующее:

• CLA - «класс» карты, например, BCh для банковской карты или карты VITALE, и AOh для SIM-карты;

• INS - операционный код команды, которую должна выполнить карта. Для SIM-карт эти коды уже были рассмотрены в главе 3 (см. раздел «SIM-карта»);

• Р1 и Р2 уточняют, что должна делать карта, или по умолчанию остаются в виде 00 00;

• LEN указывает длину блока данных, посылаемых карте или ожидаемых от нее.

В случае «входящей» команды байты данных отправляются после кода LEN, но только после того, как карта ответила байтом процедуры (часто это бывает просто повторением операционного кода команды).

В случае «выходящей» команды блок данных посылается картой по получении байта LEN и передачи байта процедуры. Практически во всех случаях карта завершает выполнение команды отправкой двух байт отчета (SW1 и SW2). Если все прошло удачно, то отчет будет послан в виде 90 00.

Таким образом, с SIM-картой можно сделать многое. Но следует иметь в виду, что некоторые некорректные манипуляции могут надолго или окончательно заблокировать карту или даже повредить ее физически.

Стандарт GSM 11.11 содержит детальное описание файлов и команд, позволяющих проводить операции считывания и записи. Этот вопрос будет рассмотрен в следующей главе.

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

Предположим, что кодом является 1234 (в новой карте 0000). Переведем код ASCII в шестнадцатеричный формат и дополним его до восьми цифр, набрав FFh. Получим:

31 32 33 34 FF FF FF FF

Чтобы представить код карте (после получения ее ответа на сброс), набираем:

АО 20 00 01 08

Как только карта ответит 20 (байт процедуры), введем:

31 32 33 34 FF FF FF FF

Если код верный, то в ответ карта отправит 90 00. Если код уже был дезактивирован и карте больше не нужен - 98 08.

Чтобы дезактивировать этот код, только создающий неудобства для проводимых экспериментов, можно набрать следующее:

АО 26 00 01 08

Затем, после получения байта 26, введите:

31 32 33 34 FF FF FF FF

Код всегда можно снова активировать, если набрать: АО 28 00 01 08

А затем, после получения байта 28, опять ввести:

31 32 33 34 FF FF FF FF

Помимо этих манипуляций, которые без труда можно выполнить при помощи разработанных мною программ, приведенных в данной книге, рассматриваемое устройство для считывания вполне совместимо с некоторыми общедоступными программами, такими как SimScan, которую можно найти в Internet. Эта программа в нескольких вариантах содержится на компакт-диске в каталоге INTERNET.