2013-10-25 3 views

ответ

2

Вы говорите об апплетах, поэтому я предполагаю в этом ответе, что вы разговариваете с картой Java. Сама карта Java не указывает какой-либо метод обнаружения.

В спецификации глобальной платформы содержатся методы для получения таких данных. Чтобы получить апплеты на карте, вам необходимо отправить APDU GET STATUS (параграф 11.4 свободно доступных спецификаций GP 2.2.1). Практически во всех реализациях Java Card также реализована глобальная платформа. Обратите внимание, что перед тем, как вы можете выдать эти команды, вам необходимо пройти аутентификацию для менеджера карт глобальной платформы. Для этого, очевидно, вам понадобится действительный набор ключей аутентификации.

Еще один уловка, чтобы узнать, что такое по выбору на апплете, чтобы выдать несколько команд SELECT by NAME. Вы можете ограничить это набором AID, который вы хотите проверить. Небольшой трюк состоит в том, чтобы использовать только первые 5 байт AID, известные как RID. Зарегистрированные RID начинаются с A000000000, а затем последовательно увеличиваются.

После того, как вы найдете апплет, вы можете узнать его регулярную AID, добавив байты в специфический для компании RID - просто проверьте все 256 значений. Вы можете автоматизировать это ... многие реализации также возвращают полную AID после выбора; это, однако, специфично для апплета (запрос SELECT by Name генерируется методом апплета process).

+1

команда SELECT также имеет режим «следующего входа» (установите «P2» на 2 вместо 0, см. 11.9.2.2). Если я правильно понимаю, это ограничивает ваше пространство поиска. – martijno

+0

@martijno О, да, я забыл о точном синтаксисе, я попытаюсь добавить некоторую информацию об этом после прочтения спецификаций снова ... Спасибо за комментарий! –

+0

Как всегда: поддержка частичного выбора имени DF является необязательной (относительно 7816-4), но по крайней мере может быть указана в возможностях карты в ATR. – guidot

Смежные вопросы