如何使用 ACR122U 验证 NTAG213

Posted

技术标签:

【中文标题】如何使用 ACR122U 验证 NTAG213【英文标题】:How to authenticate NTAG213 with ACR122U 【发布时间】:2017-05-29 08:19:50 【问题描述】:

我正在使用带有 NTAG213 卡的 ACR122U 读卡器。该卡使用密码52 84 00 08 进行密码(读取和写入)保护。我应该运行哪些 APDU 命令来验证卡并在验证后读取它的第 30 页和第 31 页?

我知道使用 MiFare 1k 可以加载密码并对扇区进行身份验证,但我不确定使用 ACR122U 读卡器的 NTAG213 卡如何进行身份验证。

【问题讨论】:

【参考方案1】:

使用 ACR122U,您需要向读卡器内的 PN532 NFC 控制器芯片发送直接命令,以便交换此类低级命令。例如,您可以使用InCommunicateThru 命令向标签发送原始命令:

+-----+-----+-----+------+--------------+---------- -+-----+ |共轭亚油酸 | INS | P1 | P2 | LC |数据 |乐 | |法郎 | 00 | 00 | 00 | 2 + 镜头(CMD) | D4 42 CMD | -- | +-----+-----+-----+------+--------------+---------- -+-----+

这样,您可以向标签发送密码验证命令(PWD_AUTH):

FF 00 00 00 07 D4 42 1B 52 84 00 08 -- ---------- | | | \-> 密码 \-> 命令:PWD_AUTH

对这个命令的响应应该是这样的

D5 43 00 包装 90 00

同样,您可以发送READ 命令读取任何页面:

FF 00 00 00 04 D4 42 30 XX

XX 是 1 字节的页面地址。

请注意,读取命令也应该使用(更强大?)InDataExchange 命令:

FF 00 00 00 05 D4 40 01 30 XX

【讨论】:

我正在使用 ACS 的 ACR122U 工具向 NTAG 213 发送命令。发送身份验证命令并尝试读取读/写保护页面后,会发生以下情况: D5 43 02 90 00 我似乎根本无法阅读任何受身份验证保护的内容。我应该使用其他程序与 ACR122u 通信吗? @KaZaaV2 这很奇怪。状态码 0x02 表示 CRC 错误(这不应该真的发生,因为 PN532 会自动处理 CRC)。您是否也尝试过该命令的 InDataExchange 版本? @KaZaaV2 另外:身份验证有效吗? IE。您收到D5 43 00 xx xx 90 00 形式的回复了吗?响应 APDU FF 00 00 00 06 D4 06 63 02 63 03,你得到了什么价值? @KaZaaV2 抱歉,我刚刚意识到我没有在最后两个 APDU 命令中将 Lc 设置为正确的值。你自己解决了吗?如果没有,请尝试我更新的答案中的命令。 是的,我尝试了 InDataExchange 版本的命令并得到了同样的结果。我试过你上面说的东西,这就是我得到的:ACR122U APDU 命令< FF 00 00 00 07 D4 42 1B 88 04 00 00 > D5 43 00 00 00 90 00 ACR122U APDU 命令< FF 00 00 00 06 D4 42 06 63 02 63 03 > D5 43 01 90 00 ACR122U APDU 命令< FF 00 00 00 07 D4 42 30 04 > D5 43 02 90 00 我错过了什么吗?

以上是关于如何使用 ACR122U 验证 NTAG213的主要内容,如果未能解决你的问题,请参考以下文章

无法验证具有 7 字节 UID ACR122U 的 NFC 标签

ACR122U 的 MIFARE Classic 1K 加载身份验证密钥失败

ACR122u卡仿真模式发送PN532指令

ACR122U 发送直接命令返回 -2 和分段错误

智能卡与 ACR122U 交互

ACR122U - 传输 APDU 时出现 InvalidDeviceStateException