cards X

Статус
В этой теме нельзя размещать новые ответы.

MIUS

Moderator
Команда форума
WinExplorer 5.4

WinExplorer 5.4:download:

WinExplorer 5.4 является Win32 GUI приложением, предназначенным для общения с широким кругом smartcards.

Он предназначен как для любителей так и для специалистов. Мощная утилита для программирования smartcards с использованием простого интерфейса.
Это также отличный способ узнать о smartcards, VBScript и JavaScript программировании.




 

Вложения

  • WINEXPLORER 5.4.rar
    1,5 MB · Просмотры: 1.343
Последнее редактирование модератором:

Gesha

ЗЕВС
Команда форума
Ищу сам прогер на ком под эту программу.
нужен феникс, у меня есть, я говорил. правда ничё я там не понял.
только АТР читает и всё.
ничё не понимаю, надо инструкция
 
Последнее редактирование:

MIUS

Moderator
Команда форума
Smart Mouse - популярный интерфейс к смарт-карте

Smart Mouse - популярный интерфейс к смарт-карте :download:

Интерфейс Smart-mouse позволяет подключить смарт-карту стандарта ISO 7816-1/2/3 к последовательному порту вашего компьютера для ее "исследования".

smmouse.gif

Этот интерфейс более аккуратно ведет себя со смарт-картой. Прием и передача данных осуществляются по линиям TxD и RxD RS232, сигнал сброса карты MCLR формируется линией RTS RS232. Тактовая частота карте подается с помощью генератора на 74hc04 , в схеме использован кварц от телесистемы NTSC (частота может быть в пределах 3.54 +/- 10 % - от этого зависит скорость обмена - 9600 бит/сек).

Исследовать карту можно различными способами, например, WinExplorer, а можно написать свою программу, ( Visual BASIC подходит только если не использовать объект MSComm, а работать через Win32 API). При этом обратите внимание на интерпретацию информационных байтов. Попробуйте http://ftpsearch.lycos.com/ и там ввести имя программы. Или взять в этой теме.....

Для изготовления такого интерфейса вам понадобится - печатная плата.

SmartMouse2.gif

Лучшие результаты дает применение интегрированого генератора вместо кварца. Такие производятся, например, EXO или ECS . Он выполнен в обычном DIP копрусе и не требует никакой обвески (левую по схеме микросхему можно исключить). Кроме того - имет встроенный делитель частоты с коэффициэнтом от 2 до 256. Вместо кварца на 3.75 лучше применить 14.318 и включить его с делением на 4. Для E* рекомендую 14.7456 MHz (это 3.6864*4 и тогда скорость будет 115200), для систем тактовой в 6 Мгц. - соответственно 24 МГц. Такой принцип применен в интерфейсах MK-12 / MK-13 ( www.maxking.com ) . Вообще - про временные характеристики стоит поговорить подробнее .

Из этой схемы легко сделать считыватель для профессиональных применений. Для этого нужно задействовать датчик наличия карты и подключить его через MAX232 к линии CTS ( нет карты- CTS Off) и подавать питание на карту и тактовый генератор по сигналу DTR от компьютера - DTR On - устройство включено.




el1dq12zfin6.gif

Незабываем нажимать кнопку СПАСИБО.
Do Not forget to press button THANK YOU.
 

Вложения

  • SmartMouse2.jpg
    SmartMouse2.jpg
    23,9 KB · Просмотры: 65
  • smmouse.jpg
    smmouse.jpg
    21,2 KB · Просмотры: 68
Последнее редактирование:

MIUS

Moderator
Команда форума
Немного о кварцевом генераторе

Немного о кварцевом генераторе или почему "умная мышь" не читает карту :download:​

Немного о кварцевом генераторе или почему "умная мышь" не читает карту

Частота частота кварцевого генератора очень важна для установки скорости обмена с картой. Скорость обмена информацией с картой сразу после сброса определяется по формуле 1/ETU , где ETU=372/частота_генератора_в_гц, т.е. скорость выдачи ATR составит (частота_генератора_в_гц/372) бит/сек.
Если обмен информацией осуществляется через стандартный порт RS232 компьютера, то последний имеет только фиксированые значения скорости приема-передачи. Скорость для микросхемы UART 16550A определяется из соотношения xtal_frequency_in_Hz / 16 / divisor , где divisor может принимать значения 1-65535 , а xtal_frequency = 1.8432 MHz. Это дает нам ряд значений {115200 , 57600, 38400, 28800, 23040, 19200, 14400, 12800, 11520, 9600, 7200, 5760, 4800, 3600, 3200, 2880 и т.д.}, причем многие из этих значений стандартным драйвером не поддерживаются.
Это означает, что если карта в ATR запросит специфическую скорость передачи - стандартный RS232 может с этим не справиться.

