Как отправить ATR на карту

У меня есть какая-то карта, я хотел получить ATR (используя метод из некоторого SDK).
Реализация выглядит так:

unsigned char ATR[128]={0};
int len=33;
int maxlen=33;
ret = sd7816_ATR(0,1,ATR,len,maxlen,1);

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

Меня беспокоит строка ATR, которую я посылаю пустой в начале, и я ожидаю
что-то, что должно быть записано в нем после завершения вызова (что на самом деле возвращает успех).

Но после вызова ATR все еще пусто .. Что здесь может пойти не так?

(Я хочу выяснить, относится ли карта к типу ISO / IEC 14443 или ISO / IEC 7816).

1

Решение

Вы пытаетесь получить ATR для команды, специфичной для контактной карты ISO / IEC 7816-3. В данном конкретном случае это запрашивается со считывателя SAM-карты (форма SIM). Тем не менее, вы пытаетесь прочитать бесконтактный читатель.

Теперь бесконтактные карты не имеют ATR. Некоторые карты имеют ATS (т.е. карты типа A ISO / IEC 14443), но это должно запрашиваться аналогичной командой 14443 SELECT. Некоторые карты, в частности карты типа B, содержат EF.ATR, чтобы восполнить отсутствие (места внутри) ATR. Тем не менее, ATR / ATS имеет только ограниченную функциональность для идентификации карт.

ИСО / МЭК 7816 состоит из нескольких частей: в частях 1–3 описываются карты контактов, а в 4 и более — команды APDU прикладного уровня и файловая структура плат процессора. Если ваша бесконтактная карта реализует ISO / IEC 7816-4, то вы можете — в общем случае — также напрямую использовать интерфейс PCSC для отправки и получения APDU на / с карты.

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

Слоты SAM могут не распознаваться операционной системой как считывающие устройства — вы можете получить к ним доступ только через интерфейс низкого уровня. Они в основном используются в качестве безопасного хранилища ключей от терминала / системы контроля / интерфейсного устройства или любого другого имени системы, считывающей карту.

0

Другие решения


По вопросам рекламы [email protected]