1. Типы применяемых карточек
В сети МГТС установлены карточные таксофоны, принимающие карточки по
меньшей мере трех типов. Внешне карточки разных типов можно различить по форме контактов чипа:

  тип 1 тип 2 тип 3


Первая и вторая карточки отвечают стандартам ISO 7816-1 и ISO 7816-2
соответсвенно. Третий тип пока мной неисследован. Карточки содержат электрически
программируемое  ПЗУ емкостью 256 * 1 бит с последовательной побитной выдачей
информации и внутренним   инкрементным счетчиком адреса. Операция записи производит изменение
состояния ячеек  памяти "в одну сторону", обратное изменение (стирание) интерфейсом
карточки не предусмотрено. Память можно было бы стереть ультрафиолетом, но чип закрыт
контактной панелью и   специальной смолой. Можно применить для стирания чипа жесткое
излучение. Казалось бы, можно запрограммировать заново всю карточку, однако первые 96 бит
памяяти, где прошиты тип карточки и код производителя, защищены от записи предохранителем,
пережигаемым на заводе после прошивки чипа.
По этим причинам использованную карточку нельзя "перезарядить", чтобы она работала, как новая.

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

замков и т. п. целей.
2. Физический стандарт ISO
На рисунке показана нумерация контактов чипа карточки

  нумерация контактов


Соответствие контактов сигналам:
 

Тип ISO 7816-1 Тип ISO 7816-2
1 Vcc +5V 1 Vcc +5V
2 R/W 2 Reset
3 Clock 3 Clock
4 Reset 4
5 Gnd 5 Gnd
6 Vpp +21V 6
7 I/O 7 I/O
8 Fuse 8


Карточки типа 2 совместимы сверху вниз с карточками типа 1.
Для распознавания
типа карточки таксофон начинает
работать по стандарту 2, и если вместо данных идут только одни единицы,
переходит на тип 1.
Диаграмма сигналов для карточки типа 1:

 

+21V                                     _____________
+5V ____________________________________|             |_________________ Vpp
                                        :             :
+5V                  ___________________:_____________:_________________ Reset
0V  ________________|                   :             :
                    :                   :             :
+5V     ____        :      ____         :       ______:______
0V  ___|    |_______:_____|    |________:______|      :      |__________ Clock
       :    :       :     :    :        :      :      :      :
+5V    :    :       :     :    :        :______:______:      :           _
0V  ___:____:_______:_____:____:________|      :      |______:__________ R/W
       :    :       :     :    :        :      :      :      :
+5V    :    :       :_____:    :________:      :      :      :__________
0V  XXXXXXXXXXXXXXXXX_____XXXXXX________XXXXXXXXXXXXXXXXXXXXXX__________ Out
       :    :       :     :    :        :<-----><---->:      :
       :    :       :     :    :        :10 to   10 to       :
       :    :       :     :    :        :50 ms   50ms        :
        Reset        Bit 1        Bit2                           Bit 3
        card        reading      reading  Bit2 writing to 1     reading


В "чистом" виде ячейки памяти чипа типа -1 содержат 0, операция записи
прошивает в ячейку 1.
 
Диаграмма сигналов чтения для карточки типа 2:
 

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


В "чистом" виде ячейки памяти чипа типа -2 содержат 1, запись меняет
значение на 0.
Карточки типа 2 не требуют для записи подачи напряжения программирования

+21В, так как
имеют встроенный умножитель напряжения.
Диаграмма сигналов последовательной записи для карточки типа 2:

 

___________|     |______________________________|     |_______________ Reset
            :                                    :
    ___     :           _____           ___      :           _____
___|   |____:__________|     |_________|   |_____:__________|     |____ Clk
   :        :          :     :         :   :     :          :     :
___:________:__________:_____:_________:___:_____:__________:_____:_____
n  |      n+1          |     n+2       |   :    n+3         |     :      (Addr)
---'--------:----------'-----:---------'---:-----:----------'-----:-----
            :          :     :             :     :          :     :
________   _:          :     : ____________:  ___:          :     :
________XXX_XXXXXXXXXXXXXXXXXXX____________ XX___XXXXXXXXXXXXXXXXXXXXXXX I/O
  n      n+1           :     :     n+1        n+2           :     :
                       :     :                              :     :
                        write                                write


Диаграмма сигналов записи со сбросом адреса в 0 для карточки типа 2:
 

______|     |____________________|     |_________________________________  Rst
      :                          :
      :            _______       :              _______        ___
______:___________|       |______:_____________|       |______|   |______  Clk
      :           :       :      :             :       :      :   :
      :           :       :      :             :       :      :   :
<------------------------- address n ------------------------>:<--- n+1 ------
      :           :       :      :             :       :          :
      :           :       :      :             :       :          :
______:           :       :______:             :       :__________: _____
______XXXXXXXXXXXXXXXXXXXXX______XXXXXXXXXXXXXXXXXXXXXXX__________XX_____  I/O
                  :       :  n                 :       :     n        n+1
                  :       :                    :       :
                    Write                        Erase

Для карточек типа 2 следует учитывать, что счетчик адреса не сбрасывается в

диапазоне адресов 0 - 7.

  3. Что записано на карточках?

Alien AKA Dimik (dimik@infopro.spb.su):   

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

        Примеры памяти карт

   Эта карта на 50 единиц закончилась. Номер 0050415503.
   Годна до 30.09.98
   E9, 30, FF, 01, F1, E2, 80, C0
   00, 00, 00, 00, 00, FF, 18, EA

   Эта карта на 400 единиц также пуста. Номер 0400155921.
   Годна до 30.09.98
   E9, 30, FF, 01, 88, A7, 9B, E8
   00, 00, 00, 00, 00, FF, D9, 79

   Вот карта на 1000 единиц. Осталось 998. Номер 1000013039.
   Годна до 31.12.99
   E9, 30, FF, 01, F7, 3F, 59, DC
   00, 01, 7F, 0F, 3F, FF, 68, 6B

   Потом я позвонил по этой карте. Осталось 6 единиц.
   E9, 30, FF, 01, F7, 3F, 59, DC
   00, 00, 00, 00, 3F, FF, 68, 6B

   Наконец, она закончилась.
   E9, 30, FF, 01, F7, 3F, 59, DC
   00, 00, 00, 00, 00, FF, 68, 6B

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

   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
   миллионов карт:
   * На 25 единиц с номерами от 0025000000 до 0025999999
   * На 50 единиц с номерами от 0050000000 до 0050999999
   * На 100 единиц с номерами от 0100000000 до 0100999999
   * На 200 единиц с номерами от 0200000000 до 0200999999
   * На 400 единиц с номерами от 0400000000 до 0400999999
   * На 1000 единиц с номерами от 1000000000 до 1000999999

       (С) Alien AKA Dimik (dimik@infopro.spb.su)

В принципе карточки МГТС организованы подобным же образом, единственное

отличие состоит в разных

кодах идентификации карточки, ессно, они для каждой зоны разные.



4. Читалка карточек
Принципиальная схема читалки, подключаемой в параллельный порт РС:

  схема читалки


Внешний вид макета-читалки иллюстрирует фото:

  макет-читалка


Схему можно упростить, исключив транзисторы и прочие детали, относящиеся
к отработке записи карточек
типа 1 (запись карточек типа 2 все равно будет работать).

Используются технологии uCoz