Как узнать номер AID моей местной транспортной карты?

У меня есть транспортная карта для городского транспорта. Мне нужно знать номер помощи (идентификатора приложения) карты. Согласно EMV Book 1, я должен использовать метод List of AIDs (стр. 141). Но как?

У меня также есть картридер ACR122U. Я могу отправить команду APDU на карту. Все, что мне нужно, это AID карты. Кроме того, я всегда получаю ошибку SW=6A82. Это означает «Файл не найден». Я полагаю, мне нужно знать настоящий номер AID, чтобы решить эту проблему. Я хочу увидеть ответ SW=9000 (успешный)...

Изменить: код для создания команды select apdu

private static final byte[] CLA_INS_P1_P2 = { 0x00, (byte)0xA4, 0x04, 0x00 };
private static final byte[] AID_ANDROID = { (byte)0xF0, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 };

private byte[] createSelectAidApdu(byte[] aid) {
    byte[] result = new byte[6 + aid.length];
    System.arraycopy(CLA_INS_P1_P2, 0, result, 0, CLA_INS_P1_P2.length);
    result[4] = (byte)aid.length;
    System.arraycopy(aid, 0, result, 5, aid.length);
    result[result.length - 1] = 0;
    return result;
}

Спасибо..


person Community    schedule 08.12.2015    source источник
comment
@caylan Поскольку это проприетарная карта, структура карты может быть любой в зависимости от того, как определена структура. EMV является широко используемым стандартом, поэтому структура определена и хорошо описана в книгах по EMV. Чтобы прочитать / получить доступ к вашей карте, вы должны попытаться получить спецификацию карты, которую вы используете. Надеюсь, вы получите свою файловую структуру.   -  person Arjun    schedule 08.12.2015
comment
@Arjun Как я могу получить характеристики карты, которую использую? Кстати, тип карты - ISODEP. Я могу прочитать данные карты из приложения Android (NFC Reader). Я хотел бы прочитать данные карты с терминала ACR122U.   -  person    schedule 08.12.2015


Ответы (1)


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

Однако, поскольку вы читаете карточку ISO-DEP, вы можете обратиться к ISO/IEC CD 7816-4. Карта должна выполнять часть инструкций этого стандарта. Согласно разделу 5.2, файл можно выбрать по его идентификатору, что означает, что вы можете перечислить все файлы, расположенные в MF.

Итак, возможное решение:

  1. Отправить команду выбора файла по идентификатору как

    00 A4 00 00 02 id 00

    Где id находится в диапазоне от 0000 до FFFF.

  2. После получения SW=9000 ответ должен содержать информацию об управлении файлом (FCI, см. Раздел 5.6). Затем вы можете найти DF name после байта 84. Например, карта отвечает

    6F 15 84 0D 4E 43 2E 65 43 61 72 64 2E 44 46 30 31 A5 04 9F 08 01 02 90 00,

    DF name это 4E 43 2E 65 43 61 72 64 2E 44 46 30 31. Байт 0D после 84 указывает, что длина DF name равна 0x0D. Вы можете использовать его как ПОМОЩЬ.

person DANG Fan    schedule 08.12.2015
comment
Спасибо за ваш ответ. Я попробовал ваше решение. Я закодировал метод для перечисления. Это работает. Однако у меня есть три команды Select APDU. Все они работают (SW=9000) Result[2]: 00A4000002000200 - Succeed Result[16128]: 00A40000023F0000 - Succeed Result[16130]: 00A40000023F0200 - Succeed Должен сказать, что Result[2] работает (SW=9000) впервые. После первого раза дает 6а82. Теперь у меня проблема. Я не могу получить ответ данных с помощью этой команды. Думаю, мне нужно добавить параметр 1 (0x04). Но после добавления параметра снова выдает 6а82. Что мне теперь делать? - person ; 09.12.2015
comment
Обратите внимание, что эта команда выбора выбирает только файл под текущим DF. При сбросе карты по умолчанию должен быть выбран MF, идентификатор которого 3F00. Таким образом, в вашем случае файл 0002 находится под MF. Когда вы выбираете 3F02, вы больше не можете снова выбрать 0002. - person DANG Fan; 09.12.2015
comment
Хорошо, но каков следующий технически шаг? - person ; 10.12.2015
comment
Когда вы использовали 3F02, вы получили какой-либо ответ? - person DANG Fan; 10.12.2015
comment
Да, я только что получил ResponseAPDU: 2 bytes, SW=9000. Не было данных. Только ув. - person ; 10.12.2015
comment
Я просто хочу эмулировать транзитную карту с помощью приложения для Android. Я запутался в помощи карты. Должен ли я знать, что такое помощь карты? Согласно документу по эмуляции карты на основе хоста If you are emulating cards for an existing NFC reader infrastructure, the AIDs that those readers are looking for are typically well-known and publicly registered (for example, the AIDs of payment networks such as Visa and MasterCard). Однако я запутался. В чем смысл? - person ; 10.12.2015
comment
Насколько мне известно, транспортные карты могут быть несовместимы со стандартом EMV. Например, карта пекинского метрополитена не будет выбрана AID. Вместо этого он использует файл по умолчанию без какого-либо выбора. Поэтому невозможно использовать HCE для эмуляции карт такого типа. - person DANG Fan; 11.12.2015
comment
Я тоже пытаюсь прочитать свою транспортную карту. Он поддерживает технологии форматирования Mifare Classic, NfcA и Ndef. Могу ли я узнать номер AID карты? Также я не мог аутентифицировать карту с ключами по умолчанию. Есть ли способ узнать этот ключ? Должен ли я узнать это, связавшись с компанией? - person Hilal; 10.05.2021
comment
@Hilal Насколько мне известно, транспортная карта Mifare Classic обычно не может быть прочитана третьей стороной, поскольку ключ обычно считается конфиденциальным. - person DANG Fan; 12.05.2021