[英]MIFARE Classic 1K load authentication keys failure with ACR122U
[英]Authentication failure for Mifare 1K NFC tag using ACR122U NFC reader
当使用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
您对Android手机能够读取和写入此标签的评论表明其格式化为包含NDEF数据。 您可以尝试将MIFARE应用程序目录密钥0xA0A1A2A3A4A5用于第一个扇区(块0-3),并将NFC论坛密钥0xD3F7D3F7D3F7用于以下扇区,而不是出厂默认密钥0xFFFFFFFFFFFF。 有关详细信息,请参阅NFC类型MIFARE经典标签操作 。
MF Classic 1k卡的验证可能因不同原因而失败。
错误的钥匙
一个。 长度:应为6个字节(12个十六进制字符)。
湾 密钥匹配:密钥将是传输模式中的十六进制FFFFFFFFFFFF(默认情况下),并且可以由提供供应商的卡更改。 您必须从供应商那里获得确切的密钥。
密钥类别:访问条件(所有扇区的块3的6-9个字节)将说明您必须使用哪个密钥来验证特定存储器操作的相应扇区。要了解更多详细信息,请参阅
在Mifare Classic 1K标签中有16个扇区,每个扇区包含4个块,每个块包含16个字节。 在从页面读取或写入之前您必须使用密钥A或密钥B对扇区进行身份验证。当身份验证完成后,您可以进行读取或写入。 以下是使用该密钥作为密钥A(60)的认证命令认证扇区0:
FF 86 0000 05 01 0000 60 00
或者使用该密钥作为密钥B来验证扇区0(61):
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 };
有关详细信息,您可以按照此答案
使用“NFC TagInfo”应用程序用于Android。 您可以使用该应用程序读取十六进制数据并找出正确的密钥。 在每个扇区的末尾都会有“keya,access,keyb”数据。 前6个字节(12个十六进制字符)是密钥a,后6个字节(再次是12个十六进制字符)是密钥b。 使用新密钥读取和写入卡。
我为一些ACR读者编写了一个实用程序 ,带有Mifare经典卡的ACR 122U正在遇到某种错误。 相同的代码适用于ACR 1222L。
然而,Mifare Classic卡是废话,所以我建议切换卡来解决问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.