如何让NFC非接触式读卡器ACR122U充当标签(卡仿真模式)? 招股说明书声称该设备可以进行卡片仿真,但SDK似乎没有提供此功能的示例或文档。
有人知道怎么做吗? 是否需要其他软件? 请注意,我的目标平台是MS Windows。
提前致谢
答案 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控制器芯片)置于卡仿真模式,您可以执行以下操作:
ReadRegister:
> FF000000 08 D406 6305 630D 6338
< D507 xx yy zz 9000
更新寄存器值:
xx = xx | 0x004; // CIU_TxAuto |= InitialRFOn
yy = yy & 0x0EF; // CIU_ManualRCV &= ~ParityDisable
zz = zz & 0x0F7; // CIU_Status2 &= ~MFCrypto1On
WriteRegister:
> FF000000 11 D408 6302 80 6303 80 6305 xx 630D yy 6338 zz
< D509 9000
SetParameters:
> FF000000 03 D412 30
< D513 9000
TgInitAsTarget
> FF000000 27 D48C 05 0400 123456 20 000000000000000000000000000000000000 00000000000000000000 00 00
< D58D xx ... 9000
xx
应该等于0x08。
使用一系列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网站上的兼容性部分并购买他们推荐的内容!