English version

Домой   Новости   Радио   Карточки   Кодграберы   Мобилки   Телефония   АТС   Пейджинг   Транки   Жучки   Форум


Google

Питерские таксофонные карты

Приведенная в этом документе информация не может являться конфиденциальной, и ее публикация не является нарушением чьих-либо прав, т.к. это всего лишь перевод на русский язык и выжимка из открытых международных стандартов, а также описание конкретных принципов работы отдельно взятой таксофонной карты. Я не использовал никаких внутренних служебных документов компании "СПТ". Это результат моих исследований. При желании любой человек может проделать всю эту работу и придти к аналогичным выводам. Я всего лишь хочу сэкономить время людям, интересующимся современными карточными технологиями. Автор не несет ответственности за использование данного документа кем-либо в противозаконных целях, и за убытки, понесенные при использовании изложенной информации. Эту информацию можно использовать в любых законных целях без ограничений. Если у Вас есть, что добавить или уточнить, просьба сообщить мне. По всем вопросам можно писать мне на адрес dimik@infopro.spb.su

Введение

Не так давно на Российского потребителя обрушился целый поток новых платежных средств: таксофонные карты, магнитные карты метро, банковские карты, и т.д. Коснемся пока только таксофонных карт. Наверное, каждый задавался вопросом, как же устроена и как работает таксофонная карта, и можно ли ее обмануть. Ответ на второй вопрос пока умолчим, а вот на первый попробуем ответить в доступной и популярной форме. В данном документе приведен только алгоритм чтения карточек, но ничего не сказано про их запись, то есть про сам процесс уменьшения количества оставшихся единиц. Поскольку эксперименты с уменьшением собственных денег мне по понятным причинам проводить не хочется, информация по этому поводу у меня скудна и не проверена. Поскольку при желании наиболее общую информацию можно найти в Интернете, то разговор пойдет конкретно про таксофонные карты компании "Санкт-Петербургские таксофоны". Для других карт приведенная информация может не соответствовать действительности. Если Вы захотите разобраться в работе таксофонных карточек в своем городе, то желательно сначала прочитать документ на ftp://nic.funet.fi/pub/doc/telecom/phonecard/chips, где описаны наиболее часто встречающиеся в мире карточки.

Таксофонная карта соответствует международному стандарту ISO 7816 в части 1 и 2.

ISO 8716-1:1987     Карточки идентификационные.
                    Карточки на интегральных схемах с контактами.
                    Часть 1. Физические характеристики.
СТК 1       код B        4 с.         изд.1

ISO 8716-2:1988     Карточки идентификационные.
                    Карточки на интегральных схемах с контактами.
                    Часть 2. Размеры и расположение контактов.
СТК 1       код D        7 с.         изд.1

Кристалл на карте представляет собой электрически программируемое ПЗУ с последовательным побитным выводом информации, изготовленное по технологии NMOS. В этом ПЗУ используется 128 бит. Чтобы перепрограммировать карту, нужно стереть информацию из ПЗУ, но чип защищен от ультрафиолетового облучения специальной смолой. Даже если Вам удастся стереть чип, то нужно будет перепрограммировать специальную область производителя - первые 64 бита, а она защищена от записи плавким предохранителем, который пережигается на фабрике при производстве чипа. Основной способ обмана таксофонов - изготовление эмуляторов, т.е. устройств, эмулирующих работу настоящей карты. Это довольно легко сделать на современных однокристальных микроЭВМ. Основной способ защиты таксофонов от таких эмуляторов - измерение межэлектродных сопротивлений, емкостей и сравнение их с номинальными, что позволяет таксофону отличить эмулятор от настоящей карты.

Расположение и назначение контактов на карте

,-------------+-------------,
|   1         |         5   |
+-------\     |     /-------+
|   2    +----+    +    6   |
+--------|         |--------+
|   3    +----+----+    7   |
+-------/     |     \-------+
|   4         |         8   |
'-------------+-------------'

1 : VCC = 5V - Питание
2 : Reset (входной) - Сигнал инициализации карты
3 : Clk (входной) - Тактовые импульсы
4 : Не используется
5 : GND (земля)
6 : Не используется
7 : I/O - (вход и выход) - Побитовый ввод и вывод с карты
8 : Не используется

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

Чтение информации с карты

