如何使用ACR122U-A9进行卡片模拟

时间:2013-02-13 13:42:23

标签: nfc hce acr122

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

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

2 个答案:

答案 0 :(得分:2)

ACR122U包含PN532 NFC控制器芯片。 PN532通过其TgInitAsTarget命令支持主机卡仿真(请参阅PN532 user manual)。为了将命令传递到PN532,您将连接到ACR122U,就像它是普通的智能卡读卡器一样(例如使用PC / SC)。然后,您可以将包PN532命令发送到

形式的reader-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)。

答案 1 :(得分:1)

基本上ACR122U不能模拟卡,而制造商提供的信息仍然非常少,可以用来模拟NFC卡。如果可能的话,那就不是那么直截了当。我建议你试试Android主机卡仿真(Android 4.4上的HCE)。

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