Средство чтения ACR122U не может поддерживать тег NFC - PullRequest
4 голосов
/ 09 сентября 2011

Я получил SDK считывателя NFC ACR122U с демонстрационным примером и инструментами, взятыми из ACS. Затем я пытаюсь запустить средство считывания ACR122U, поместите карту MIFARE 1K на считыватель NFC, чтобы запустить средство.Затем все в порядке. Но только тогда, когда для получения ATS возникают проблемы ... скажем, функция не поддерживается. Затем из-за этого не может выполнить загрузочную аутентификацию, аутентификацию, чтение блока и все прочее. Средство, команда PICC (T = CL Emulation) для mifare classic. Карты памяти не могут работать.

это было то же самое с topaz и mifare ultralight, которые не могли поддерживаться, пока я пытаюсь получить ATS.even при подключении к телефону nokia c7 theтег также функция не поддерживается.

ТАК, можете ли вы дать предложение, почему функция не поддерживается?и когда я установил рабочий параметр PICC, также возникла проблема. Ниже приведен код

ACR122U Интерфейс PICC, подключенный к: ACS ACR122 0

ACR122U Получить версию прошивки Версия прошивки: ACR122U207

ACR122U Статус

D5 05 00 00 01 01 00 00 00 80 90 00 Код ошибки: 00 Поле: 00 (РЧ поле НЕ присутствует и НЕ обнаружено)Количество целевых объектов: 01 Логический номер: 01 Скорость передачи при приеме: 00 (106 кбит / с) Скорость передачи при передаче: 00 (106 кбит / с) Тип модуляции: 00 (ISO14443 или Mifare)

ACR122U Получить ATR

Значение ATR: 3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 00 01 00 00 00 00 6A Активный протокол: T = CL Тип карты: ISO 14443A, часть 3 (Mifare 1K)

ACR122U APDU Команда

13 29 DF 97 90 00

здесь показаныпроблема должна возвращаться 90 00-success

ACR122U Получить данные Получить UID

90 00 UID: 13 29 DF 97

Получить ATS

6A 81 Функция не поддерживается

ACR122U Аутентификация нагрузкиКлючи

90 00 <Структура ключа: 00 <Номер ключа: 00 <Ключ: FF FF FF FF FF FF Загрузка ключей аутентификации загрузки успешно </p>

Команда PICC (эмуляция T = CL) для mifare classic. Карты памяти не работают.

ACR122U Считывание двоичного блока

ACR122U Аутентификация

63 00 Операция не выполнена

1 Ответ

2 голосов
/ 14 августа 2012

Я понимаю, что это старый вопрос, но я работаю над той же картой (Mifare 1K). Мой стартовый код:

public void start() throws CardReaderException {
    TerminalFactory factory = TerminalFactory.getDefault();
    List<CardTerminal> terminals;
    try {
        terminals = factory.terminals().list();
        //System.out.println("Terminals: " + terminals);
        // get the first terminal
        CardTerminal terminal = terminals.get(0);
        // establish a connection with the card
        card = terminal.connect("*");
        //System.out.println("card: " + card);
        channel = card.getBasicChannel();
    } catch (CardException e) {
        e.printStackTrace();
    }       
}

, за которым следует код аутентификации:

private boolean authenticate(byte block) {
    byte [] setKey = new byte[]{(byte) 0xff, (byte) 0x82, 00, 01, 06, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF};
    byte [] authKey = new byte[] {(byte) 0xff, (byte) 0x86, 00, 00, 0x05, 0x01, 0x00, block, 0x60, 0};

    ResponseAPDU r;
    try {
        r = channel.transmit(new CommandAPDU(setKey));
        if ( r.getBytes()[0] != retOk) {
            return false;
        }

        r = channel.transmit(new CommandAPDU(authKey));
        if ( r.getBytes()[0] != retOk) {
            return false;
        }
    } catch (CardException e) {
        e.printStackTrace();
    }


    return true;
}

после аутентификации я могу либо прочитать (0xFF, 0xB0, 0x00, блок, 0x10) или записать (0xFF, 0xD6, 0x00, блок, 0x10) на карту.

...