Как эмулировать карту с ACR122U-A9

У меня есть ACR122U-A9, я хочу, чтобы карта эмулировала его. Я спрашиваю, кто сделал это? Можете ли вы дать мне несколько советов?

Теперь у меня есть и другие проблемы, когда я помещаю белую смарт-карту в этот считыватель NFC, светодиод мигает только один раз. Но когда я ставлю на него телефон, светодиод всегда мигает, пока телефон не выключится.

2 ответа

Решение

ACR122U содержит микросхему контроллера NFC PN532. PN532 поддерживает эмуляцию хост-карты через TgInitAsTarget команда (см. руководство пользователя PN532). Чтобы передавать команды на PN532, вы должны подключиться к ACR122U, как если бы это был обычный считыватель смарт-карт (например, с использованием ПК /SC). Затем вы можете отправлять команды пакета PN532 в считывающие устройства APDU вида

> FF000000 <Lc> <Command>

и получить ответы в виде

< <Response> 9000

Таким образом, чтобы перевести ACR122 в режим эмуляции карты, вы должны сделать следующее:

  1. ReadRegister:

    > FF000000 08 D406 6305 630D 6338
    < D507 xx yy zz 9000
    
  2. Обновить значения регистра:

    xx = xx | 0x004;  // CIU_TxAuto |= InitialRFOn
    yy = yy & 0x0EF;  // CIU_ManualRCV &= ~ParityDisable
    zz = zz & 0x0F7;  // CIU_Status2 &= ~MFCrypto1On
    
  3. WriteRegister:

    > FF000000 11 D408 6302 80 6303 80 6305 xx 630D yy 6338 zz
    < D509 9000
    
  4. SetParameters:

    > FF000000 03 D412 30
    < D513 9000
    
  5. TgInitAsTarget

    > FF000000 27 D48C 05 0400 123456 20 000000000000000000000000000000000000 00000000000000000000 00 00
    < D58D xx ... 9000
    

    куда xx должно быть равно 0x08.

  6. Общайтесь, используя последовательность команд TgGetData и TgSetData:

    > FF000000 02 D486
    < D587 xx <C-APDU> 9000
    

    куда xx это код состояния (должен быть 0x00 для успеха) и C-APDU это команда, отправленная от читателя.

    > FF000000 yy D48E <R-APDU>
    < D587 xx 9000
    

    куда yy 2 + длина R-APDU (ответ) и xx это код состояния (должен быть 0x00 для успеха).

По сути, ACR122U не предназначен для эмуляции карты, хотя от производителя все еще остается очень мало информации о том, что ее можно использовать для эмуляции карты NFC. Если это возможно, это было бы не так просто. Я предлагаю вам попробовать эмуляцию хост-карты Android (HCE на Android 4.4).

Для части 2: я попробовал с моим телефоном (Xperia Z), когда я включил чип NFC и положил телефон на картридер, ничего не произошло с обеих сторон. Возможно, вы используете функцию эмуляции карты телефона.

Другие вопросы по тегам