使用ACR122U工具验证Mifare 1K NFC标签时,我总是得到失败的结果,但我可以使用Android手机读取/写入此标签。
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
答案 0 :(得分:4)
您对Android手机能够读取和写入此标签的评论表明其格式化为包含NDEF数据。您可以尝试将MIFARE应用程序目录密钥0xA0A1A2A3A4A5用于第一个扇区(块0-3),并将NFC论坛密钥0xD3F7D3F7D3F7用于以下扇区,而不是出厂默认密钥0xFFFFFFFFFFFF。有关详细信息,请参阅NFC Type MIFARE Classic Tag Operation。
答案 1 :(得分:0)
MF Classic 1k卡的验证可能因各种原因而失败。
错误的密钥
一个。长度:应为6个字节(12个十六进制字符)。
湾密钥匹配:密钥将是传输模式中的十六进制FFFFFFFFFFFF(默认情况下),并且可以由提供供应商的卡更改。您必须从供应商那里获得确切的密钥。
密钥类别:访问条件(所有扇区的块3的6-9个字节)将说明您必须使用哪个密钥来验证特定内存操作的相应扇区。要了解更多详细信息,请参阅< / p>
答案 2 :(得分: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 };
有关详情,请点击this answer
答案 3 :(得分:0)
使用&#34; NFC TagInfo&#34;应用程序的android。您可以使用该应用程序读取十六进制数据并找出正确的密钥。在每个部门的最后都会有&#34; keya,access,keyb&#34;数据。前6个字节(12个十六进制字符)是密钥a,后6个字节(再次是12个十六进制字符)是密钥b。使用新密钥读取和写入卡片。
答案 4 :(得分:0)
我为一些ACR读者写过an utility,而带有Mifare经典卡的ACR 122U正在编写某种bug。相同的代码适用于ACR 1222L。
然而,Mifare Classic卡是废话,所以我建议切换卡来解决这个问题。