2013-02-17 6 views
1

Я пытаюсь прочитать данные из 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 

Я не могу видеть, что я делаю неправильно. Требуется ли для некоторых карт дополнительные шаги инициализации или некоторые дополнительные параметры для выбора?

+0

Не могли бы вы попробовать с '0x0C' как P2 (вместо' 0x00')? Возможно, идентификатор файла верен, но он не может вернуть информацию о файле ('0x0C' означает: не дайте мне дополнительной информации). Я сделаю это ответом, если это сработает. –

+0

Работает с 0x0C. Спасибо. – Nemanja

+0

Добро пожаловать, отправил его в качестве ответа ... –

ответ

1

Вы можете использовать 0x0C как P2 (вместо 0x00)? Возможно, идентификатор файла верен, но он не может вернуть информацию о файле (0x0C означает: не предоставлять информацию о файлах).

Это зависит от операционной системы и/или приложения карты, если это повлияет на возвращаемое слово состояния.

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

  • Нет связанных вопросов^_^