Рассмотрим ATR карты Nargavision (карта выдает ATR на при установках 9600, 8, N, 2):
TS T0 TA1 TB1 TC1 TD1 TA2 TD2 TA3 TB3 TC3 H i s t o r i c a l bytes TCK
-----------------------------------------------------------------------------------------------------------------
3F FF 95 00 FF 91 81 71 64 47 00 44 4E 41 53 50 30 30 33 20 52 65 76 33 36 39 F1
TS = 3F => Тип передачи ИНВЕРСНАЯ. (помним, что при этом четностость вместо обычной 'even parity' должна быть 'odd parity')
T0 = FF => TA1, TB1, TC1, TD1 переданы. 15 ($F) исторических байт.
TA1 = 95 => FI = 9, F=512, Fs Max= 5 MHz; DI = 5, D=16 ; рабочее ETU = (1/16)*(512/Fs) = 32/Fs sec, где Fs - частота внешнего генератора
TB1 = 00 => II1 = 0, PI1=0. Programming Current = 25ma, Programming Voltage - No Vpp
TC1 = FF => N=255. Это означает что размер слова сокращен с 12 ETU до 11 ETU, т.е. нужно установить только 1 стоп-бит
(1start bit + 8data bits + 1parity + 1stop = 11 ETU)
TD1 = 91 => TA2, TD2 передан. TB2, TC2 - нет. Субпротоколl: T=1
TA2 = 81 => Изменение режима запрещено, протокол : "async half duplex block format"
TB2 = 00
TC2 = 00
TD2 = 71 => TA3, TB3, TC3 is передан. TD3 - нет. Субпротокол: T=1
TA3 = 64 => Размер блока (Т1) 0x64 байт (100 десятичное)
TB3 = 47 =>Мах. время ожидания символа 25 bit ETU, мах. время ожидания блока 634.9 mSec + 11 ETU
TC3 = 00 => Используется контрольная система LRC (XOR-type)
Исторические байты: 44 4E 41 53 50 30 30 33 20 52 65 76 33 36 39
D N A S P 0 0 3 R e v 3 6 9

Итак, если Fs=3.579545 MHz, то ETU = 8.939 uSec и скорость получится 118 600 бит/сек. При использовании генератора на 4.61 Mhz (такой установлен в тюнере) скорость составит 144 063 . Обозначился тупик. Единственный выход - подбирать частоту кварца.

Весьма подходящей кажется частота 3.6864 MHz. Почему весьма - да потому что такой резонатор серийно не выпускается (во всяком случае- в США). Однако, фирмами EXO и ECS выпускается интегрированый генератор в обычном DIP копрусе со встроенным делителем 1-256 и есть подходящая частота 14.7456 MHz ( 3.6864 х 4 ).

С таким генератором все заработало великолепно. К тому же - если генератор установить в панельку и иметь набор генераторов : 14.318 MHz, 14.7456 MHz и 24.00 MHz то таким набором покрываются почти все известные карты. Именно такое решение применено в известных интерфейсах типа MK.



el1dq12zfin6.gif

Незабываем нажимать кнопку СПАСИБО.
Do Not forget to press button THANK YOU.
 

MIUS

Moderator
Команда форума
Резюме

Туман рассеялся господа форумчане! Теперь может каждый прочитав эту тему говорить на равных с x-card'oм об x-card. Ну а флудеров попрошу не мешать! В файле любезно предоставленном x-card(личная благодарность за тему) есть интересный комментарий
' Wx.ResetLine = 1 ' 0 = Smartmouse: Toggle RTS for Reset, 1 =
Не буду повторять то, что может прочитать каждый и с уверенностью могу сказать что x-card(карта) - это стандартная смарт-карта стандарта ISO 7816 !!!!! Чем её прошивать уже есть.... Теперь дело за малым.... Это где брать свежие скрипты....


Для тех кто интересуется вопросом что такое стандарт ISO 7816 может почитать Основные сведения о смарт-картах

С Уважением MIUS
:big_boss:
 
Последнее редактирование:

MIUS

Moderator
Команда форума
Да, фраза: "Мы идем в мир" - прекрасна!

Согласен что комент от программиста иногда тоже бальзам на душу! Да, фраза: "Мы идем в мир" - прекрасна! !yea! Но лично для меня наиболее интересен закоментированный отладочный или еще какой другой код любезно оставленный разработчиком. Это говорит о том что человек писал для людей! А это уже много значит.!yea!
Вот думаю: переводить или пусть каждый сам переводит winexplorer howto ?.... Ну пока выложу хелп в том виде какой есть. Прямо от автора приложения хелп....
С Уважением MIUS:big_boss:

На мой взгляд, самый интересный комментарий ниже
:)
 

Вложения

  • winexplorerhowto.zip
    1,3 KB · Просмотры: 627

adolf80

Профи в Сат-ТВ
Согласен что комент от программиста иногда тоже бальзам на душу! Да, фраза: "Мы идем в мир" - прекрасна! !yea! Но лично для меня наиболее интересен закоментированный отладочный или еще какой другой код любезно оставленный разработчиком. Это говорит о том что человек писал для людей! А это уже много значит.!yea!
Вот думаю: переводить или пусть каждый сам переводит winexplorer howto ?.... Ну пока выложу хелп в том виде какой есть. Прямо от автора приложения хелп....
С Уважением MIUS:big_boss:
Как я понимаю для всего этого подойдет x-card
описанный в
http://web.tiscali.it/satcoder/fun.htm ???
Если есть возможность переведи текст.
 
Последнее редактирование:
  • Like
Реакции: MIUS

MIUS

Moderator
Команда форума
Ссюда подойдет стандартная карта стандарта Iso 7816

