Smart Card
От: snslabs Россия  
Дата: 11.01.09 13:33
Оценка:
Привет всем!
Надеюсь найдутся люди которые в теме.
Вопрос первый, есть ли сколь-нибудь вменяемая утилита показывающая содержимое смарт карты?
Вопрос второй, как определить тип смарт карты?

предыстория: человек подсунул несколько смарт-карточек и Gemalto карт-ридер. В спеках написано что кардридер работает с кучей типов карт:

2 wire card type (SLE 4432/42, GPM2k)
3 wire card type (SLE 4418/28, GPM8k)
SDA wire card type (GFM 2k, 4k … 32k)
4403 card type (GPM 103)
4404 card type (GPM416)
896 card type (GPM896)
4433 card type (GAM 226/326/626)

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

Всем спс за ответы.
smart card
Re: Smart Card
От: boris_ Германия  
Дата: 12.01.09 10:40
Оценка:
Здравствуйте, snslabs, Вы писали:

S>Привет всем!

S>Надеюсь найдутся люди которые в теме.
S>Вопрос первый, есть ли сколь-нибудь вменяемая утилита показывающая содержимое смарт карты?
Одно из назначений смарт карты — скрывать свое содержимое от всех "вменяемых утилит"


S>Вопрос второй, как определить тип смарт карты?

Нужно посмотреть ATR карты.

Для работы со смарт картами ( reader-ом) используй Scard-API. ( ScardConnect и прочая )

S>предыстория: человек подсунул несколько смарт-карточек и Gemalto карт-ридер. В спеках написано что кардридер работает с кучей типов карт:


S>2 wire card type (SLE 4432/42, GPM2k)

S>3 wire card type (SLE 4418/28, GPM8k)
S>SDA wire card type (GFM 2k, 4k … 32k)
S>4403 card type (GPM 103)
S>4404 card type (GPM416)
S>896 card type (GPM896)
S>4433 card type (GAM 226/326/626)

S>сама карточка выглядит как невыломаная симка или как банковская карточка с чипом GemPlus без магнитной полосы.


Так выглядят почти все Smart cards.
Re[2]: Smart Card
От: snslabs Россия  
Дата: 12.01.09 12:21
Оценка:
Здравствуйте, boris_, Вы писали:

_>Здравствуйте, snslabs, Вы писали:


S>>Привет всем!

S>>Надеюсь найдутся люди которые в теме.
S>>Вопрос первый, есть ли сколь-нибудь вменяемая утилита показывающая содержимое смарт карты?
_>Одно из назначений смарт карты — скрывать свое содержимое от всех "вменяемых утилит"


S>>Вопрос второй, как определить тип смарт карты?

_>Нужно посмотреть ATR карты.

_>Для работы со смарт картами ( reader-ом) используй Scard-API. ( ScardConnect и прочая )


S>>предыстория: человек подсунул несколько смарт-карточек и Gemalto карт-ридер. В спеках написано что кардридер работает с кучей типов карт:


S>>2 wire card type (SLE 4432/42, GPM2k)

S>>3 wire card type (SLE 4418/28, GPM8k)
S>>SDA wire card type (GFM 2k, 4k … 32k)
S>>4403 card type (GPM 103)
S>>4404 card type (GPM416)
S>>896 card type (GPM896)
S>>4433 card type (GAM 226/326/626)

S>>сама карточка выглядит как невыломаная симка или как банковская карточка с чипом GemPlus без магнитной полосы.


_>Так выглядят почти все Smart cards.


А что значит посмотреть ATR карточки? есть какая-то функция которую можно дёрнуть в card api? или это часть протокола обмена с апплетиками которые в ней стоят?
Re[3]: Smart Card
От: boris_ Германия  
Дата: 12.01.09 12:52
Оценка:
Здравствуйте, snslabs, Вы писали:

S>А что значит посмотреть ATR карточки? есть какая-то функция которую можно дёрнуть в card api? или это часть протокола обмена с апплетиками которые в ней стоят?


Функция SCardConnect заставляет ридер подать напряжение на карту.
В случае успешного выполнения карта отвечает последоватьностью байт AnswerToReset, где закодированы тех. параметры + ( часто, но не всегда) информация о производителе и OS карты. Получить ATR можно функцией SCardGetAttrib. Только после коннекта можно посылать карте команды ( зависят от типа карты ) , в том числе грузить апплеты ( поддерживается только т.н. Java картами — содержат Java-машину) и рулить ими.
Re[4]: Smart Card
От: snslabs Россия  
Дата: 15.07.09 17:48
Оценка:
Здравствуйте, boris_, Вы писали:
_>Функция SCardConnect заставляет ридер подать напряжение на карту.
_>В случае успешного выполнения карта отвечает последоватьностью байт AnswerToReset, где закодированы тех. параметры + ( часто, но не всегда) информация о производителе и OS карты. Получить ATR можно функцией SCardGetAttrib. Только после коннекта можно посылать карте команды ( зависят от типа карты ) , в том числе грузить апплеты ( поддерживается только т.н. Java картами — содержат Java-машину) и рулить ими.

