无法验证具有 7 字节 UID ACR122U 的 NFC 标签
Posted
技术标签:
【中文标题】无法验证具有 7 字节 UID ACR122U 的 NFC 标签【英文标题】:Can't authenticate NFC tag having 7 byte UID ACR122U 【发布时间】:2014-09-03 12:13:01 【问题描述】:我有两种类型的 Mifare Classic 标签。一个有 4 个字节的 UID,另一个有 7 个字节。 我正在尝试阅读两者的内容。我成功读取了具有 4 字节 UID 的标签块,但在 7 字节 UID 的情况下无法进行身份验证。我使用的阅读器是ACR122U,使用ACR122U工具阅读。
【问题讨论】:
【参考方案1】:假设您使用的是旧版本的 ACR122U,您将使用 PN532 数据交换命令发送认证命令:
FF 00 0000 0F D440 <TAG_ID> <AUTH_TYPE> <BLOCK> <KEY> <UID>
<TAG_ID>
是阅读器上标签的索引(通常为 0x01)。 <AUTH_TYPE>
如果要使用密钥 A 进行身份验证,则为 0x60;如果要使用密钥 B 进行身份验证,则为 0x61。<BLOCK>
是要进行身份验证的块。 <KEY>
是 6 字节的密钥(例如,FF FF FF FF FF FF
是默认密钥)。 <UID>
是 4 字节 UID(或 7 字节 UID 的最后 4 字节)。
因此,如果您想使用密钥 A A0 A1 A2 A3 A4 A5
对具有 UID 04 AA BB CC DD EE FF
的标签上的块 0 进行身份验证,您可以使用以下命令:
FF 00 0000 0F D440 01 60 00 A0A1A2A3A4A5 CCDDEEFF
在较新版本的读卡器上,您将改为使用 PC/SC 定义的非接触式存储卡的标准化机制:
加载身份验证密钥:
FF 82 0000 06 <KEY>
验证:
FF 86 0000 05 0100 <BLOCK> <AUTH_TYPE> 00
【讨论】:
嗨!您能否详细说明“旧”和“新”版本的确切含义?例如:固件版本或硬件版本。 你有关于固件版本号的任何信息吗?我问是因为我的读者报告了相对较新的版本ACR122U213
,但未能使用 82 和 86 指令验证 7 字节 UID 卡。谢谢。
Old 至少是版本 101 到 103(或者是 102?)。我的猜测是“旧”是 1xx 的所有内容,而“新”是 2xx 的所有内容(就像你的一样),但我目前只有一个 101 和一个 102,我知道它们只支持直接 PN532 命令。
如果你使用PN532直接命令进行认证,你试过是否有效?也许 ACS 在执行 PC/SC 身份验证命令时没有正确地将 UID 截断为 4 个字节...以上是关于无法验证具有 7 字节 UID ACR122U 的 NFC 标签的主要内容,如果未能解决你的问题,请参考以下文章