使用ACR122U NFC读卡器,对Mifare 1K NFC标签进行身份认证失败。

3

当我使用ACR122U工具对Mifare 1K NFC标签进行身份验证时,总是会得到失败的结果,但我可以使用安卓手机来读/写此标签。

ACR122U Load Authentication Keys
< FF 82 00 00 06 FF FF FF FF FF FF 
> 90 00 
< Key Structure: 00    < Key Number: 00
< Key: FF FF FF FF FF FF
Load Authentication Keys Success

ACR122U Authentication
< FF 86 00 00 05 01 00 00 60 00 
> 63 00 
Operation failed
5个回答

5

您提到Android手机能够读写这个标签,说明它的格式化方式包含NDEF数据。您可以尝试使用MIFARE应用目录密钥0xA0A1A2A3A4A5代替出厂默认密钥0xFFFFFFFFFFFF来访问第一扇区(块0-3),并使用NFC论坛密钥0xD3F7D3F7D3F7来访问后续扇区。更多详细信息请参见NFC类型MIFARE经典标签操作


感谢您的回复!我已经尝试了您的建议,但仍然失败了。ACR122U 加载身份验证密钥 < FF 82 00 00 06 A0 A1 A2 A3 A4 A5
90 00 < 密钥结构: 00 < 密钥编号: 00 < 密钥: A0 A1 A2 A3 A4 A5 加载身份验证密钥成功
ACR122U 身份验证 < FF 86 00 00 05 01 00 00 60 00
63 00 操作失败
ACR122U 加载身份验证密钥 < FF 82 00 00 06 D3 F7 D3 F7 D3 F7
90 00 < 密钥结构: 00 < 密钥编号: 00 < 密钥: D3 F7 D3 F7 D3 F7 加载身份验证密钥成功
ACR122U 身份验证 < FF 86 00 00 05 01 00 01 60 00
63 00 我必须重新检查PDF...
- user1223802

1
使用安卓应用程序“NFC TagInfo”。您可以使用该应用程序读取十六进制数据并找到正确的密钥。在每个扇区的末尾,会有“keya、access、keyb”数据。前6字节(12个十六进制字符)是键a,后6字节(再次为12个十六进制字符)是键b。使用新密钥进行卡片的读写。

0
在Mifare Classic 1K标签中,有16个扇区,每个扇区包含4个块,每个块包含16个字节。在从页面读取或写入之前,必须使用密钥A或密钥B对扇区进行身份验证。完成身份验证后,您可以读取或写入。这是身份验证命令:使用密钥A(60)对扇区0进行身份验证:
FF 86 0000 05 01 0000 60 00

或者使用该密钥作为密钥B(61)来验证扇区0:

FF 86 0000 05 01 0000 61 00

或者使用这个命令,你也可以对扇区0进行身份验证

byte[] authenticationByte = new byte[10];
    authenticationByte = new byte[] { (byte) 0xFF, (byte) 0x86, (byte) 0x00,
 (byte) 0x00, (byte) 0x05, (byte) 0x00,(byte) 0x00, (byte) 0x04, 
                                    (byte) 0x60,(byte) 0x00 };

如需更多详细信息,请访问此答案


0

MF Classic 1k 卡的认证可能因不同原因而失败。

  1. 错误的密钥

    a.长度:应为6个字节(12个十六进制字符)。

    b.密钥匹配:密钥将在传输模式下为十六进制 FFFFFFFFFFFF(默认),可以通过提供商更改。您必须从供应商获取确切的密钥。

  2. 密钥类别:访问条件(所有扇区的块3的第6-9个字节)将说明您必须使用哪个密钥来验证相应部门的特定内存操作。有关更多详细信息,请参见

http://www.nxp.com/documents/data_sheet/MF1S50YYX.pdf


0

我已经为一些ACR读卡器和ACR 122U写了一个实用工具,但使用Mifare Classic卡时会遇到某种错误。相同的代码适用于ACR 1222L。

然而,Mifare Classic卡质量很差,所以我建议更换卡片以解决问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接