Спасибо огромное Пол года простоя проекта, и я вот снова к нему возвращаюсь
Разобрался со SmartCard API существующим в Windows — теперь осталось дело за малым — понять как с ним работать =)

Задача на первый момент стоит простая — считать/записать в открытую область памяти карточки данные.
Перекапываю доки производителя картридера сплошные ссылки на их собственный API (Gemalto CILK API). Складывается ощущение что работать с картой в таком ключе можно только через их DLL-ки.

Настораживает наличие функции SCardTransmit в Winscard.h — я так понимаю что это функция используется для отправки ADPU команды на карту и получения ответа... Можно ли при помощи неё решить задачу?

И вообще — главный вопрос — где можно найти нормальный хелп по ADPU? Сегодня перерыл пол интернета — везде какие-то обрывки отдельных команд.

Не подскажете?
Re[4]: Smart Card
От: snslabs Россия  
Дата: 15.07.09 17:54
Оценка:
Здравствуйте, boris_, Вы писали:
_>Функция SCardConnect заставляет ридер подать напряжение на карту.
_>В случае успешного выполнения карта отвечает последоватьностью байт AnswerToReset, где закодированы тех. параметры + ( часто, но не всегда) информация о производителе и OS карты. Получить ATR можно функцией SCardGetAttrib. Только после коннекта можно посылать карте команды ( зависят от типа карты ) , в том числе грузить апплеты ( поддерживается только т.н. Java картами — содержат Java-машину) и рулить ими.

Странно — но карточка выдаёт ATR = ';*' Это нормально?
Re[5]: Smart Card
От: snslabs Россия  
Дата: 15.07.09 18:02
Оценка:
Здравствуйте, snslabs, Вы писали:

S>Здравствуйте, boris_, Вы писали:

_>>Функция SCardConnect заставляет ридер подать напряжение на карту.
_>>В случае успешного выполнения карта отвечает последоватьностью байт AnswerToReset, где закодированы тех. параметры + ( часто, но не всегда) информация о производителе и OS карты. Получить ATR можно функцией SCardGetAttrib. Только после коннекта можно посылать карте команды ( зависят от типа карты ) , в том числе грузить апплеты ( поддерживается только т.н. Java картами — содержат Java-машину) и рулить ими.

S>Странно — но карточка выдаёт ATR = ';*' Это нормально?


простите великодушно... туплю... вот ATR : 3B 2A 00 80 65 A2 01 01 01 40 72 D6 43
Производитель карты Gemalto (GEMPLUS).
Re[5]: Smart Card
От: boris_ Германия  
Дата: 15.07.09 20:51
Оценка:
Здравствуйте, snslabs, Вы писали:


S>Задача на первый момент стоит простая — считать/записать в открытую область памяти карточки данные.

S>Перекапываю доки производителя картридера сплошные ссылки на их собственный API (Gemalto CILK API). Складывается ощущение что работать с картой в таком ключе можно только через их DLL-ки.
Производитель ридера поставляет или PCSC драйвер или собственный API или и то и то. Вы должны проверить , установлен ли PCSC драйвер? ( например заглянув в девайс менеджер — есть ли соотв. устройство в списке ридеров).
PCSC драйвер дает возможность использования устройства программами 3-их производителей, не знающих специфики устройства
Собственный API наоборот требует знания специфики устройства — соотв. плюсы и минусы.

S>Настораживает наличие функции SCardTransmit в Winscard.h — я так понимаю что это функция используется для отправки ADPU команды на карту и получения ответа... Можно ли при помощи неё решить задачу?

Да если знать какие АПДУ посылать, а они специфичны для каждого приложения на карте. Естественно необходимое условие — наличие PCSC драйвера.

S>И вообще — главный вопрос — где можно найти нормальный хелп по ADPU? Сегодня перерыл пол интернета — везде какие-то обрывки отдельных команд.

АПДУ специфичны для каждого приложения на карте. Первые 4 байта более менее классифицируются , а остальное — казацкая вольница.

S>Не подскажете?

Постатаюсь
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.