Привет всем!
Надеюсь найдутся люди которые в теме.
Вопрос первый, есть ли сколь-нибудь вменяемая утилита показывающая содержимое смарт карты?
Вопрос второй, как определить тип смарт карты?
предыстория: человек подсунул несколько смарт-карточек и 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 без магнитной полосы.
Здравствуйте, 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 без магнитной полосы.
Здравствуйте, 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? или это часть протокола обмена с апплетиками которые в ней стоят?
Здравствуйте, snslabs, Вы писали:
S>А что значит посмотреть ATR карточки? есть какая-то функция которую можно дёрнуть в card api? или это часть протокола обмена с апплетиками которые в ней стоят?
Функция SCardConnect заставляет ридер подать напряжение на карту.
В случае успешного выполнения карта отвечает последоватьностью байт AnswerToReset, где закодированы тех. параметры + ( часто, но не всегда) информация о производителе и OS карты. Получить ATR можно функцией SCardGetAttrib. Только после коннекта можно посылать карте команды ( зависят от типа карты ) , в том числе грузить апплеты ( поддерживается только т.н. Java картами — содержат Java-машину) и рулить ими.
Здравствуйте, boris_, Вы писали: _>Функция SCardConnect заставляет ридер подать напряжение на карту. _>В случае успешного выполнения карта отвечает последоватьностью байт AnswerToReset, где закодированы тех. параметры + ( часто, но не всегда) информация о производителе и OS карты. Получить ATR можно функцией SCardGetAttrib. Только после коннекта можно посылать карте команды ( зависят от типа карты ) , в том числе грузить апплеты ( поддерживается только т.н. Java картами — содержат Java-машину) и рулить ими.
Спасибо огромное Пол года простоя проекта, и я вот снова к нему возвращаюсь
Разобрался со SmartCard API существующим в Windows — теперь осталось дело за малым — понять как с ним работать =)
Задача на первый момент стоит простая — считать/записать в открытую область памяти карточки данные.
Перекапываю доки производителя картридера сплошные ссылки на их собственный API (Gemalto CILK API). Складывается ощущение что работать с картой в таком ключе можно только через их DLL-ки.
Настораживает наличие функции SCardTransmit в Winscard.h — я так понимаю что это функция используется для отправки ADPU команды на карту и получения ответа... Можно ли при помощи неё решить задачу?
И вообще — главный вопрос — где можно найти нормальный хелп по ADPU? Сегодня перерыл пол интернета — везде какие-то обрывки отдельных команд.
Здравствуйте, boris_, Вы писали: _>Функция SCardConnect заставляет ридер подать напряжение на карту. _>В случае успешного выполнения карта отвечает последоватьностью байт AnswerToReset, где закодированы тех. параметры + ( часто, но не всегда) информация о производителе и OS карты. Получить ATR можно функцией SCardGetAttrib. Только после коннекта можно посылать карте команды ( зависят от типа карты ) , в том числе грузить апплеты ( поддерживается только т.н. Java картами — содержат Java-машину) и рулить ими.
Странно — но карточка выдаёт ATR = ';*' Это нормально?
Здравствуйте, snslabs, Вы писали:
S>Здравствуйте, boris_, Вы писали: _>>Функция SCardConnect заставляет ридер подать напряжение на карту. _>>В случае успешного выполнения карта отвечает последоватьностью байт AnswerToReset, где закодированы тех. параметры + ( часто, но не всегда) информация о производителе и OS карты. Получить ATR можно функцией SCardGetAttrib. Только после коннекта можно посылать карте команды ( зависят от типа карты ) , в том числе грузить апплеты ( поддерживается только т.н. Java картами — содержат Java-машину) и рулить ими.
S>Странно — но карточка выдаёт ATR = ';*' Это нормально?
S>Задача на первый момент стоит простая — считать/записать в открытую область памяти карточки данные. S>Перекапываю доки производителя картридера сплошные ссылки на их собственный API (Gemalto CILK API). Складывается ощущение что работать с картой в таком ключе можно только через их DLL-ки.
Производитель ридера поставляет или PCSC драйвер или собственный API или и то и то. Вы должны проверить , установлен ли PCSC драйвер? ( например заглянув в девайс менеджер — есть ли соотв. устройство в списке ридеров).
PCSC драйвер дает возможность использования устройства программами 3-их производителей, не знающих специфики устройства
Собственный API наоборот требует знания специфики устройства — соотв. плюсы и минусы.
S>Настораживает наличие функции SCardTransmit в Winscard.h — я так понимаю что это функция используется для отправки ADPU команды на карту и получения ответа... Можно ли при помощи неё решить задачу?
Да если знать какие АПДУ посылать, а они специфичны для каждого приложения на карте. Естественно необходимое условие — наличие PCSC драйвера.
S>И вообще — главный вопрос — где можно найти нормальный хелп по ADPU? Сегодня перерыл пол интернета — везде какие-то обрывки отдельных команд.
АПДУ специфичны для каждого приложения на карте. Первые 4 байта более менее классифицируются , а остальное — казацкая вольница.
S>Не подскажете?
Постатаюсь