По идее сюда подойдет любая стандартная смарт-карта стандарта ISO 7816. Но утверждать можно только после проверки. Та инфа по x-card выложена здесь для обсуждения просто.... Потому как попалась при поиске истинного варианта. Да и старенькая она.... Современная x-card выглядит скорее немного иначе и скромнее.... Не видел и утверждать твердо о том какая она не могу. Ну а картинки в и-нете прицепить могут всякие.....
Как я понимаю для всего этого подойдет x-card
описанный в
http://web.tiscali.it/satcoder/fun.htm ???
 

Gesha

ЗЕВС
Команда форума
Попробую сделать вывод.

Пока меня не было много написали, потому постараюсь сделать некоторые выводы из того, что я понял.
1. WinExplorer может работать с самыми различными интерфейсами для чтения карт. Для этого просто надо сделать все необходимые настройки и сохранить для наглядности под именем соответствующего интерфейса. Я пробовал с фениксом, кстатьи под него настройки в выложенном 5.4 уже есть.
2. Как я понял эта прога (WinExplorer) всего-навсего может отдавать команды карте и получать ответы. Это всё находится как я понял в скрипте или готовом, или его самому надо писать.
3. Скрипт пишется не под конкретно взятую карту, а под конкретный тип карты.
4. Скрипт может писаться на нескольких языках, которые понимает прога.
Мои комменты к пунктам:
1. это хорошо, не надо сушить голову как найти уникальный прогер, мона юзать что есть под рукой.
2. хоть я и написал "всего-навсего", но это на самом деле очень много, потому как больше и не надо. Исследование карты производится посредством отдачи ей команд и анализа полученных ответов.
3. если сам не умеешь написать скрипт, то надо искать готовые, но и это не поможет, потому что всё равно не поймёшь ничего. Это проверил на себе, толку что нашёл скрипт если я в нём баран. Так же надо хорошо знать команды карт и ответы на них, в общем это не для средних умов.
4. Отношу к положительному, потому как не надо изучать конкретный язык если знаешь другой.

А теперь обращаюсь к тем, кто компетентен в этих вопросах - правильно ли я всё понял, поправьте что не так.
 

MIUS

Moderator
Команда форума
Добавка....

Прога делает с картой то что приказано программером! Скрипт который ты загружал имеет несколько интересных тебе комманд -функций(так более будет понятно):
1) Sc.Reset() - думаю слово Reset знакомо и не нужно переводить... В этой функции можно включать и отключать нужное методом убирания или подставления знака ' . На обычной клаве он находится в английской раскладке там где на русской буква Э!
Ну например в скрипте
' Wx.ClosePort 'init comport: - это отключенно или просто комментарий который прога не читает!
Wx.ClosePort 'init comport: - это подключенно и обязательно к исполнению
Всего лишь апостроф, а сколько сервиса!
2) Sc.Write(CODE) - это уже комманда записи на карту. Ну а далее тоже все просто. Но об этом позже...... Подождем что автор этой темы ответит на твой вопрос.... Думаю что x-card должен сам решить - можно ли дальше в паблик сбрасывать расшифровку скрипта или закроем этот вопрос и пусть народ (если действительно всё работает) получает готовые скрипты. Потому как написание, конечно не сложно, но ведь кто-то не один месяц убил на эту простоту.....
С Уважением MIUS :big_boss:
 

Gesha

