ACR122 - 卡仿真

时间:2011-04-14 10:23:16

标签: nfc hce acr122

如何让NFC非接触式读卡器ACR122U充当标签(卡仿真模式)? 招股说明书声称该设备可以进行卡片仿真,但SDK似乎没有提供此功能的示例或文档。

有人知道怎么做吗? 是否需要其他软件? 请注意,我的目标平台是MS Windows。

提前致谢

4 个答案:

答案 0 :(得分:5)

对于“卡片仿真”或换句话说,“配置为目标并等待发起人”,请参阅此处:http://code.google.com/p/nfcip-java/source/browse/trunk/nfcip-java/doc/ACR122_PN53x.txt

** Command to PN532 **
0xd4 0x8c TgInitAsTarget instruction code
0x00 Acceptable modes
(0x00 = allow all, 0x01 = only allow to be
initialized as passive, 0x02 = allow DEP only)

_6 bytes (_MIFARE_)_:
0x08 0x00 SENS_RES
0x12 0x34 0x56 NFCID1
0x40 SEL_RES

_18 bytes (_Felica_)_:
0x01 0xfe 0xa2 0xa3 0xa4 0xa5 0xa6 0xa7
NFCID2
0xc0 0xc1 0xc2 0xc3 0xc4 0xc5 0xc6 0xc7
?
0xff 0xff System parameters?
0xaa 0x99 0x88 0x77 0x66 0x55 0x44 0x33 0x22 0x11
NFCID3
0x00 ?
0x00 ?

这是启动器激活此目标时的响应:

** Response from PN532 **
0xd5 0x8d TgInitAsTarget response code
0x04 Mode
(0x04 = DEP, 106kbps)

让我知道它是否有效!

答案 1 :(得分:1)

此外,您可以尝试以十六进制发送以下ADPU以使读卡器处于“卡模拟”模式:

FF 00 00 00 27 D4 8C 00 08 00 12 34 56 40 01 FE A2 A3 A4 A5 A6 A7 C0 C1 C2 C3 C4 C5 C6 C7 FF FF AA 99 88 77 66 55 44 33 22 11 00 00

答案 2 :(得分:1)

要将ACR122(或其中的PN532 NFC控制器芯片)置于卡仿真模式,您可以执行以下操作:

  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)。

答案 3 :(得分:0)

您可以使用LibNFC。它有示例代码。

不幸的是,我仍然没有在Windows中正常工作。您可能必须为特定驱动程序编译libnfc。

此外,许多图书馆似乎很难支持ACR122u。显然它并不是真的为这种用途而设计的。卡仿真也存在特殊问题(例如超时)。我们真的需要停下ACR122u。我刚刚买了一些很受欢迎的东西,很容易掌握,但现在后悔了。

对于未来的浏览器/搜索者:请查看libnfc网站上的兼容性部分并购买他们推荐的内容!