Я пытаюсь прочитать данные из ISO-7816-4 eVCR (электронная регистрационная карточка транспортного средства) с использованием javax.smartcardio. Всякий раз, когда я пытаюсь выбрать файл с карты, я получаю SW-код 6A86, который переводит на «Неверный параметр P1 или P2». Я пробовал много комбинаций значений для P1 и P2 и получил тот же результат. Сама карта отлично работает с другими программами, а пример кода отлично работает с другими картами. У меня есть проблема с той же карточкой, что и у this question.не может выбрать файл на смарт-карте ISO-7816-4
Это код, который я использую: Card card = terminal.connect ("*"); System.out.println ("ATR:" + Utils.bytes2HexString (card.getATR(). GetBytes()));
byte aid[] = {(byte)0xA0, 0x00, 0x00, 0x00, 0x77, 0x01, 0x08, 0x00, 0x07,
0x00, 0x00, (byte) 0xFE, 0x00, 0x00, (byte) 0xAD, (byte) 0xF2};
ResponseAPDU response = null;
CardChannel channel = card.getBasicChannel();
response = channel.transmit(new CommandAPDU(0x00, 0xA4, 0x04, 0x0C, aid));
System.out.println("AID: " + response);
response = channel.transmit(new CommandAPDU(0x00, 0xA4, 0x02, 0x00, new byte[]{(byte)0xD0, 0x01}));
System.out.println("SELECT: " + response);
И выход:
ATR: 3B:DB:96:00:80:B1:FE:45:1F:83:00:31:C0:64:1A:18:01:00:0F:90:00:52
AID: ResponseAPDU: 2 bytes, SW=9000
SELECT: ResponseAPDU: 2 bytes, SW=6a86
Я не могу видеть, что я делаю неправильно. Требуется ли для некоторых карт дополнительные шаги инициализации или некоторые дополнительные параметры для выбора?
Не могли бы вы попробовать с '0x0C' как P2 (вместо' 0x00')? Возможно, идентификатор файла верен, но он не может вернуть информацию о файле ('0x0C' означает: не дайте мне дополнительной информации). Я сделаю это ответом, если это сработает. –
Работает с 0x0C. Спасибо. – Nemanja
Добро пожаловать, отправил его в качестве ответа ... –