ЗЕВС
Команда форума
А в эту карту стандарта Iso 7816 нужно прошивать какую нибудь прошивку кодировки, или только скрипт залить?? Извините я только начинающий!
Стандарт Iso 7816 подразумевает собой назначение, расположение выводов и стандартный протокол общения с картой.
Скрипт нельзя просто залить в карту, нужно по скрипту написать программу под конкретный проц, находящийся в конкретной карте. А потом заливать это дело в виде хекс или бин файлов с помощью прогера для конкретного типа карт.
По идее сюда подойдет любая стандартная смарт-карта стандарта ISO 7816. Но утверждать можно только после проверки.
да нет, никак. в картах стоят разные процы и разный объём памяти.
т.е. даже если предположить что прошивку под х-кард с процом 8535 можно влить в фан с процом 8515 то надо ещё найти фан-4 с соответствующим объёмом памяти. потому как основная масса фанок, что была у нас в ходу - это фан-2 с памятью 24С64(8 кБ), а в Х стоит 24С256(32кБ).
Геша оч. желает это проверить. У него есть интерфейс и карта.
Геша ждемс результатов от вас!
я не копенгаген в мудрых вопросах скриптов и писания программ. так что давайте прошивку под карточку и я её тупо зашью и проверю, правда в том случае если будет под фан-2, голд или силвер. а других карт в руках у меня нет просто....:(
 

MIUS

Moderator
Команда форума
Да вот они родимые....

Да вот они родимые.... Да простят меня модераторы раздела за дублирование, но это скрипты из этой темы и выложенные members еще до того как было найденно чем и как.... Это чтобы тебе не рыскать по теме....
С Уважением MIUS
:big_boss:
 

Вложения

  • ntv+via2.5.zip
    10,7 KB · Просмотры: 373
  • xcard.rar
    10,5 KB · Просмотры: 432
Последнее редактирование модератором:

alexlav

Гуру
re

Ну, это ты здря..Ты про скрипты от Кузи слыхал?Которые намертво прибивали официалки..??Бездумный запуск скрипта убъет карту наповал..А это как никак 100енотов..
2.3 и 2.4 лично юзал и переписывал скриптами от Масяни и Северного Мишки..(2002-2005 годы).
Для начала надо просто запустить Феник(3,57 мГц) с прогой CardInfo и увидеть классы, подписки и пр..лабуду..
 

Вложения

  • CardInfo.rar
    168,7 KB · Просмотры: 523

alexlav

Гуру
Re

Один из лучших(на мой взгляд)Фениксов- это SoloGWR, так как совмещает в себе Феникс и JDM программер..Пишет как карты, так и отдельные чипы..
Если из под IC-Prog в карту накатать boot, то потом в карту можно писать уже шо угодно..
Буты для ГолдВафера,Сильвера и Фана прилагаю
 

Вложения

  • Loaders.rar
    5,5 KB · Просмотры: 326
  • soloGWR.rar
    420,6 KB · Просмотры: 396

geonick

Модератор EuroSat
Учите матчасть прежде чем писать...
Если ты внимательно прочитал тему, никто здесь не возомнил себя офигенным программистом или хэкером. У большинства белые, большие пятна в этой области, потому что до сих пор на форумах сидели дядьки, которые в штаны клали только от одного слова взлом, а если еще в сочетании с +++ то вообще чуть себе и другим форумчанам харакири не устраивал.
Что, как, чем? если знаете - пишите. А прикалываться не стоит.
[HIDE-POSTS=50]Я пообщался с продавцом (арабом) карт виста. Насчет открытия +ов ответ был отрицательный. Только картами абра.[/HIDE]
 
Последнее редактирование:

sat-35

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

geonick

Модератор EuroSat
хотя саму карту купил бы для экспериментов
До покупки надо узнать, стоит ли? Ведь у нас сначала продают (втридорога), а потом узнают от других что же они продали.
Как видишь, информацию собираем по крупицам, так что подключайся своими знаниями.
 
Последнее редактирование:

MIUS

Moderator
Команда форума
Обмен данными со смарт-картой
--------------------------------

Александр Борзов (с) 1998
e-mail: [email protected]


Данное описание построено на основе стандарта ISO 7816-3

Оборудование
============
Для работы с картами я использовал интерфейс Smart Mouse, известный
также под названиями Phoenix или Dumb Mouse.
Схему такого интервейса можно найти во многих местах.
Этот интерфейс работает через COM-порт компьютера.
Кроме этого, существует ряд схем интерфейса, использующих принтерный
порт, но я не рекомендовал бы это. Хотя такой интерфейс и имеет
ряд неоспоримых преимуществ, спалить принтерный порт гораздо легче,
чем RS232.

Немного о интерфейсе Smart Mouse.
В настоящее время этот интерфейс выпусается многими фирмами, по
большей части китайскими. Его стоимость - около 40 USD, как
правило, он не сопровождаетсмя никакими драйверами.

PC Карта

Назначение Контакт Направление
DB9

Передаваемые 3 TxD ---->
данные
Принимаемые 2 RxD <----
данные
Сброс 7 RTS ----->

Питание * 4 DTR ----->

Наличие 8 CTS <----
карты


* к устройству может быть подведено внешнее питание 5-9 вольт,
"-" в центре разьема.

Устройство имеет собственный тактовый генератор частотой
3.579545 MГц.

Если внешнее питание не подано - питание на карту подается по
линии DTR установкой на ней "1". Сразу же после подачи
питания начинает работать тактовый генератор.
Сброс карты формируется линией RTS. Для обеспечения работы карты
на контакте ISO:C2 должна быть "1", что выполняется подачей "1"
на RTS. Сброс карты происходит в момент, когда на ISO:C2 - "0".
Линия CTS связана с датчиком наличия карты. При отстутствии карты
на CTS "0".

Обратите внимание - интерфейс имеет внутренее эхо - то есть
все выводимые вами данные одновременно поступают в буфер ввода
RS232. Это следует учитывать при анализе откликов карты.




Актитвация и деактивация Карты
==============================

Единица измерения времени
-------------------------
Все временные характеристи при работе с картами выражаются в ETU -
Elementary Time Unit.
Для карт с внутренним тактовым генератором ETU=1/9600 сек, для карт
с внешним тактовым генератором ETU=372/частота_генератора_в_гц,
однако эти параметры могут быть изменены специальной процедурой
согласования параметров интерфейса - см.ниже.

Стандарт ISO рекомендует применять для тактового генератора наиболее
распространенные кварцевые резонаторы 3.579545 MГц и 4.9152 МГц.
В интерфейсе Smart Mouse генератор внешний, частота 3.579545 MГц,
то есть ETU=0.1039 миллисекунды.


Сброс карты
------------
Для старта обмена с картой необходимо сформировать ее активизировать,
сформировав сигнал Reset

По ISO он форируется такой последовательностью сигналов:
-> RST(ISO:C2) Низкое
-> Питание (ISO:C1) Установить
-> I/O (ISO:C7) Готовность_к_приему
-> VPP (ISO:C6) Низкое
-> Такт_частота (ISO:C3) Подать
-> RST (ISO:C2) Высок.

В SmartMouse эти сигналы формируются с помощью линий RS232:
-Включить питание ISO:C1=+5v - DTR=1
-Сигнал сброса RST(ISO:C2)=1 - RTS=1
-Тактовая частота подается на ISO:C3 вместе с питанием +5v
-Напряжение программирования VPP на ISO:C6 всегда равно напряжению питания.

Сразу же оговорим и процедуру деактивации карты:
-> RST(ISO:C2) Низк.
-> Такт_частота (ISO:C3) Снять
-> VPP (ISO:C6) Низк.
-> I/O (ISO:C7) Низк.
-> Питание (ISO:C1) Низк.


Последовательный Ввод/Вывод
===========================
Для начала обратимся к схеме передачи байта в RS232:

Байт, обозначение битов которого приведено ниже:
,----,----,----,----,----,----,----,----,
| b8 | b7 | b6 | b5 | b4 | b3 | b2 | b1 |
'----'----'----'----'----'----'----'----'
в интерфейсе RS232 передается так:

Старт Бит Следующий
Бит <--- 8 бит данных ---->Четности СтартБит
'1' -12V ________ __________________________________ ... Mark
| | | | | | | | | | | | | |
| С|b1|b2|b3|b4|b5|b6|b7|b8| Ч| 1 2 | C|
'0' +12V |__|__|__|__|__|__|__|__|__|__| |__|_ Space
< Стоп>
Биты (1 или 2)

Бит четности добавляется к битам данных для обнаружения ошибок.
Возможны фактически пять видов установок: по нечетности (Odd),
по четности (Even) и дополнительные : Нет (None), '1' (Mark),
'0' (Space).
Когда установлен Контроль по четности (Even) то бит четности принимает
такое значение, чтобы вместе с ним (не считая стартовые и стоповые)
число '1' (Mark) в байте было четно .
Когда установлен Контроль по нечетности (Odd) то бит четности принимает
такое значение, чтобы вместе с ним (не считая стартовые и стоповые)
число '1' (Mark) в байте было нечетно .
Дополнительные установки - Нет - бит отсутствует, Mark - бит всегда '1',
Space - бит всегда '0'.


Схема передачи байта в ISO7816
------------------------------
Стандарт ISO 7816 предусматривает очень похожую схему передачи байта:
,----,----,----,----,----,----,----,----,
| ba | bb | bc | bd | be | bf | bg | bh |
'----'----'----'----'----'----'----'----'

Старт Бит Следующий
Бит <--- 8 бит данных ---->Четности СтартБит
Z ____ ____________________________.....__ _
| | | | | | | | | | | | |
| С|ba|bb|bc|bd|be|bf|bg|bh| Ч|Интервал| С|
A |__|__|__|__|__|__|__|__|__|__| |__|_

Первое отличие от RS232 - обратный порядок следования битов - то есть,
если в RS232 первым передается младший бит, то в ISO первым передается
старший бит В отличие от RS232, где уровни обозначены как M(ark)=high
и S(pace)=low в ISO уровни обозначены как Z и A.
Их соответствие мы рассмотрим ниже.

Скорость передачи
-----------------
Стандартная длительность бит = ETU +/-0.2ETU .
В случае, когда ETU=0.1039 миллисекунды это вполне соотвествует скорости
интерфейса 9600 бит/сек (длительность бита 0.1041 мс).

Интервал
--------
Стандарт определяет интервал между последовательными байтами длиной в
два бита. Это соответствует установке в RS232 2-х стоп-бит.


Контроль четности
------------------
Стандартом предусматривается контроль по четности (Even) - то есть
бит четности устанавливается так, чтобы число "1" в байте вместе с
битом четности было четно.


При асинхронной посимвольной передаче имеется небольшая проблема с
диагностикой ошибок.
ISO 7816-3 определяет обнаружение ошибок и операцию восстановления
(обязательные для T=0) так, что это не может обнаруживаться нормальным
UART.
Когда карта обнаруживает ошибку четности при приеме, по стандарту она
сбрасывает линию I/O в состояние S(pace)=low в середине первого бита
интервала. Однако, RS232 в это время продолжает работу и формирует
два стоп-бита.
Передача данных без ошибок:

Старт-бит Следующий Старт-бит
_____ __________________________________ ___________
|C | | | Байт i | | |P | | |C | Байт i+1
|__|__|__|__|__|__|__|__|__|__| |__|___________
Бит <----->
четности Интервал

Передача данных с ошибкой четности:

Старт-бит Следующий Старт-бит
_____ ____________________________ ___________
|C | | | Байт i | | |P | | |C | Байт i+1
|__|__|__|__|__|__|__|__|__|__| |_____|__|___________
Бит <--->
четности Сигнал
ошибки

Когда такое состояние возникает, интерфейс должен повторно передать
ошибочный символ.
Однако, передатчик, формирующий в этот момент стоп-биты, уровень которых
M(ark)=high, никак не может обнаружить сигнал ошибки и, как следствие,
в случае ошибки - повторить ошибочный байт.


ATR-Answer To Reset
=====================

После сброса карты она формирует ATR - Answer To Reset в таком виде:

Reset
|
| _________________________________________ _________
| | | | | | | | | | | | | | |
'-->| TS| T0|TA1|TB1|TC1|TD1|TA2|TB2|TC2|TD2| ....| TK|TCK|
|___|___|___|___|___|___|___|___|___|___|_ _|__ |___|


НАПРИМЕР:
карты, применяемые в системе D2MAC/Eurocrypt спутникового телевидения
формируют такой ATR:
3F 67 2F 00 11 14 00 03 68 90 00

карты, применяемые в сотовых телефонах GSM
(компания North-West GSM, Санкт-Петербург):
3F 2F 00 80 69 AF 02 01 01 35 00 01 0A 0E 83 1E

TS - наиболее важный байт "Инициирующий Символ".
------------------------------------------------

Возможно два варианта этого байта:

1. Вариант - "ИНВЕРСНАЯ ПЕРЕДАЧА"
-----------
В этом варианте все биты инвертированы так, что A='1', Z='0'
Диаграмма передачи TS в этом случае выглядит так:

Z ____ _____ __ _.....__ _ RS232-Mark -12V
| | | | | | | |
| С| 1 2| 3 4 5 6 7 8| Ч|Интервал| С|
A |__| |__|__|__|__|__|__| |__|_ RS232-Space+12V

При чтении байта через RS232 это Hex 03 (00000011) - вспомните про обратную
последовательность битов (инверсия последовательности - 11000000 ).
На самом деле -это Hex 3F (инверсия битов 00111111 ).

В Hex 3F (00111111) число '1'=6, то есть бит четности следует установить
в '0', чтобы общее количество '1' было четным, то есть Бит_четности=Z.
Однако, с точки зрения RS232 в последовательности 00000011+Бит_четности=1
нечетное количество бит, и при установке контроля Even, принятого в ISO,
возникнет ошибка.
В данном варианте контроль четности следует установить обратный -
то есть Odd.
 

MIUS

Moderator
Команда форума
2. Вариант - "ПРЯМАЯ ПЕРЕДАЧА"
------------
В этом варианте A='0', Z='1'
Диаграмма передачи TS в этом случае выглядит так:

Z ____ _____ ________ __ _.....__ _ RS232-Mark -12V
| | | | | | | | | | | |
| С| 1 2| 3| 4 5 6| 7 8| Ч|Интервал| С|
A |__| |__| |__|__| |__|_ RS232-Space+12V


При чтении байта через RS232 это это Hex 3B ( 00111011) - вспомните про
обратную последовательность битов (инверсия последовательности - 11011100 ).
В Hex 3B (00111011) число '1'=5, то есть бит четности следует установить
в '1',то есть Бит_четности=Z. C точки зрения RS232 контроль такой же
- по четности - Even.


Прочитав через RS232 первый байт ATR (TS) можно сделать вывод об
интерпретации последующих байтов.
В случае TS=03 - "ИНВЕРСНАЯ ПЕРЕДАЧА", и на самом деле TS=3F
В случае TS=3B - "ПРЯМАЯ ПЕРЕДАЧА".

T0 - Байт формата
------------------

Бит-карта в старших 4-х битах определяют передачу последующих байт TA1-TD1:
,----,----,----,----,----,----,----,----,
| ba | bb | bc | bd | be | bf | bg | bh |
'----'----'----'----'----'----'----'----'
^ ^ ^ ^ <-- значение K -->
| | | |_________ если 1 - TA1 передается (см.выше)
| | |_____________ если 1 - TB1 передается
| |__________________ если 1 - TС1 передается
|_______________________ если 1 - TD1 передается

Старшие четыре бита - число Y1 - определяют передачу байт TA1-TD1.
Младшие 4 бита - число K - количество т.н. "Исторических байт",
которые описывают конкретную карты - время ее жизни, дату выпуска.
Возвращаясь к карте системы Eurocrypt, где T0=67, отметим:
- последуют интерфейсные байты TB1 и TC1 (всего два)
- будет всего 7 "Исторических байт".

Набор следующих байтов TAi TBi TCi TDi описывает детальные параметры
протокола карты, причем байты TA1 TB2 TC3 TD4 принято называть
глобальными интерфейсными.

Байт TA1
--------
Старшая половина байта TC1 содежит параметр FI, который используется для
вычисления ETU при использовании внешнего генератора:
ETU=F/частота_генератора_в_гц
По умолчанию - FI=1, F=372 (таблицу соответствия FI->F можно найти в ISO).
Младшая половина байта TC1 содежит параметр DI, который используется для
вычисления ETU при использовании внутренннего генератора:
ETU=D/9600 сек.
По умолчанию - DI=1, D=1 (таблицу соответствия DI->D можно найти в ISO).

Байт TB1
--------
Старший бит байта TB1 всегда 0.
,----,----,----,----,----,----,----,----,
|ba=0| bb | bc | bd | be | bf | bg | bh |
'----'----'----'----'----'----'----'----'
<--II1 -> < -------- PI1 -------->
Остальные содежат:
- параметр PI1, который определяет значение P - величину напряжения
программирования VPP.
PI1=0 означает, что карта использует собственное питание для
напряжения программирования.
Значения PI1 от 5 до 25 определяет величину напряжения программирования
так P=PI1 volt.
- параметр II1, который определяет значение I максимальное потребление
тока при программировнии.
Может принимать три значения: II1=00 - I=25 ma, II1=01 - I=50 ma, II1=10 - I=100 ma.
По умолчанию P=5 , I=50 .


Байт TC1
--------
Байт TC1 содежит параметр N - дополнительное увеличение интервала меджу
байтами, требуемое картой. По умолчанию N=0.


Байт TD1
--------
Бит-карта в старших 4-х битах определяют передачу дополнительных байт
TA2-TD2 также, как и в T0.
Четыре младших бита в TD1 описывают тип протокола.
Могут быть следующие значения:

0 = T0 - асинхронный полудуплексный посимвольный протокол
1 = T1 - асинхронный полудуплексный блочный протокол
остальные значения пока зарезервивированы.
Если TD1 вообще не передается - принимается TD1=0
- то есть протокол T0.


Байт TA2
--------
Байт TA2 индицирует возможность настройки параметров протокола карты
в процессе работы.
,----,----,----,----,----,----,----,----,
| ba | bb | bc | bd | be | bf | bg | bh |
'----'----'----'----'----'----'----'----'
| <-Резерв->
|
---- 0 - возможна смена параметров протокола
1 - смена параметров невозможна

Если TA2 отсутствует в ATR - принимается TA2=0

"Исторические байты"
--------------------
Исторические байты описывают конкретную карты - время ее жизни,
дату выпуска и т.п. Их значение определяется производителем карты.


Рабочее время ожидания - WI
---------------------------
Этот параметр определяется TC2. Если TC2 в ATR не был передан -
считается WI=10.
Рабочее время ожидания используется для ограничения времени ответа
карты и интерфейса.
Интервал между старт-битом текущего байта и старт-битом предыдущего
байта не может превышать 960*WI Etu, причем текущий байт может исходить
из карты, а предыдущий - из интерфейса и наоборот.
(в нашем примере MaxTime=997.44 миллисекунды)


Байт контроля TCK
-----------------
Контрольный байт. Вычисляется так: Исключающее_Или всех байтов ATR,
включая байты, равные нулю (или не переданные) должно равняться 0;
В протоколе T0 он не передается.
В протоколе T1 он завершает последовательность ATR.



Итак, теперь мы знаем, что означают байты в нашем примере ATR:

3F 67 2F 00 11 14 00 03 68 90 00

TS=3F ;
T0=67 ;
TA1=0 (не передан) +> ETU=372/частота_генератора_в_гц или ETU=1/9600 сек ;
TB1=2F => II1=2 , PI1=15 => I=100 ma, P=15 v. ;
TC1=0 => N=0 , дополнительное увеличение интервала меджу байтами не треб.;
TD1=0 (не передан) => Протокол T0 - асинхронный полудуплексный посимвольный;
TC2=0 (не передан) => Возможна смена параметров протокола;
TA2=0 (не передан) => Рабочее время ожидания WI=10 Etu ;
"Исторические байты" = 11 14 00 03 68 90 00

Приложение 1:

Возможные значения делителя тактовой частоты
внешнего генератора
---------Таблица соответствия FI - F --------------------------
FI | 0000 0001 0010 0011 0100 0101 0110 0111
-------+-------------------------------------------------------
F | Встр.генератор 372 558 744 1116 1488 1860 RFU
-------+-------------------------------------------------------
FI | 1000 1001 1010 1011 1100 1101 1110 1111
-------+-------------------------------------------------------
F | RFU 512 768 1024 1536 2048 RFU RFU
-------+-------------------------------------------------------
RFU - зарезервировано

Возможные значения делителя тактовой частоты
внутреннего генератора
---------Таблица соответствия DI-D --------------------
DI | 0000 0001 0010 0011 0100 0101 0110 0111
------+------------------------------------------------
D | RFU 1 2 4 8 16 RFU RFU
-------------------------------------------------------
-------------------------------------------------------
DI | 1000 1001 1010 1011 1100 1101 1110 1111
------+------------------------------------------------
D | RFU RFU 1/2 1/4 1/8 1/16 1/32 1/64
-------------------------------------------------------
Настройка параметров протокола (PTS)
=====================================
Если карта допускает настройку параметров протокола, то это должно быть
сделано непосредственно после ATR.
В процессе настройки параметров протокола возможна переустановка параметров
F и D для согласования скоростей работы карты и интерфейса.
Запрос PTS - настройки параметров протокола выполняется шестью байтами:
_______________________________________________
| | | | | | |
| PTSS | PTS0 | PTS1 | PTS2 | PTS3 | PCK |
|_______|_______|_______|_______|_______|_______|

Назначение этих байт:

PTSS - Инициирующий байт. Всегда FF Hex;
PTSO - Байт формата. Бит-карта в битах 5-6-7 значением '1' определяет
последуют ли байты PTS1,PTS2,PTS3. В четырех младших битах -
значение типа протокола 0-T0 или 1-T1;
PTS1 - содержит запрашиваемые значения FI (в старшей половине байта) и
DI (в младшей половине байта);
PTS2 - зарезервировано для последующего применения;
PTS3 - зарезервировано для последующего применения;
PCK - Контрольный байт. Вычисляется так: Исключающее_Или всех байтов от
PTSS до PCK, включая байты, равные нулю (или не переданные)
должно равняться 0;


В подтверждение запроса карта отвечает точно такой же последовательностью.
Однако, если бит 5 в байте PTS1 равен '1' - карта все равно использует
значения FI и DI по умолчанию.
Очень редкие карты допускают изменение протокола.
Структура и обработка команд в субпротоколе Т0
=============================================

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

Команда всегда инициализируется интерфейсом. Интерфейс сообщает
о том, что делать в заголовке из 5 байт:
_______________________________________
| | | | | |
| CLA | INS | P1 | P2 | P3 |
|_______|_______|_______|_______|_______|


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

* Заголовок Команды.
====================
- CLA - класс команды. Значение FF зарезервировано для PTS.
- INS - команда в классе команд. Значение команды имеет следующие
ограничения: младший бит всегда 0, и старшая половина байта не является
ни 6, ни 9.
- P1, P2 - дополонительные параметры (например адрес) завершающие команду.
- P3 - число байт данных (D1, ..., Dn) которые должны быть переданы
в этой команде. Направление движения этих данных определяется командой.
Причем, если передача данных из карты, P3=0 представляет передачу 256
байт из платы. При передачи данных карте, P3=0 означает отсутствие
данных.

После передачи заголовка в 5 байтов, устройство интерфейса ждет
байт процедуры.

* Байт Процедуры
================
Посылается картой и определяет действие, запрошенное у интерфейса.
Возможны три типа байт процедуры :

- NULL: (= $ 60) Этот байт посылается картой при перезапуске,
чтобы предупредить о последующем байт процедуры.
Не запрашивает никакого действия ни с VPP, ни с данными.

- SW1 (= $6x или $9x, исключая $60): устройство интерфейса убирает VPP
и ждет байт SW2 завершающий команду.

- ACK: Определяет управление VPP (напряжением программирования)
и передачей дальнейших данных.


В каждом байте процедуры карта может ответить ACK-байтом, NULL-байтом,
ничего не ответить или закончить команду последовательностью SW1-SW2.


Интерпретация байта процедуры
=============================
Всего возможно шесть ситуаций:

Ситуация | Байт | Значение | Что сообщается интерфейсу
---------+----- + -------- + ---------------------------------------
0 | NULL | $ 60 | Никакого действия с VPP. Устройство интерфейса
| | | ждет нового байта процедуры
---------+----- + ------- + ---------------------------------------
1 | SW1 | SW1 | VPP не требуется. Интерфейс ждет байт SW2
---------+----- + ------- + ---------------------------------------
2 | | INS | VPP не требуется. Можно передавать все
| | | остающиеся байты данных (Di, ..., Dn).
| | |
3 | | INS + 1 | Требуется VPP. Можно передавать все остающиеся
| | | байты данных (Di, ..., Dn).
| ACK | ___ |
4 | | INS | VPP не требуется. Можно передавать один
| | | следующий байт данных.
| | _______ |
5 | | INS + 1 | Требуется VPP. Можно передавать один
| | | следующий байт данных.

(примечание - надчеркивание означает инверсию)

Внимание: Любая смена состояния VPP должена произойти за время прохождения
байта процедуры, или за время специального ожидания.

Выполнив запрошенные действия интерфейс ждет новый байт процедуры.


Интерпретация Байт Состояния
============================
SW1 = $6x или $9x, исключая $ 60
SW2 = любое значение)

