== Журнал Phrack ==
Том седьмой, выпуск сорок восьмой, файл 10 из 18
Электронные телефонные карточки: как сделать сами!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Я полагаю, что Швеция - не единственная страна, в которой используется электронная
системы телефонных карточек от Schlumberger Technologies. Эта статья будет
объясните немного о картах, которые они используют, и о том, как они работают. В конце
в этой статье вы также найдете файл в кодировке UUEncoded, содержащий исходный код
код программы микроконтроллера PIC16C84, который полностью эмулирует
Телефонная карта Schlumberger и, конечно же, макеты печатных плат
+ список компонентов ... Но прежде чем мы начнем серьезно говорить об этом
важно, сначала я должен полностью прояснить, что все, что вы используете
информация для, полностью ВАША ответственность, и я не могу удерживаться
несет ответственность за любые проблемы, которые может вызвать использование этой информации
вам или кому-то еще. Другими словами: я отдаю это БЕСПЛАТНО, и
Я не жду НИЧЕГО взамен!
Оригинальная телефонная карта:
~~~~~~~~~~~~~~~~~~~~~~~~~~~
Поскольку мне, вероятно, было бы трудно написать лучшую статью
чем тот, который недавно написал Стефан Боссон из Франции, я не буду
попытаться дать лучшее объяснение, чем это; Вместо этого я буду
включить его в этот файл, но я хочу прояснить, что
Следующая часть о технических характеристиках карт не написана
от меня: Просто части в кавычках добавлены мной ... Вместо этого я
сконцентрируемся на объяснении, как построить свою собственную телефонную карту
эмулятор и как меры безопасности в системе таксофона, созданные
Работа Schlumberger Technologies, и как ее обмануть ... Но сначала давайте
ознакомьтесь с техническими характеристиками различных «умных» модулей памяти
карточные системы, используемые для таксофонов.
================================================== =============================
Что нужно знать об электронных телекартах
================================================== =============================
(C) 10-07-1993 / 03-1994
Версия 1.06
Стефан Бауссон
Почта: [email protected]-nancy.fr
Smail: 4, Rue de Grand; F-88630 CHERMISEY; Франция
Телефон: (33) -29-06-09-89
-------------------------------------------------- -----------------------------
Любые предложения или комментарии по поводу телефонных карт и смарт-карт приветствуются.
-------------------------------------------------- -----------------------------
Содержание
---------
I) Карты от Gemplus, Solaic, Schlumberger, Oberthur:
I-1) Введение:
I-2) СХЕМА микросхемы:
I-3) РАСПОЛОЖЕНИЕ разъема:
I-4) Основные характеристики:
I-5) ВРЕМЕННЫЕ ДИАГРАММЫ:
I-6) КАРТА памяти карт из Франции и Монако:
I-5) КАРТА памяти карт других стран:
II) Карты от ODS: (Немецкие карты)
II-1) Введение:
II-2) Распиновка:
II-3) Основные характеристики:
II-4) Временные диаграммы:
II-5) Карта памяти:
II-6) Электрические характеристики:
III) Схема читателя:
IV) Программа:
-------------------------------------------------- -----------------------------
I) Карты от Gemplus, Solaic, Schlumberger, Oberthur: (французские карты)
================================================== ====================
I-1) Введение:
------------
Не думайте, что телефонные карты электроники
совершенно секретные вещи, и что вы не можете прочитать информацию, которая
это внутри. Это совершенно неверно, поскольку на самом деле электронная телефонная карта
не содержать никакой секретной информации, такой как кредитные карты и электронные
Телефонная карта - это не что иное, как 256-битное СППЗУ с последовательным выходом.
Кроме того, не думайте, что вы собираетесь их пополнять, когда вы
понять, как они работают, так как для этого вы должны сбросить 256 бит
карт, удалив всю карту. Но чип покрыт УФ
непрозрачная смола, даже если иногда вы видите ее прозрачной! Даже если
вы были достаточно умны, чтобы стереть 256 бит карты, которые вы должны
запрограммировать область производителя, но это совершенно невозможно, так как эти
первые 96 битов защищены от записи предохранителем, который срабатывает после
программирование карты на заводе.
Тем не менее может быть очень интересно изучить, как эти карты
работать, чтобы увидеть, какие данные находятся внутри и как данные отображаются
внутри или, например, чтобы увидеть, сколько единиц осталось внутри. Кроме того
существует огромное количество применений этих карт, когда есть
используются (конечно, только для личного использования), так как вы можете использовать их как ключевые
чтобы открыть дверь, или вы также можете использовать их как ключ для защиты программы,
так далее...
Эти телекарты были созданы в 1984 году и в настоящее время
конструкторы решили построить эти карты по технологии NMOS, но теперь,
они планируют к 1994 году заменить всех читателей на кабинки и использовать
КМОП-технология. Также они планируют использовать EEPROM для защиты карт и
добавить много полезной информации, и, возможно, вы будете использовать телефонные карточки для
купить вам хлеб или что-нибудь еще.
Эти карты называются телекартами второго поколения.
I-2) СХЕМА микросхемы:
----------------------
.-------------------.
| |
- |> Clk |
| _ |
- | R / W |
| |
- | Сбросить |
| |
- | Предохранитель |
| |
- | Vpp |
| |
| |
'-. .- '
| |
.-------------------.
| Out | - последовательный выход
'-------------------'
I-3) РАСПОЛОЖЕНИЕ разъема:
-------------------------
ЧИП AFNOR ЧИП ISO ЧИП
---------- --------
------------- + ------------- ------------- + --------- ----
| 8 | 4 | | 1 | 5 |
| | | | | |
+ ------- \ | / ------- + + ------- \ | / ------- +
| 7 + ---- + ---- + 3 | | 2 + ---- + + 6 |
| | | | | | | |
+ -------- | | -------- + + -------- | | -------- +
| 6 | | 2 | | 3 | | 7 |
| + + ---- + | | + ---- + ---- + |
+ ------- / | \ ------- + + ------- / | \ ------- +
| 5 | 1 | | 4 | 8 |
| | | | | |
------------- + ------------- ------------- + --------- ----
NB: только позиция чипа соответствует ISO
стандартизированный, а не распиновка
ВЫВОД: 1: Vcc = 5V 5: Gnd
------ 2: R / W 6: Vpp = 21 В
3: Часы 7: ввод / вывод
4: сброс 8: предохранитель
I-4) Основные характеристики:
---------------
- Синхронный протокол.
- Технология N-MOS.
- Организация 256x1 бит.
- 96 записано защищено блокирующим предохранителем.
- Низкое энергопотребление 85 мВт в режиме чтения.
- Напряжение программирования 21 В.
- Время доступа: 500 нс
- Рабочий диапазон: -100C + 700C
- Хранение данных в течение десяти лет.
I-5) ВРЕМЕННЫЕ ДИАГРАММЫ:
---------------
+ 21В _____________
+ 5В ____________________________________ | | _________________ Vpp
::
+ 5В ___________________: _____________: _________________ Сброс
0V ________________ | ::
:::
+ 5В ____: ____: ______: ______
0V ___ | | _______: _____ | | ________: ______ | : | __________ Часы
:::::::::
+ 5В:::::: ______: ______:: _
0V ___: ____: _______: _____: ____: ________ | : | ______: __________ R / W
:::::::::
+ 5В::: _____:: ________:::: __________
0V XXXXXXXXXXXXXXXXX_____XXXXXX________XXXXXXXXXXXXXXXXXXXXXX__________ Out
:::::: <-----> <---->::
:::::: От 10 до 10 до:
:::::: 50 мс 50 мс:
Сбросить бит 1 бит 2 бит 3
чтение карты чтение Bit2 запись в 1 чтение
I-6) КАРТА ПАМЯТИ карт из Франции и Монако:
--------------------------------------------
Байт Биты Двоичный Hexa
+ ----------- + ----- +
1 1 -> 8 | | | ---> Код разработчика.
+ ----------- + ----- +
2 9 -> 16 | 0000 0011 | $ 03 | ---> французская телекарта
+ ----------- + ----- +
3 17 -> 24 | | |
+ ----------- + ----- +
4 25 -> 32 | | |
+ ----------- + ----- +
5 33 -> 40 | | |
+ ----------- + ----- +
6 41 -> 48 | | |
+ ----------- + ----- +
7 49 -> 56 | | |
+ ----------- + ----- +
8 57 -> 64 | | |
+ ----------- + ----- +
9 65 -> 72 | | |
+ ----------- + ----- +
10 73 -> 80 | | |
+ ----------- + ----- +
11 81 -> 88 | | |
+ ----------- + ----- +
12 33 -> 40 | 0001 0011 | $ 13 | ---> 120 единиц карты
| 0000 0110 | $ 06 | ---> карта на 50 единиц
| 0000 0101 | $ 05 | ---> 40 единиц карты
+ ----------- + ----- +
13-31 97 -> 248 | | | ---> Площадь юнита: каждый раз юнит
| | | используется, то бит устанавливается в "1";
| | | Обычно первые десять единиц
| | | плавлен на заводе как тест.
| | |
| | |
| | |
+ ----------- + ----- +
32 249 -> 256 | 1111 1111 | $ FF | ---> карта пуста
+ ----------- + ----- +
I-7) КАРТА ПАМЯТИ остальных карт:
-------------------------------
Байт Биты Двоичный Hexa
+ ----------- + ----- +
1 1 -> 8 | | |
+ ----------- + ----- +
2 9 -> 16 | 1000 0011 | $ 83 | ---> телекарта
+ ----------- + ----- + ----------- + ----- +
3-4 17 -> 32 | 1000 0000 | $ 80 | 0001 0010 | $ 12 | ---> карта 10 единиц
| | | 0010 0100 | $ 24 | ---> Карта на 22 единицы
| | | 0010 0111 | $ 27 | ---> карта 25 единиц
| | | 0011 0010 | $ 32 | ---> карта 30 единиц
| | | 0101 0010 | 52 $ | ---> карта на 50 единиц
| | | 1000 0010 | 82 $ | ---> 80 единиц карты
| 1000 0001 | 81 доллар | 0000 0010 | $ 02 | ---> 100 единиц карты
| | | 0101 0010 | 52 $ | ---> 150 единиц карты
+ ----------- + ----- + ----------- + ----- +
5 33 -> 40 | | |
+ ----------- + ----- +
6 41 -> 48 | | |
+ ----------- + ----- +
7 49 -> 56 | | |
+ ----------- + ----- +
8 57 -> 64 | | |
+ ----------- + ----- +
9 65 -> 72 | | |
+ ----------- + ----- +
10 73 -> 80 | | |
+ ----------- + ----- +
11 81 -> 88 | | |
+ ----------- + ----- +
12 89 -> 96 | 0001 1110 | $ 1E | ---> Швеция
| 0010 0010 | $ 22 | ---> Испания
| 0011 0000 | 30 долларов | ---> Норвегия
| 0011 0011 | $ 33 | ---> Андорра
| 0011 1100 | $ 3C | ---> Ирландия
| 0100 0111 | $ 47 | ---> Португалия
| 0101 0101 | $ 55 | ---> Чехия
| 0101 1111 | $ 5F | ---> Габон
| 0110 0101 | 65 долларов | ---> Финляндия
+ ----------- + ----- +
13-31 97 -> 248 | | | ---> Площадь юнита: каждый раз юнит
| | | используется, то бит устанавливается в "1";
| | |
| | | Обычно первые два блока
| | | плавлен на заводе как тест.
| | |
| | |
+ ----------- + ----- +
32 249 -> 256 | 0000 0000 | $ 00 |
+ ----------- + ----- +
II) Карты от систем ODS, Giesecke & Devrient, ORGA Karten,
================================================== ===========
Uniqua, Gemplus, Schlumberger и Oldenbourg Kartensysteme:
================================================== =========
II-1) Введение:
------------
Эти карты на самом деле представляют собой 128-битную память по технологии NMOS, и
карта этих карт следующая:
64-битная EPROM защищена от записи (область производителя).
40-битная EEPROM (5x8 бит).
24 бита установлены в "1".
II-2) Распиновка:
--------
ISO 7816-2
------------- + -------------
| 1 | 5 | Распиновка:
| | | -------
+ ------- \ | / ------- +
| 2 + ---- + + 6 | 1: Vcc = 5 В 5: Земля
| | | | 2: Сброс 6: NC
+ -------- | | -------- + 3: Часы 7: Ввод / вывод
| 3 | | 7 | 4: NC 8: NC
| + ---- + ---- + |
+ ------- / | \ ------- + nc: не подключен
| 4 | 8 |
| | |
------------- + -------------
II-3) Основные характеристики:
---------------
- Совместимость с ISO 7816-1 / 2.
- используйте один источник питания 5 В.
- низкое энергопотребление.
- Технология NMOS.
II-4) Временные диаграммы:
----------------
Перезагрузить:
------
Счетчик адреса сбрасывается на 0, когда тактовая линия CLK повышается.
в то время как линия управления R высока. Обратите внимание, что счетчик адресов не может
сбрасывается, когда он находится в диапазоне от 0 до 7.
__________________
_____ | | _____________________________________________ Сброс
::
: _____: _____ _____ _____ _____
_____: _______ | | ____: _ | | _____ | | _____ | | _____ | | _ Clk
:::::::::::
_____: _______: __________: _: _____: _____: _____: _____: _____: _____: _____: _
_____: ___ n ___ | _____ 0 ____: _ | _____ 1 _____ | _____ 2 _____ | _____ 3 _____ | ___ 4 _: _ (Адрес)
::::::
_____:: _______: ___________: ___________: ___________: _
_____ XXXXXXXXXXXXXXXXXXXX _______ | ___________ | ___________ | ___________ | _ Данные
Бит n Бит 0 Бит 1 Бит 2 Бит 3
Счетчик адреса увеличивается на 1 с каждым нарастающим фронтом
тактовый сигнал Clk, пока линия управления R остается на низком уровне. В
данные, содержащиеся в каждом адресном бите, выводятся на контакт ввода / вывода каждый раз, когда Clk
падает. Невозможно уменьшить счетчик адреса на единицу, поэтому
для адресации более раннего бита счетчик адреса должен быть сброшен, затем
увеличивается до требуемого значения.
Писать:
------
Все незаписанные или стертые биты в адресе 64-104 могут быть незаписанными.
к. Когда ячейка памяти не записана, она устанавливается в 0. Адресованный
ячейка не записывается в следующей последовательности.
1 - R повышается при низком уровне Clk, чтобы отключить приращение счетчика адреса.
за один тактовый импульс.
2- Затем Clk повышается минимум на 10 мс для записи в адресный бит.
Когда операция записи заканчивается и Clk падает, счетчик адреса
разблокирован, и выводится содержимое записанной ячейки, которая теперь равна 0
к контакту ввода / вывода, если операция правильная.
Следующий импульс Clk увеличит адрес на единицу, затем запись
последовательность может быть повторена для записи следующего бита.
_____ _____
____________ | | ______________________________ | | _______________ Сброс
::
___: _____ ___: _____
___ | | ____: __________ | | _________ | | _____: __________ | | ____ Clk
:::::::::
___: ________: __________: _____: _________: ___: _____: __________: _____: _____
п | п + 1 | п + 2 | : n + 3 | : (Адрес)
---'--------: ----------'-----: ---------'---: -----: ----------'-----: -----
:::::::
________ _::: ____________: ___:::
________XXX_XXXXXXXXXXXXXXXXXX ____________ XX___XXXXXXXXXXXXXXXXXXXXXXX Ввод / вывод
n n + 1:: n + 1 n + 2::
::::
написать написать
WriteCarry:
-----------
Счетчик стирается при выполнении последовательности WRITECARRY на
стадия следующего по величине веса удаляемого.
Последовательность записи и переноса следующая:
1 - Установить счетчик адреса на незаписанный бит в следующем наивысшем значении.
встречный этап к тому, что нужно стереть.
2 - Приращение отключается на следующем нарастающем фронте R, где Clk
остается низким.
3 - Затем Clk повышается минимум на 10 мс, в то время как R низкий, чтобы записать
к следующему биту адреса.
4 - R снова повышается, в то время как Clk остается низким, чтобы отключить приращение
второй раз.
5 - Clk повышается минимум на 1 мс, в то время как R низкий, для записи в
адресный бит второй раз, немедленно стирая уровень счетчика
ниже адресный бит.
_____ _____
______ | | ____________________ | | _________________________________ Rst
::
: _______: _______ ___
______: ___________ | | ______: _____________ | | ______ | | ______ Clk
::::::::
::::::::
<------------------------- адрес n ---------------------- ->: <--- n + 1 ------
:::::::
:::::::
______::: ______::: __________: _____
______XXXXXXXXXXXXXXXXXXXXX______XXXXXXXXXXXXXXXXXXXXXXXX__________XX_____ I / O
:: n:: n n + 1
::::
Запись Стереть
II-5) Карта памяти:
-------------
Байт Биты Двоичный Hexa
+ ----------- + ----- +
1 1 -> 8 | | |
+ ----------- + ----- +
2 9 -> 16 | 0010 1111 | $ 2F | ---> Германия
| 0011 0111 | $ 37 | ---> Нидерланды
| 0011 1011 | $ 3 млрд | ---> Греция
+ ----------- + ----- +
3 17 -> 24 | | |
4 25 -> 32 | | | ---> Область эмитента (защищена от записи)
5 33 -> 40 | | |
6 41 -> 48 | | |
7 49 -> 56 | | |
8 57 -> 64 | | |
+ ----------- + ----- +
9 65 -> 72 | | | ---> c4096)
10 73 -> 80 | | | ---> c512)
11 81 -> 88 | | | ---> c64) 5-ступенчатый восьмеричный счетчик
12 89 -> 96 | | | ---> c8)
13 97 -> 104 | | | ---> c0)
+ ----------- + ----- +
14 105 -> 112 | 1111 1111 | $ FF |
15 113 -> 120 | 1111 1111 | $ FF | ---> область битов установлена на "1"
16 120 -> 128 | 1111 1111 | $ FF |
+ ----------- + ----- +
Район эмитента:
----------------
Этот эмитент состоит из 40 бит. Содержимое области эмитента
указываются эмитентом карты, и фиксируются при изготовлении
процесс. Содержимое области эмитента будет включать такие данные, как
серийные номера, даты и центры распределения.
Эту область можно только читать.
Зона счетчика:
-----------------
В области счетчика хранятся единицы карты. Его начальное значение
указывается эмитентом карты и устанавливается при изготовлении.
Зона счетчика разделена на пятиступенчатые счетчики.
Обратите внимание, что вы можете только уменьшить счетчик, и это не разрешено
записать в счетчик значение больше старого.
I-6) Электрические характеристики:
--------------------
Максимальные оценки:
----------------
+ -------- + ------ + ------ + ------ +
| Символ | Мин | Макс | Единица |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| Напряжение питания | Vcc | -0,3 | 6 | V |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| Входное напряжение | Vss | -0,3 | 6 | V |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| Температура хранения | Tstg | -20 | +55 | 0C |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| Рассеивание мощности | Pd | - | 50 | мВт |
+ ---------------------- + -------- + ------ + ------ + --- --- +
Характеристики постоянного тока:
------------------
+ -------- + ----- + ----- + ----- + ------ +
| Символ | Мин. | Тип. | Макс. Единица |
+ --------------------------- + -------- + ----- + ----- + ----- + ------ +
| Ток питания | Icc | - | - | 5 | мА |
+ --------------------------- + -------- + ----- + ----- + ----- + ------ +
| Входное напряжение (низкое) | Vl | 0 | - | 0,8 | V |
+ --------------------------- + -------- + ----- + ----- + ----- + ------ +
| Входное напряжение (высокое) | Vh | 3.5 | - | Vcc | V |
+ --------------------------- + -------- + ----- + ----- + ----- + ------ +
| Входной ток R | Ih | - | - | 100 | uA |
+ --------------------------- + -------- + ----- + ----- + ----- + ------ +
| Входной ток Clk | Il | - | - | 100 | uA |
+ --------------------------- + -------- + ----- + ----- + ----- + ------ +
| Выходной ток (Vol = 0,5 В) | Иол | - | - | 10 | uA |
+ --------------------------- + -------- + ----- + ----- + ----- + ------ +
| Выходной ток (Voh = 5В) | Йо | - | - | 0,5 | мА |
+ --------------------------- + -------- + ----- + ----- + ----- + ------ +
Характеристики переменного тока:
------------------ + -------- + ------ + ------ + ------ +
| Символ | Мин. | Максимум. | Единица |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| Длительность импульса | tr | 50 | - | нас |
| Сброс адреса R | | | | |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| Длительность импульса | ts | 10 | - | нас |
| R написать | | | | |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| Clk высокого уровня | th | 8 | - | нас |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| Clk низкого уровня | tl | 12 | - | нас |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| Окно записи | Twrite | 10 | - | мс |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| Стереть окно | Тераза | 10 | - | мс |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| | tv1 | 5 | - | нас |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| | tv2 | 3.5 | - | нас |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| | tv3 | 3.5 | - | нас |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| | tv4 | 3.5 | - | нас |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| | tv5 | 3.5 | - | нас |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| | tv6 | 5 | - | нас |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| | tv7 | 5 | - | нас |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| | tv8 | 10 | - | нас |
+ ---------------------- + -------- + ------ + ------ + --- --- +
III) Схема читателя:
======================
Внешний 5 В (опционально)
5V o ------,
| / T2 PNP d13 r7 10
0V o--, | / BC 177 | \ | _____
| | , ------- о / о - * ------. EC .-- | > + - [_____] --------,
__ + __ | | | \ / | / | |
\\\\\ | __ | __ Аккумулятор | \ / |
| - 22,5 В | --------- |
....... | | | _____ | _____ |
: | __ + __ + - [_____] - * - [_____] -, |
D2: | \\\\\ r6 150k r5 15k | |
4 o ------- | --------------------------- * ------------ ------ | -------------, |
: | | r3 220к / с | |
Подтверждение: | | _____ | / T1 - NPN | |
10 часов ------ | --------. '- [_____] - * --- | BC107 | |
: | | _____ | | \ | |
:, -,, -, + - [_____] - '\ E | |
: | | r2 | | r1 | r4 390k | | |
: | | 220 | | 22k __ + __ __ + __ | |
: | _ | | _ | \\\\\ \\\\\ | |
: | | \ | | | |
: * - | > + - | ---------------- * ---------------------------- ------ | - *
: | | / | | , ----- | -----------------------------, | |
: | d1 | | | , ----------, ----------, | | |
: | | | * --- | - * Предохранитель | Сбросить * - | --- '| |
: | | | | | ---------- | ---------- | | |
D0: | | | , - | --- | - * I / O | Clk * - | ---, | |
2 o ------- | -------- | ---------- '| | | ---------- | ---------- | | | |
: | | | '--- | - * Vpp | R / W * - | --- | ---- '|
Занят: | | | | ---------- | ---------- | | |
11 o ------ | -------- | -------------- ', --- | - * Gnd | 5В * | | |
: | | | '----------'------- | -' | |
D1: | | __ + __ Соединитель микросхемы | | |
3 o ------- | -------- | --------, \\\\\ | | |
: | | '------------------------------ | ------' |
Ул .: | | \ | | | |
1 o ------- * - | > + - * ---- * ---- * ---- * ---- * ------------------- '|
: d2 | / | | d3 | d4 | d5 | d6 | d7 |
: - + - - + - - + - - + - - + - |
: / _ \ / _ \ / _ \ / _ \ / _ \ |
D3: | | | | | | \ | d8 |
5 o ---------------- * ---- | ---- | ---- | ---- | --- | > + ------- * ------------------- '
: | | | | | / | |
: | | | | |
D4: | | | | | \ | d9 |
6 o --------------------- * ---- | ---- | ---- | --- | > + ------- *
: | | | | / | |
: | | | |
D5: | | | | \ | d10 |
7 o -------------------------- * ---- | ---- | --- | > + ------- *
: | | | / | |
: | | |
D6: | | | \ | d11 |
8 o ------------------------------- * ---- | --- | > + ------- *
: | | / | |
: | |
D7: | | \ | d12 |
9 o ------------------------------------ * --- | > + ------- '
: | / |
:
:
25 o ------.
: |
.......: | от d1 до d13: 1N4148
__ + __
\\\\\
Порт Centronics
IV) Программа:
===========
Следующая программа позволит вам читать телекарты на вашем ПК, если вы
построить читателя.
--------------- вырезать здесь (начать)
{*********************************************** ****************************}
{ТЕЛЕКАРТА. PAS}
{*********************************************** ****************************}
{Эта программа позволяет уменьшить объем памяти телефонных карт электроники}
{со всего мира, чтобы вы могли видеть, в какой стране}
{карта показывает, сколько единиц осталось и так далее ....}
{*********************************************** ****************************}
{}
{Написано Стефаном Баусоном (1993)}
{}
{Электронная почта: [email protected]-nancy.fr}
{}
{Адрес электронной почты Snail: 4, Rue de Grand}
{F-88630 CHERMISEY}
{Франция}
{}
{*********************************************** ****************************}
{* Благодарность: Томи Энгдал ([email protected]) *}
{*********************************************** ****************************}
ИСПОЛЬЗУЕТ crt, dos;
CONST port_address = 378 долларов США; {lpr1 selected}
ТИП строка8 = строка [8];
строка2 = строка [2];
VAR reg: регистры;
i, j: целое число;
Данные: массив [1..32] байтов;
автомобиль: char;
byte_number: целое число;
отображение: char;
{------------------------------------------------- ----------------------------}
ПРОЦЕДУРА Отправить (b: байт);
BEGIN порт [port_address]: = b;
КОНЕЦ;
{------------------------------------------------- ----------------------------}
ФУНКЦИЯ Получить: байт;
НАЧАТЬ получить: = порт [адрес_порта + 1];
КОНЕЦ;
{------------------------------------------------- ----------------------------}
{ФУНКЦИЯ dec2hexa_one (десятичное_значение): шестнадцатеричное_символьное_представление; }
{}
{- преобразовать десятичное число длиной 4 бита в шестнадцатеричное. }
{------------------------------------------------- ----------------------------}
ФУНКЦИЯ dec2hexa_one (значение: байт): char;
BEGIN значение регистра
0..9: dec2hexa_one: = chr (значение + 30 долларов США);
10..15: dec2hexa_one: = chr (значение + 37 $);
КОНЕЦ;
КОНЕЦ;
{------------------------------------------------- ----------------------------}
{ФУНКЦИЯ d2h (десятичный_байт): строка2; }
{}
{- преобразовать десятичный байт в его шестнадцатеричное представление. }
{------------------------------------------------- ----------------------------}
ФУНКЦИЯ d2h (значение: байт): строка2;
VAR msbb, lsbb: байт;
НАЧАТЬ msbb: = 0;
если (значение> = 80 долларов США), то
НАЧАТЬ msbb: = msbb + 8;
value: = value- 80 долларов США;
КОНЕЦ;
если (значение> = 40 долларов США), то
НАЧАТЬ msbb: = msbb + 4;
value: = value- 40 долларов США;
КОНЕЦ;
если (значение> = 20 долларов), то
НАЧАТЬ msbb: = msbb + 2;
value: = value- 20 долларов США;
КОНЕЦ;
если (значение> = 10 долларов), то
НАЧАТЬ msbb: = msbb + 1;
value: = value- 10 долларов США;
КОНЕЦ;
lsbb: = 0;
если (значение> = $ 08), то
НАЧАТЬ lsbb: = lsbb + 8;
значение: = значение- 08 $;
КОНЕЦ;
если (значение> = $ 04), то
НАЧАТЬ lsbb: = lsbb + 4;
значение: = значение- $ 04;
КОНЕЦ;
если (значение> = $ 02), то
НАЧАТЬ lsbb: = lsbb + 2;
значение: = значение- $ 02;
КОНЕЦ;
если (значение> = $ 01), то
НАЧАТЬ lsbb: = lsbb + 1;
значение: = значение- 01 $;
КОНЕЦ;
d2h: = dec2hexa_one (msbb) + dec2hexa_one (lsbb);
КОНЕЦ;
{------------------------------------------------- ----------------------------}
Функция Binary (b: byte): string8;
вес var: byte;
s: string8;
НАЧАЛЬНЫЙ вес: = 80 $;
s: = '';
пока (вес> 0) делать
НАЧАТЬ, если ((b и вес) = вес), то s: = s + '1'
иначе s: = s + '0';
weight: = вес div $ 02;
КОНЕЦ;
Двоичный: = s;
КОНЕЦ;
{------------------------------------------------- ----------------------------}
ФУНКЦИЯ Единицы: байт;
VAR u, i: целое число;
s: string8;
НАЧАТЬ u: = 0;
i: = 13;
в то время как (Data = $ FF) делать
НАЧАТЬ u: = u + 8;
я: = я + 1;
КОНЕЦ;
s: = Двоичный (Данные );
в то время как (s [1] = '1') делать
НАЧАТЬ inc (u);
s: = копия (s, 2, длина (s));
КОНЕЦ;
единицы: = u;
КОНЕЦ;
{------------------------------------------------- ----------------------------}
функция Units_2: LongInt;
BEGIN Units_2: = 4096 * Данные [9] + 512 * Данные [10] + 64 * Данные [11] + 8 * Данные [12] + Данные [13];
КОНЕЦ;
{------------------------------------------------- ----------------------------}
ПРОЦЕДУРА Card_Type;
BEGIN данные дела [2] из
$ 03: НАЧАТЬ запись ('Telecard - France -');
Данные дела [12] из
$ 13: написать ('120 единиц -', единиц-130, 'единиц осталось');
$ 06: написать ('50 единиц - ', единиц-60,' единиц осталось ');
$ 15: написать ('40 единиц -', единиц-40, 'единиц осталось');
КОНЕЦ;
КОНЕЦ;
$ 2F: BEGIN write ('Telecard - Germany -', Units_2, 'Units left');
КОНЕЦ;
3 миллиарда долларов: НАЧАТЬ запись ('Telecard - Греция -', Units_2, 'Units left');
КОНЕЦ;
$ 83: НАЧАТЬ запись («Телекарта»);
Данные дела [12] из
$ 1E: написать ('- Швеция');
30 долларов: напишите ('- Норвегия');
$ 33: написать ('- Андорра');
$ 3C: написать ('- Ирландия');
$ 47: написать ('- Португалия');
$ 55: напишите ('- Чешская Республика');
$ 5F: написать ('- Габон');
65 долларов: напишите ('- Финляндия');
КОНЕЦ;
if (Данные [12] в [30 $, 33 $, 3C $, 47 $, 55 $, 65 $]), то
BEGIN case ((Data [3] и $ 0F) * $ 100 + Data [4]) из
$ 012: написать ('- 10 единиц -', единиц-12, 'единиц осталось');
$ 024: написать ('- 22 единицы -', единицы-24, 'Осталось единиц');
$ 027: напишите ('- 25 единиц -', единиц-27, 'Осталось единиц');
$ 032: написать ('- 30 единиц -', единиц-32, 'единиц осталось');
$ 052: напишите ('- 50 единиц -', единиц-52, 'единиц осталось');
$ 067: написать ('- 65 единиц -', единиц-62, 'единиц осталось');
$ 070: написать ('- 70 единиц -', единиц-70, 'единиц осталось');
102 доллара: напишите ('- 100 единиц -', единиц-102, 'единиц осталось');
$ 152: напишите ('- 150 единиц -', единиц-152, 'Осталось единиц');
КОНЕЦ;
КОНЕЦ;
{write ('- N0', Data [5] * $ 100 + Data [6]);}
КОНЕЦ;
КОНЕЦ;
КОНЕЦ;
{------------------------------------------------- ----------------------------}
ПРОЦЕДУРА ожидания;
НАЧАТЬ отправку ($ 00);
напишите ('Введите карту в считыватель и нажмите клавишу ...');
повторять, пока не будет нажата клавиша;
gotoxy (1, где);
клреол;
КОНЕЦ;
{------------------------------------------------- ----------------------------}
ПРОЦЕДУРА Full_Displaying;
НАЧАТЬ Writeln ('Дамп памяти:');
для i: = от 1 до 80 пишите ('-');
for i: = 1 to (byte_number div 6 + 1) do
НАЧАТЬ для j: = от 1 до 6 сделать
НАЧАТЬ, если j + 6 * (i-1) <= byte_number, затем записать (двоичный (Data [j + 6 * (i-1)]): 9);
КОНЕЦ;
gotoxy (60, где);
для j: = от 1 до 6 сделать
если j + 6 * (i-1) <= byte_number, тогда write (d2h (Data [j + 6 * (i-1)]), '');
Writeln;
КОНЕЦ;
для i: = от 1 до 80 пишите ('-');
Тип карты;
Writeln;
КОНЕЦ;
{------------------------------------------------- ----------------------------}
ПРОЦЕДУРА Short_Displaying;
VAR j: целое число;
BEGIN for j: = 1 to byte_number do
НАЧАТЬ запись (d2h (Data [j]), '');
КОНЕЦ;
Writeln;
КОНЕЦ;
{------------------------------------------------- ----------------------------}
ПРОЦЕДУРА Чтение;
VAR i, j: целое число;
Значение: байт;
НАЧАТЬ отправку ($ FE);
отправить ($ F8);
для i: = от 1 до 32 сделать
НАЧАЛО Значение: = 0;
для j: = от 1 до 8 сделать
НАЧАЛО Значение: = Значение * $ 02 + ((получить и $ 08) div $ 08);
отправить ($ FB);
задержка (1);
отправить ($ F8);
КОНЕЦ;
Данные : = Значение;
КОНЕЦ;
показ случая
'F': full_displaying;
'S': short_displaying;
КОНЕЦ;
КОНЕЦ;
{------------------------------------------------- ----------------------------}
ПРОЦЕДУРА написания;
VAR i, n: целое число;
автомобиль: char;
BEGIN write ('Какой бит вы хотите установить в "1":');
readln (п);
ожидающий;
автомобиль: = ключ чтения;
отправить ($ FA);
отправить ($ F8);
для i: = от 1 до n сделать
НАЧАТЬ отправку ($ F9);
если i = n, то
НАЧАТЬ отправку ($ FD);
задержка (20);
отправить ($ FF);
задержка (20);
КОНЕЦ;
отправить ($ FB);
КОНЕЦ;
чтение;
КОНЕЦ;
{------------------------------------------------- ----------------------------}
ПРОЦЕДУРА Сохранение;
VAR filename: строка;
f: текст;
я: слово;
BEGIN write ('Введите имя файла:');
readln (имя файла);
назначить (е, имя файла);
переписать (е);
для i: = 1 в byte_number записать (f, d2h (Data ), '');
закрыть (е);
КОНЕЦ;
{------------------------------------------------- ----------------------------}
ПРОЦЕДУРА инициализации;
VAR i: целое число;
НАЧАТЬ byte_number: = 32;
отображение: = 'F';
clrscr;
Writeln ('1 - сбросить карту 256 бит');
Writeln ('2 - сбросить 128-битную карту');
Writeln ('F - отображать в полном формате');
окно (41,1,80,25);
Writeln ('S - отображать в кратком формате');
Writeln ('F2 - сохранить в файл');
Writeln ('Q - выйти из программы');
окно (1,4,80,25);
для i: = от 1 до 80 пишите ('=');
окно (1,5,80,25);
КОНЕЦ;
{================================================= ============================}
НАЧАТЬ инициализировать;
повторить ожидание;
car: = upcase (ключ чтения);
корпус автомобиля из
«W»: письмо;
«Q» :;
'1': номер_байта: = 32;
'2': byte_number: = 16;
'F', 'S': отображение: = автомобиль;
# 00: НАЧАТЬ автомобиль: = ключ чтения;
если car = # 60, то сохранение;
КОНЕЦ;
еще чтение;
КОНЕЦ;
до car = 'Q';
КОНЕЦ.
--------------- вырезать здесь (конец)
_ / _ / _ / _ / _ / Стефан БАУССОН
_ / _ / _ / _ / _ / Студент инженерного факультета ENSEM (Нанси, Франция)
_ / _ / _ / _ / _ / Smail: 4, Rue de Grand, F-88630 CHERMISEY, France
_ / _ / _ / _ / _ /
_ / _ / _ / _ / _ / Электронная почта: [email protected]-nancy.fr
-------------------------------------------------- ----------------------------
.
Том седьмой, выпуск сорок восьмой, файл 10 из 18
Электронные телефонные карточки: как сделать сами!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Я полагаю, что Швеция - не единственная страна, в которой используется электронная
системы телефонных карточек от Schlumberger Technologies. Эта статья будет
объясните немного о картах, которые они используют, и о том, как они работают. В конце
в этой статье вы также найдете файл в кодировке UUEncoded, содержащий исходный код
код программы микроконтроллера PIC16C84, который полностью эмулирует
Телефонная карта Schlumberger и, конечно же, макеты печатных плат
+ список компонентов ... Но прежде чем мы начнем серьезно говорить об этом
важно, сначала я должен полностью прояснить, что все, что вы используете
информация для, полностью ВАША ответственность, и я не могу удерживаться
несет ответственность за любые проблемы, которые может вызвать использование этой информации
вам или кому-то еще. Другими словами: я отдаю это БЕСПЛАТНО, и
Я не жду НИЧЕГО взамен!
Оригинальная телефонная карта:
~~~~~~~~~~~~~~~~~~~~~~~~~~~
Поскольку мне, вероятно, было бы трудно написать лучшую статью
чем тот, который недавно написал Стефан Боссон из Франции, я не буду
попытаться дать лучшее объяснение, чем это; Вместо этого я буду
включить его в этот файл, но я хочу прояснить, что
Следующая часть о технических характеристиках карт не написана
от меня: Просто части в кавычках добавлены мной ... Вместо этого я
сконцентрируемся на объяснении, как построить свою собственную телефонную карту
эмулятор и как меры безопасности в системе таксофона, созданные
Работа Schlumberger Technologies, и как ее обмануть ... Но сначала давайте
ознакомьтесь с техническими характеристиками различных «умных» модулей памяти
карточные системы, используемые для таксофонов.
================================================== =============================
Что нужно знать об электронных телекартах
================================================== =============================
(C) 10-07-1993 / 03-1994
Версия 1.06
Стефан Бауссон
Почта: [email protected]-nancy.fr
Smail: 4, Rue de Grand; F-88630 CHERMISEY; Франция
Телефон: (33) -29-06-09-89
-------------------------------------------------- -----------------------------
Любые предложения или комментарии по поводу телефонных карт и смарт-карт приветствуются.
-------------------------------------------------- -----------------------------
Содержание
---------
I) Карты от Gemplus, Solaic, Schlumberger, Oberthur:
I-1) Введение:
I-2) СХЕМА микросхемы:
I-3) РАСПОЛОЖЕНИЕ разъема:
I-4) Основные характеристики:
I-5) ВРЕМЕННЫЕ ДИАГРАММЫ:
I-6) КАРТА памяти карт из Франции и Монако:
I-5) КАРТА памяти карт других стран:
II) Карты от ODS: (Немецкие карты)
II-1) Введение:
II-2) Распиновка:
II-3) Основные характеристики:
II-4) Временные диаграммы:
II-5) Карта памяти:
II-6) Электрические характеристики:
III) Схема читателя:
IV) Программа:
-------------------------------------------------- -----------------------------
I) Карты от Gemplus, Solaic, Schlumberger, Oberthur: (французские карты)
================================================== ====================
I-1) Введение:
------------
Не думайте, что телефонные карты электроники
совершенно секретные вещи, и что вы не можете прочитать информацию, которая
это внутри. Это совершенно неверно, поскольку на самом деле электронная телефонная карта
не содержать никакой секретной информации, такой как кредитные карты и электронные
Телефонная карта - это не что иное, как 256-битное СППЗУ с последовательным выходом.
Кроме того, не думайте, что вы собираетесь их пополнять, когда вы
понять, как они работают, так как для этого вы должны сбросить 256 бит
карт, удалив всю карту. Но чип покрыт УФ
непрозрачная смола, даже если иногда вы видите ее прозрачной! Даже если
вы были достаточно умны, чтобы стереть 256 бит карты, которые вы должны
запрограммировать область производителя, но это совершенно невозможно, так как эти
первые 96 битов защищены от записи предохранителем, который срабатывает после
программирование карты на заводе.
Тем не менее может быть очень интересно изучить, как эти карты
работать, чтобы увидеть, какие данные находятся внутри и как данные отображаются
внутри или, например, чтобы увидеть, сколько единиц осталось внутри. Кроме того
существует огромное количество применений этих карт, когда есть
используются (конечно, только для личного использования), так как вы можете использовать их как ключевые
чтобы открыть дверь, или вы также можете использовать их как ключ для защиты программы,
так далее...
Эти телекарты были созданы в 1984 году и в настоящее время
конструкторы решили построить эти карты по технологии NMOS, но теперь,
они планируют к 1994 году заменить всех читателей на кабинки и использовать
КМОП-технология. Также они планируют использовать EEPROM для защиты карт и
добавить много полезной информации, и, возможно, вы будете использовать телефонные карточки для
купить вам хлеб или что-нибудь еще.
Эти карты называются телекартами второго поколения.
I-2) СХЕМА микросхемы:
----------------------
.-------------------.
| |
- |> Clk |
| _ |
- | R / W |
| |
- | Сбросить |
| |
- | Предохранитель |
| |
- | Vpp |
| |
| |
'-. .- '
| |
.-------------------.
| Out | - последовательный выход
'-------------------'
I-3) РАСПОЛОЖЕНИЕ разъема:
-------------------------
ЧИП AFNOR ЧИП ISO ЧИП
---------- --------
------------- + ------------- ------------- + --------- ----
| 8 | 4 | | 1 | 5 |
| | | | | |
+ ------- \ | / ------- + + ------- \ | / ------- +
| 7 + ---- + ---- + 3 | | 2 + ---- + + 6 |
| | | | | | | |
+ -------- | | -------- + + -------- | | -------- +
| 6 | | 2 | | 3 | | 7 |
| + + ---- + | | + ---- + ---- + |
+ ------- / | \ ------- + + ------- / | \ ------- +
| 5 | 1 | | 4 | 8 |
| | | | | |
------------- + ------------- ------------- + --------- ----
NB: только позиция чипа соответствует ISO
стандартизированный, а не распиновка
ВЫВОД: 1: Vcc = 5V 5: Gnd
------ 2: R / W 6: Vpp = 21 В
3: Часы 7: ввод / вывод
4: сброс 8: предохранитель
I-4) Основные характеристики:
---------------
- Синхронный протокол.
- Технология N-MOS.
- Организация 256x1 бит.
- 96 записано защищено блокирующим предохранителем.
- Низкое энергопотребление 85 мВт в режиме чтения.
- Напряжение программирования 21 В.
- Время доступа: 500 нс
- Рабочий диапазон: -100C + 700C
- Хранение данных в течение десяти лет.
I-5) ВРЕМЕННЫЕ ДИАГРАММЫ:
---------------
+ 21В _____________
+ 5В ____________________________________ | | _________________ Vpp
::
+ 5В ___________________: _____________: _________________ Сброс
0V ________________ | ::
:::
+ 5В ____: ____: ______: ______
0V ___ | | _______: _____ | | ________: ______ | : | __________ Часы
:::::::::
+ 5В:::::: ______: ______:: _
0V ___: ____: _______: _____: ____: ________ | : | ______: __________ R / W
:::::::::
+ 5В::: _____:: ________:::: __________
0V XXXXXXXXXXXXXXXXX_____XXXXXX________XXXXXXXXXXXXXXXXXXXXXX__________ Out
:::::: <-----> <---->::
:::::: От 10 до 10 до:
:::::: 50 мс 50 мс:
Сбросить бит 1 бит 2 бит 3
чтение карты чтение Bit2 запись в 1 чтение
I-6) КАРТА ПАМЯТИ карт из Франции и Монако:
--------------------------------------------
Байт Биты Двоичный Hexa
+ ----------- + ----- +
1 1 -> 8 | | | ---> Код разработчика.
+ ----------- + ----- +
2 9 -> 16 | 0000 0011 | $ 03 | ---> французская телекарта
+ ----------- + ----- +
3 17 -> 24 | | |
+ ----------- + ----- +
4 25 -> 32 | | |
+ ----------- + ----- +
5 33 -> 40 | | |
+ ----------- + ----- +
6 41 -> 48 | | |
+ ----------- + ----- +
7 49 -> 56 | | |
+ ----------- + ----- +
8 57 -> 64 | | |
+ ----------- + ----- +
9 65 -> 72 | | |
+ ----------- + ----- +
10 73 -> 80 | | |
+ ----------- + ----- +
11 81 -> 88 | | |
+ ----------- + ----- +
12 33 -> 40 | 0001 0011 | $ 13 | ---> 120 единиц карты
| 0000 0110 | $ 06 | ---> карта на 50 единиц
| 0000 0101 | $ 05 | ---> 40 единиц карты
+ ----------- + ----- +
13-31 97 -> 248 | | | ---> Площадь юнита: каждый раз юнит
| | | используется, то бит устанавливается в "1";
| | | Обычно первые десять единиц
| | | плавлен на заводе как тест.
| | |
| | |
| | |
+ ----------- + ----- +
32 249 -> 256 | 1111 1111 | $ FF | ---> карта пуста
+ ----------- + ----- +
I-7) КАРТА ПАМЯТИ остальных карт:
-------------------------------
Байт Биты Двоичный Hexa
+ ----------- + ----- +
1 1 -> 8 | | |
+ ----------- + ----- +
2 9 -> 16 | 1000 0011 | $ 83 | ---> телекарта
+ ----------- + ----- + ----------- + ----- +
3-4 17 -> 32 | 1000 0000 | $ 80 | 0001 0010 | $ 12 | ---> карта 10 единиц
| | | 0010 0100 | $ 24 | ---> Карта на 22 единицы
| | | 0010 0111 | $ 27 | ---> карта 25 единиц
| | | 0011 0010 | $ 32 | ---> карта 30 единиц
| | | 0101 0010 | 52 $ | ---> карта на 50 единиц
| | | 1000 0010 | 82 $ | ---> 80 единиц карты
| 1000 0001 | 81 доллар | 0000 0010 | $ 02 | ---> 100 единиц карты
| | | 0101 0010 | 52 $ | ---> 150 единиц карты
+ ----------- + ----- + ----------- + ----- +
5 33 -> 40 | | |
+ ----------- + ----- +
6 41 -> 48 | | |
+ ----------- + ----- +
7 49 -> 56 | | |
+ ----------- + ----- +
8 57 -> 64 | | |
+ ----------- + ----- +
9 65 -> 72 | | |
+ ----------- + ----- +
10 73 -> 80 | | |
+ ----------- + ----- +
11 81 -> 88 | | |
+ ----------- + ----- +
12 89 -> 96 | 0001 1110 | $ 1E | ---> Швеция
| 0010 0010 | $ 22 | ---> Испания
| 0011 0000 | 30 долларов | ---> Норвегия
| 0011 0011 | $ 33 | ---> Андорра
| 0011 1100 | $ 3C | ---> Ирландия
| 0100 0111 | $ 47 | ---> Португалия
| 0101 0101 | $ 55 | ---> Чехия
| 0101 1111 | $ 5F | ---> Габон
| 0110 0101 | 65 долларов | ---> Финляндия
+ ----------- + ----- +
13-31 97 -> 248 | | | ---> Площадь юнита: каждый раз юнит
| | | используется, то бит устанавливается в "1";
| | |
| | | Обычно первые два блока
| | | плавлен на заводе как тест.
| | |
| | |
+ ----------- + ----- +
32 249 -> 256 | 0000 0000 | $ 00 |
+ ----------- + ----- +
II) Карты от систем ODS, Giesecke & Devrient, ORGA Karten,
================================================== ===========
Uniqua, Gemplus, Schlumberger и Oldenbourg Kartensysteme:
================================================== =========
II-1) Введение:
------------
Эти карты на самом деле представляют собой 128-битную память по технологии NMOS, и
карта этих карт следующая:
64-битная EPROM защищена от записи (область производителя).
40-битная EEPROM (5x8 бит).
24 бита установлены в "1".
II-2) Распиновка:
--------
ISO 7816-2
------------- + -------------
| 1 | 5 | Распиновка:
| | | -------
+ ------- \ | / ------- +
| 2 + ---- + + 6 | 1: Vcc = 5 В 5: Земля
| | | | 2: Сброс 6: NC
+ -------- | | -------- + 3: Часы 7: Ввод / вывод
| 3 | | 7 | 4: NC 8: NC
| + ---- + ---- + |
+ ------- / | \ ------- + nc: не подключен
| 4 | 8 |
| | |
------------- + -------------
II-3) Основные характеристики:
---------------
- Совместимость с ISO 7816-1 / 2.
- используйте один источник питания 5 В.
- низкое энергопотребление.
- Технология NMOS.
II-4) Временные диаграммы:
----------------
Перезагрузить:
------
Счетчик адреса сбрасывается на 0, когда тактовая линия CLK повышается.
в то время как линия управления R высока. Обратите внимание, что счетчик адресов не может
сбрасывается, когда он находится в диапазоне от 0 до 7.
__________________
_____ | | _____________________________________________ Сброс
::
: _____: _____ _____ _____ _____
_____: _______ | | ____: _ | | _____ | | _____ | | _____ | | _ Clk
:::::::::::
_____: _______: __________: _: _____: _____: _____: _____: _____: _____: _____: _
_____: ___ n ___ | _____ 0 ____: _ | _____ 1 _____ | _____ 2 _____ | _____ 3 _____ | ___ 4 _: _ (Адрес)
::::::
_____:: _______: ___________: ___________: ___________: _
_____ XXXXXXXXXXXXXXXXXXXX _______ | ___________ | ___________ | ___________ | _ Данные
Бит n Бит 0 Бит 1 Бит 2 Бит 3
Счетчик адреса увеличивается на 1 с каждым нарастающим фронтом
тактовый сигнал Clk, пока линия управления R остается на низком уровне. В
данные, содержащиеся в каждом адресном бите, выводятся на контакт ввода / вывода каждый раз, когда Clk
падает. Невозможно уменьшить счетчик адреса на единицу, поэтому
для адресации более раннего бита счетчик адреса должен быть сброшен, затем
увеличивается до требуемого значения.
Писать:
------
Все незаписанные или стертые биты в адресе 64-104 могут быть незаписанными.
к. Когда ячейка памяти не записана, она устанавливается в 0. Адресованный
ячейка не записывается в следующей последовательности.
1 - R повышается при низком уровне Clk, чтобы отключить приращение счетчика адреса.
за один тактовый импульс.
2- Затем Clk повышается минимум на 10 мс для записи в адресный бит.
Когда операция записи заканчивается и Clk падает, счетчик адреса
разблокирован, и выводится содержимое записанной ячейки, которая теперь равна 0
к контакту ввода / вывода, если операция правильная.
Следующий импульс Clk увеличит адрес на единицу, затем запись
последовательность может быть повторена для записи следующего бита.
_____ _____
____________ | | ______________________________ | | _______________ Сброс
::
___: _____ ___: _____
___ | | ____: __________ | | _________ | | _____: __________ | | ____ Clk
:::::::::
___: ________: __________: _____: _________: ___: _____: __________: _____: _____
п | п + 1 | п + 2 | : n + 3 | : (Адрес)
---'--------: ----------'-----: ---------'---: -----: ----------'-----: -----
:::::::
________ _::: ____________: ___:::
________XXX_XXXXXXXXXXXXXXXXXX ____________ XX___XXXXXXXXXXXXXXXXXXXXXXX Ввод / вывод
n n + 1:: n + 1 n + 2::
::::
написать написать
WriteCarry:
-----------
Счетчик стирается при выполнении последовательности WRITECARRY на
стадия следующего по величине веса удаляемого.
Последовательность записи и переноса следующая:
1 - Установить счетчик адреса на незаписанный бит в следующем наивысшем значении.
встречный этап к тому, что нужно стереть.
2 - Приращение отключается на следующем нарастающем фронте R, где Clk
остается низким.
3 - Затем Clk повышается минимум на 10 мс, в то время как R низкий, чтобы записать
к следующему биту адреса.
4 - R снова повышается, в то время как Clk остается низким, чтобы отключить приращение
второй раз.
5 - Clk повышается минимум на 1 мс, в то время как R низкий, для записи в
адресный бит второй раз, немедленно стирая уровень счетчика
ниже адресный бит.
_____ _____
______ | | ____________________ | | _________________________________ Rst
::
: _______: _______ ___
______: ___________ | | ______: _____________ | | ______ | | ______ Clk
::::::::
::::::::
<------------------------- адрес n ---------------------- ->: <--- n + 1 ------
:::::::
:::::::
______::: ______::: __________: _____
______XXXXXXXXXXXXXXXXXXXXX______XXXXXXXXXXXXXXXXXXXXXXXX__________XX_____ I / O
:: n:: n n + 1
::::
Запись Стереть
II-5) Карта памяти:
-------------
Байт Биты Двоичный Hexa
+ ----------- + ----- +
1 1 -> 8 | | |
+ ----------- + ----- +
2 9 -> 16 | 0010 1111 | $ 2F | ---> Германия
| 0011 0111 | $ 37 | ---> Нидерланды
| 0011 1011 | $ 3 млрд | ---> Греция
+ ----------- + ----- +
3 17 -> 24 | | |
4 25 -> 32 | | | ---> Область эмитента (защищена от записи)
5 33 -> 40 | | |
6 41 -> 48 | | |
7 49 -> 56 | | |
8 57 -> 64 | | |
+ ----------- + ----- +
9 65 -> 72 | | | ---> c4096)
10 73 -> 80 | | | ---> c512)
11 81 -> 88 | | | ---> c64) 5-ступенчатый восьмеричный счетчик
12 89 -> 96 | | | ---> c8)
13 97 -> 104 | | | ---> c0)
+ ----------- + ----- +
14 105 -> 112 | 1111 1111 | $ FF |
15 113 -> 120 | 1111 1111 | $ FF | ---> область битов установлена на "1"
16 120 -> 128 | 1111 1111 | $ FF |
+ ----------- + ----- +
Район эмитента:
----------------
Этот эмитент состоит из 40 бит. Содержимое области эмитента
указываются эмитентом карты, и фиксируются при изготовлении
процесс. Содержимое области эмитента будет включать такие данные, как
серийные номера, даты и центры распределения.
Эту область можно только читать.
Зона счетчика:
-----------------
В области счетчика хранятся единицы карты. Его начальное значение
указывается эмитентом карты и устанавливается при изготовлении.
Зона счетчика разделена на пятиступенчатые счетчики.
Обратите внимание, что вы можете только уменьшить счетчик, и это не разрешено
записать в счетчик значение больше старого.
I-6) Электрические характеристики:
--------------------
Максимальные оценки:
----------------
+ -------- + ------ + ------ + ------ +
| Символ | Мин | Макс | Единица |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| Напряжение питания | Vcc | -0,3 | 6 | V |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| Входное напряжение | Vss | -0,3 | 6 | V |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| Температура хранения | Tstg | -20 | +55 | 0C |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| Рассеивание мощности | Pd | - | 50 | мВт |
+ ---------------------- + -------- + ------ + ------ + --- --- +
Характеристики постоянного тока:
------------------
+ -------- + ----- + ----- + ----- + ------ +
| Символ | Мин. | Тип. | Макс. Единица |
+ --------------------------- + -------- + ----- + ----- + ----- + ------ +
| Ток питания | Icc | - | - | 5 | мА |
+ --------------------------- + -------- + ----- + ----- + ----- + ------ +
| Входное напряжение (низкое) | Vl | 0 | - | 0,8 | V |
+ --------------------------- + -------- + ----- + ----- + ----- + ------ +
| Входное напряжение (высокое) | Vh | 3.5 | - | Vcc | V |
+ --------------------------- + -------- + ----- + ----- + ----- + ------ +
| Входной ток R | Ih | - | - | 100 | uA |
+ --------------------------- + -------- + ----- + ----- + ----- + ------ +
| Входной ток Clk | Il | - | - | 100 | uA |
+ --------------------------- + -------- + ----- + ----- + ----- + ------ +
| Выходной ток (Vol = 0,5 В) | Иол | - | - | 10 | uA |
+ --------------------------- + -------- + ----- + ----- + ----- + ------ +
| Выходной ток (Voh = 5В) | Йо | - | - | 0,5 | мА |
+ --------------------------- + -------- + ----- + ----- + ----- + ------ +
Характеристики переменного тока:
------------------ + -------- + ------ + ------ + ------ +
| Символ | Мин. | Максимум. | Единица |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| Длительность импульса | tr | 50 | - | нас |
| Сброс адреса R | | | | |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| Длительность импульса | ts | 10 | - | нас |
| R написать | | | | |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| Clk высокого уровня | th | 8 | - | нас |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| Clk низкого уровня | tl | 12 | - | нас |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| Окно записи | Twrite | 10 | - | мс |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| Стереть окно | Тераза | 10 | - | мс |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| | tv1 | 5 | - | нас |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| | tv2 | 3.5 | - | нас |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| | tv3 | 3.5 | - | нас |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| | tv4 | 3.5 | - | нас |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| | tv5 | 3.5 | - | нас |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| | tv6 | 5 | - | нас |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| | tv7 | 5 | - | нас |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| | tv8 | 10 | - | нас |
+ ---------------------- + -------- + ------ + ------ + --- --- +
III) Схема читателя:
======================
Внешний 5 В (опционально)
5V o ------,
| / T2 PNP d13 r7 10
0V o--, | / BC 177 | \ | _____
| | , ------- о / о - * ------. EC .-- | > + - [_____] --------,
__ + __ | | | \ / | / | |
\\\\\ | __ | __ Аккумулятор | \ / |
| - 22,5 В | --------- |
....... | | | _____ | _____ |
: | __ + __ + - [_____] - * - [_____] -, |
D2: | \\\\\ r6 150k r5 15k | |
4 o ------- | --------------------------- * ------------ ------ | -------------, |
: | | r3 220к / с | |
Подтверждение: | | _____ | / T1 - NPN | |
10 часов ------ | --------. '- [_____] - * --- | BC107 | |
: | | _____ | | \ | |
:, -,, -, + - [_____] - '\ E | |
: | | r2 | | r1 | r4 390k | | |
: | | 220 | | 22k __ + __ __ + __ | |
: | _ | | _ | \\\\\ \\\\\ | |
: | | \ | | | |
: * - | > + - | ---------------- * ---------------------------- ------ | - *
: | | / | | , ----- | -----------------------------, | |
: | d1 | | | , ----------, ----------, | | |
: | | | * --- | - * Предохранитель | Сбросить * - | --- '| |
: | | | | | ---------- | ---------- | | |
D0: | | | , - | --- | - * I / O | Clk * - | ---, | |
2 o ------- | -------- | ---------- '| | | ---------- | ---------- | | | |
: | | | '--- | - * Vpp | R / W * - | --- | ---- '|
Занят: | | | | ---------- | ---------- | | |
11 o ------ | -------- | -------------- ', --- | - * Gnd | 5В * | | |
: | | | '----------'------- | -' | |
D1: | | __ + __ Соединитель микросхемы | | |
3 o ------- | -------- | --------, \\\\\ | | |
: | | '------------------------------ | ------' |
Ул .: | | \ | | | |
1 o ------- * - | > + - * ---- * ---- * ---- * ---- * ------------------- '|
: d2 | / | | d3 | d4 | d5 | d6 | d7 |
: - + - - + - - + - - + - - + - |
: / _ \ / _ \ / _ \ / _ \ / _ \ |
D3: | | | | | | \ | d8 |
5 o ---------------- * ---- | ---- | ---- | ---- | --- | > + ------- * ------------------- '
: | | | | | / | |
: | | | | |
D4: | | | | | \ | d9 |
6 o --------------------- * ---- | ---- | ---- | --- | > + ------- *
: | | | | / | |
: | | | |
D5: | | | | \ | d10 |
7 o -------------------------- * ---- | ---- | --- | > + ------- *
: | | | / | |
: | | |
D6: | | | \ | d11 |
8 o ------------------------------- * ---- | --- | > + ------- *
: | | / | |
: | |
D7: | | \ | d12 |
9 o ------------------------------------ * --- | > + ------- '
: | / |
:
:
25 o ------.
: |
.......: | от d1 до d13: 1N4148
__ + __
\\\\\
Порт Centronics
IV) Программа:
===========
Следующая программа позволит вам читать телекарты на вашем ПК, если вы
построить читателя.
--------------- вырезать здесь (начать)
{*********************************************** ****************************}
{ТЕЛЕКАРТА. PAS}
{*********************************************** ****************************}
{Эта программа позволяет уменьшить объем памяти телефонных карт электроники}
{со всего мира, чтобы вы могли видеть, в какой стране}
{карта показывает, сколько единиц осталось и так далее ....}
{*********************************************** ****************************}
{}
{Написано Стефаном Баусоном (1993)}
{}
{Электронная почта: [email protected]-nancy.fr}
{}
{Адрес электронной почты Snail: 4, Rue de Grand}
{F-88630 CHERMISEY}
{Франция}
{}
{*********************************************** ****************************}
{* Благодарность: Томи Энгдал ([email protected]) *}
{*********************************************** ****************************}
ИСПОЛЬЗУЕТ crt, dos;
CONST port_address = 378 долларов США; {lpr1 selected}
ТИП строка8 = строка [8];
строка2 = строка [2];
VAR reg: регистры;
i, j: целое число;
Данные: массив [1..32] байтов;
автомобиль: char;
byte_number: целое число;
отображение: char;
{------------------------------------------------- ----------------------------}
ПРОЦЕДУРА Отправить (b: байт);
BEGIN порт [port_address]: = b;
КОНЕЦ;
{------------------------------------------------- ----------------------------}
ФУНКЦИЯ Получить: байт;
НАЧАТЬ получить: = порт [адрес_порта + 1];
КОНЕЦ;
{------------------------------------------------- ----------------------------}
{ФУНКЦИЯ dec2hexa_one (десятичное_значение): шестнадцатеричное_символьное_представление; }
{}
{- преобразовать десятичное число длиной 4 бита в шестнадцатеричное. }
{------------------------------------------------- ----------------------------}
ФУНКЦИЯ dec2hexa_one (значение: байт): char;
BEGIN значение регистра
0..9: dec2hexa_one: = chr (значение + 30 долларов США);
10..15: dec2hexa_one: = chr (значение + 37 $);
КОНЕЦ;
КОНЕЦ;
{------------------------------------------------- ----------------------------}
{ФУНКЦИЯ d2h (десятичный_байт): строка2; }
{}
{- преобразовать десятичный байт в его шестнадцатеричное представление. }
{------------------------------------------------- ----------------------------}
ФУНКЦИЯ d2h (значение: байт): строка2;
VAR msbb, lsbb: байт;
НАЧАТЬ msbb: = 0;
если (значение> = 80 долларов США), то
НАЧАТЬ msbb: = msbb + 8;
value: = value- 80 долларов США;
КОНЕЦ;
если (значение> = 40 долларов США), то
НАЧАТЬ msbb: = msbb + 4;
value: = value- 40 долларов США;
КОНЕЦ;
если (значение> = 20 долларов), то
НАЧАТЬ msbb: = msbb + 2;
value: = value- 20 долларов США;
КОНЕЦ;
если (значение> = 10 долларов), то
НАЧАТЬ msbb: = msbb + 1;
value: = value- 10 долларов США;
КОНЕЦ;
lsbb: = 0;
если (значение> = $ 08), то
НАЧАТЬ lsbb: = lsbb + 8;
значение: = значение- 08 $;
КОНЕЦ;
если (значение> = $ 04), то
НАЧАТЬ lsbb: = lsbb + 4;
значение: = значение- $ 04;
КОНЕЦ;
если (значение> = $ 02), то
НАЧАТЬ lsbb: = lsbb + 2;
значение: = значение- $ 02;
КОНЕЦ;
если (значение> = $ 01), то
НАЧАТЬ lsbb: = lsbb + 1;
значение: = значение- 01 $;
КОНЕЦ;
d2h: = dec2hexa_one (msbb) + dec2hexa_one (lsbb);
КОНЕЦ;
{------------------------------------------------- ----------------------------}
Функция Binary (b: byte): string8;
вес var: byte;
s: string8;
НАЧАЛЬНЫЙ вес: = 80 $;
s: = '';
пока (вес> 0) делать
НАЧАТЬ, если ((b и вес) = вес), то s: = s + '1'
иначе s: = s + '0';
weight: = вес div $ 02;
КОНЕЦ;
Двоичный: = s;
КОНЕЦ;
{------------------------------------------------- ----------------------------}
ФУНКЦИЯ Единицы: байт;
VAR u, i: целое число;
s: string8;
НАЧАТЬ u: = 0;
i: = 13;
в то время как (Data = $ FF) делать
НАЧАТЬ u: = u + 8;
я: = я + 1;
КОНЕЦ;
s: = Двоичный (Данные );
в то время как (s [1] = '1') делать
НАЧАТЬ inc (u);
s: = копия (s, 2, длина (s));
КОНЕЦ;
единицы: = u;
КОНЕЦ;
{------------------------------------------------- ----------------------------}
функция Units_2: LongInt;
BEGIN Units_2: = 4096 * Данные [9] + 512 * Данные [10] + 64 * Данные [11] + 8 * Данные [12] + Данные [13];
КОНЕЦ;
{------------------------------------------------- ----------------------------}
ПРОЦЕДУРА Card_Type;
BEGIN данные дела [2] из
$ 03: НАЧАТЬ запись ('Telecard - France -');
Данные дела [12] из
$ 13: написать ('120 единиц -', единиц-130, 'единиц осталось');
$ 06: написать ('50 единиц - ', единиц-60,' единиц осталось ');
$ 15: написать ('40 единиц -', единиц-40, 'единиц осталось');
КОНЕЦ;
КОНЕЦ;
$ 2F: BEGIN write ('Telecard - Germany -', Units_2, 'Units left');
КОНЕЦ;
3 миллиарда долларов: НАЧАТЬ запись ('Telecard - Греция -', Units_2, 'Units left');
КОНЕЦ;
$ 83: НАЧАТЬ запись («Телекарта»);
Данные дела [12] из
$ 1E: написать ('- Швеция');
30 долларов: напишите ('- Норвегия');
$ 33: написать ('- Андорра');
$ 3C: написать ('- Ирландия');
$ 47: написать ('- Португалия');
$ 55: напишите ('- Чешская Республика');
$ 5F: написать ('- Габон');
65 долларов: напишите ('- Финляндия');
КОНЕЦ;
if (Данные [12] в [30 $, 33 $, 3C $, 47 $, 55 $, 65 $]), то
BEGIN case ((Data [3] и $ 0F) * $ 100 + Data [4]) из
$ 012: написать ('- 10 единиц -', единиц-12, 'единиц осталось');
$ 024: написать ('- 22 единицы -', единицы-24, 'Осталось единиц');
$ 027: напишите ('- 25 единиц -', единиц-27, 'Осталось единиц');
$ 032: написать ('- 30 единиц -', единиц-32, 'единиц осталось');
$ 052: напишите ('- 50 единиц -', единиц-52, 'единиц осталось');
$ 067: написать ('- 65 единиц -', единиц-62, 'единиц осталось');
$ 070: написать ('- 70 единиц -', единиц-70, 'единиц осталось');
102 доллара: напишите ('- 100 единиц -', единиц-102, 'единиц осталось');
$ 152: напишите ('- 150 единиц -', единиц-152, 'Осталось единиц');
КОНЕЦ;
КОНЕЦ;
{write ('- N0', Data [5] * $ 100 + Data [6]);}
КОНЕЦ;
КОНЕЦ;
КОНЕЦ;
{------------------------------------------------- ----------------------------}
ПРОЦЕДУРА ожидания;
НАЧАТЬ отправку ($ 00);
напишите ('Введите карту в считыватель и нажмите клавишу ...');
повторять, пока не будет нажата клавиша;
gotoxy (1, где);
клреол;
КОНЕЦ;
{------------------------------------------------- ----------------------------}
ПРОЦЕДУРА Full_Displaying;
НАЧАТЬ Writeln ('Дамп памяти:');
для i: = от 1 до 80 пишите ('-');
for i: = 1 to (byte_number div 6 + 1) do
НАЧАТЬ для j: = от 1 до 6 сделать
НАЧАТЬ, если j + 6 * (i-1) <= byte_number, затем записать (двоичный (Data [j + 6 * (i-1)]): 9);
КОНЕЦ;
gotoxy (60, где);
для j: = от 1 до 6 сделать
если j + 6 * (i-1) <= byte_number, тогда write (d2h (Data [j + 6 * (i-1)]), '');
Writeln;
КОНЕЦ;
для i: = от 1 до 80 пишите ('-');
Тип карты;
Writeln;
КОНЕЦ;
{------------------------------------------------- ----------------------------}
ПРОЦЕДУРА Short_Displaying;
VAR j: целое число;
BEGIN for j: = 1 to byte_number do
НАЧАТЬ запись (d2h (Data [j]), '');
КОНЕЦ;
Writeln;
КОНЕЦ;
{------------------------------------------------- ----------------------------}
ПРОЦЕДУРА Чтение;
VAR i, j: целое число;
Значение: байт;
НАЧАТЬ отправку ($ FE);
отправить ($ F8);
для i: = от 1 до 32 сделать
НАЧАЛО Значение: = 0;
для j: = от 1 до 8 сделать
НАЧАЛО Значение: = Значение * $ 02 + ((получить и $ 08) div $ 08);
отправить ($ FB);
задержка (1);
отправить ($ F8);
КОНЕЦ;
Данные : = Значение;
КОНЕЦ;
показ случая
'F': full_displaying;
'S': short_displaying;
КОНЕЦ;
КОНЕЦ;
{------------------------------------------------- ----------------------------}
ПРОЦЕДУРА написания;
VAR i, n: целое число;
автомобиль: char;
BEGIN write ('Какой бит вы хотите установить в "1":');
readln (п);
ожидающий;
автомобиль: = ключ чтения;
отправить ($ FA);
отправить ($ F8);
для i: = от 1 до n сделать
НАЧАТЬ отправку ($ F9);
если i = n, то
НАЧАТЬ отправку ($ FD);
задержка (20);
отправить ($ FF);
задержка (20);
КОНЕЦ;
отправить ($ FB);
КОНЕЦ;
чтение;
КОНЕЦ;
{------------------------------------------------- ----------------------------}
ПРОЦЕДУРА Сохранение;
VAR filename: строка;
f: текст;
я: слово;
BEGIN write ('Введите имя файла:');
readln (имя файла);
назначить (е, имя файла);
переписать (е);
для i: = 1 в byte_number записать (f, d2h (Data ), '');
закрыть (е);
КОНЕЦ;
{------------------------------------------------- ----------------------------}
ПРОЦЕДУРА инициализации;
VAR i: целое число;
НАЧАТЬ byte_number: = 32;
отображение: = 'F';
clrscr;
Writeln ('1 - сбросить карту 256 бит');
Writeln ('2 - сбросить 128-битную карту');
Writeln ('F - отображать в полном формате');
окно (41,1,80,25);
Writeln ('S - отображать в кратком формате');
Writeln ('F2 - сохранить в файл');
Writeln ('Q - выйти из программы');
окно (1,4,80,25);
для i: = от 1 до 80 пишите ('=');
окно (1,5,80,25);
КОНЕЦ;
{================================================= ============================}
НАЧАТЬ инициализировать;
повторить ожидание;
car: = upcase (ключ чтения);
корпус автомобиля из
«W»: письмо;
«Q» :;
'1': номер_байта: = 32;
'2': byte_number: = 16;
'F', 'S': отображение: = автомобиль;
# 00: НАЧАТЬ автомобиль: = ключ чтения;
если car = # 60, то сохранение;
КОНЕЦ;
еще чтение;
КОНЕЦ;
до car = 'Q';
КОНЕЦ.
--------------- вырезать здесь (конец)
_ / _ / _ / _ / _ / Стефан БАУССОН
_ / _ / _ / _ / _ / Студент инженерного факультета ENSEM (Нанси, Франция)
_ / _ / _ / _ / _ / Smail: 4, Rue de Grand, F-88630 CHERMISEY, France
_ / _ / _ / _ / _ /
_ / _ / _ / _ / _ / Электронная почта: [email protected]-nancy.fr
-------------------------------------------------- ----------------------------
.