Внутри карточки находится счетчик адреса разрядностью 9 бит. То есть после чтения каждых 512 бит все начинается сначала. Счетчик может быть только увеличен. Если Вы хотите считать бит с адресом меньше текущего, то счетчик нужно сбросить в 0, а затем увеличить до необходимого значения. Операция сброса выглядит так: Надо установить высокий уровень сигнала Reset (2 контакт карты), а затем установить и сбросить сигнал Clk. После сброса сигнала Reset на выходе (7 контакт карты) будет доступен бит с адресом 0.

      __________________
_____|                  |_____________________________________ Reset
     :                  :
     :        _____     :  _____       _____       _____
_____:_______|     |____:_|     |_____|     |_____|     |_____ Clk
     :       :          : :     :     :     :     :     :
_____:_______:__________:_:_____:_____:_____:_____:_____:_____
_____:___n___|_____0____:_|_____1_____|_____2_____|_____3_____ Address
     :                  :       :           :           :
_____:                  :_______:___________:___________:_____
_____XXXXXXXXXXXXXXXXXXXX_______|___________|___________|_____ Data
Bit n                      Bit 0    Bit 1        Bit2       Bit3

Теперь нужно подавать тактовые импульсы на вход Clk (3 контакт карты). По фронту импульса происходит увеличение на единицу внутреннего счетчика адреса. По спаду тактового импульса следующий бит данных появляется на выходе. Обычно удобнее представлять информацию в виде байтов. Для этого каждые 8 считанных бит группируют в байт, считая, что первым считывается наименее значащий бит. Таким образом, последовательно считывая 1,0,0,1,0,1,1,1, получим байт 0xE9.

Чтение через параллельный порт компьютера

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

Аппаратные средства

Аппаратные средства представляют собой ответную часть разъема параллельного порта, кусок монтажного провода и считывающее устройство, которое может представлять собой обыкновенный кусок текстолита с отверстиями, в которые вставлены штырьки. Правда, в этом случае карточку надо будет прижимать руками. Соединим контакты параллельного порта с контактами карточки в соответствии с приведенной таблицей:

параллельный порт

карточка

2 : D0 (выходной)

2 : Reset

3 : D1 (выходной)

3 : Clk

11 : Busy (входной)

7 : I/O

25 : Gnd

5 : Gnd

Здесь не указан контакт 1 карточки - питание +5В. Его можно взять с разъема клавиатуры или просто от батарейки.

Программные средства

Используем порт LPT1. Запись в принтерный порт осуществляется через порт 0x378. Записанный байт появляется на выходных контактах. Мы используем бит 0 для сигнала Reset и бит 1 для сигнала Clk. Чтение выполняется через порт 0x379. В самом старшем бите появится инвертированное значение с входного контакта 11 (Busy). Короче, вот готовая программа.

Что именно записано на карте

Теперь мы и подошли к самому интересному месту - назначению каждого бита, записанного на карте. Естественно, что на картах других городов это назначение будет другим, но мы, как обещали, говорим о питерских карточках. На карточке используются только 16 байт. Все остальные равны 0xFF. В процессе исследований было проанализировано около 300 карточек.

Примеры дампов памяти карт

Назначение полей

  1. Первые 4 байта - какой-то идентификатор. На всех картах E9, 30, FF, 01.

  2. Следующие 4 байта - серийный номер карты. Расположив биты в байтах в обратном порядке, а затем и сами байты, получим 32 разрядное целое без знака. К примеру, байты F7, 3F, 59, DC с обратным порядком бит выглядят как EF, FC, 9A, 3B. Получим номер карты 0x3B9AFCEF или 1000013039 в десятичном виде. Нетрудно заметить, что номер, напечатанный на карте, всегда состоит из 10 цифр, а первые 4 цифры - емкость карточки.

  3. Следующие 5 байт - количество единиц, оставшихся на карточке. Формат хранения очень интересный: используется количество единичных битов в байте, начиная с младшего. Соответственно значение байта 07 соответствует 3 единицам, значение 1F - пяти, а 7F - семи единицам. Максимальное количество единиц, хранящихся в байте - семь. Соответственно используется восьмеричная система счисления. Таким образом, байты 00, 01, 7F, 0F, 3F соответствуют 01746 в восьмеричной системе или 998 единиц в десятичной системе. Максимальное количество единиц может выражаться числом 77777 в восьмеричной или 32767 в десятичной системе.

  4. Следующий байт всегда равен FF. Похоже, он не используется.

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

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

Как уже говорилось, из 10 цифр номера первые 4 выражают емкость карты. Оставшиеся 6 не идентифицируют карту однозначно, т.к. уже выпущено более миллиона карт. Всего при подобной системе нумерации может существовать 6 миллионов карт:

Copyright © 1998 by Alien AKA Dimik (dimik@infopro.spb.su)