Конечная последовательность SW1-SW2 определяет состояние карты
в конце команды.

Нормальное окончание - SW1=$90, SW2=$00 .

Если старшая половина байта SW1 - $ 6, то значение SW1 не зависит от
прикладной программы. Определны следующие пять значений SW1 в таком
случае:
- $6E плата не поддерживает класс команды.
- $6D команда не запрограммирована или недопустима.
- $6B неправильная ссылка (P1/P2).
- $67 неправильная длина.
- $6F Точная диагностика не дана.

Другие значения зарезервированы для будущего использования ISO7816.

Если SW1 не равен $6E и не равен $6D, то карта поддерживает
переданную команду.
Стандарт ISO7816 не оговаривает ни значения байт SW1=$9х ,
ни значения байт SW2, это касается прикладной программы карты.

Известны следющие комбинации:
SW1 SW2 Значение
--------------------------------
62 81 Returned data may be corrupted.
62 82 The end of the file has been reached before the end of reading.
62 84 Selected file is not valid.
65 01 Memory failure. There have been problems in writing or reading
the EEPROM. Other hardware problems may also bring this error.
68 00 The request function is not supported by the card.
6A 00 Bytes P1 and/or P2 are incorrect.
6A 80 The parameters in the data field are incorrect.
6A 82 File not found.
6A 83 Record not found.
6A 84 There is insufficient memory space in record or file.
6A 87 The P3 value is not consistent with the P1 and P2 values.
6A 88 Referenced data not found.
6C XX Incorrect P3 length.


Структура и обработка команд в субпротоколе Т1
=============================================
На момент написания статьи только одна из известных карт поддерживала
субпротокол Т1 - карта спутниковой системы Dishnetwork
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху