5

我有一个 ACR122U-A9,我想用它来模拟卡。请问这点是谁做的?你能给我一些建议吗?

现在我还有其他问题,当我将白色智能卡放在这个 NFC 读卡器上时,LED 只闪烁一次。但是当我把手机放在上面时,LED总是闪烁直到手机掉线。

4

2 回答 2

5

ACR122U 包含一个 PN532 NFC 控制器芯片。PN532 通过其TgInitAsTarget命令支持主机卡仿真(参见PN532 用户手册)。为了将命令传递给 PN532,您需要连接到 ACR122U,就像它是一个普通的智能卡读卡器一样(例如使用 PC/SC)。然后,您可以将 pack PN532 命令发送到格式为 reader-APDU 中

> FF000000 <Lc> <Command>

并在表格中得到回复

< <Response> 9000

因此,为了让 ACR122 进入卡模拟模式,您需要执行以下操作:

  1. 读注册:

    > 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. 写寄存器:

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

    > 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
    

    其中yy2 + R-APDU(响应)的长度,xx是状态码(应该是0x00成功)。

于 2014-04-21T12:26:28.840 回答
1

基本上 ACR122U 不是用来模拟卡的,而制造商仍然很少有信息说它可以用来模拟 NFC 卡。如果这是可能的,那就不会那么直截了当。我建议您尝试 Android Host Card Emulation(Android 4.4 上的 HCE)。

对于第 2 部分:当我打开 NFC 芯片并将手机放在读卡器上时,我尝试使用手机 (Xperia Z),双方都没有发生任何事情。也许您正在使用手机的卡模拟功能。

于 2014-02-25T07:54:51.367 回答