Ultralight C、Smartcardio 和 ACR122

Posted

技术标签:

【中文标题】Ultralight C、Smartcardio 和 ACR122【英文标题】:Ultralight C, Smartcardio and ACR122 【发布时间】:2014-11-29 19:32:16 【问题描述】:

我正在使用带有库 SmartCardIO 的 PS/SC ACR122U 开发 Java 项目。当我输入密码并修改页面 0x2A 时,我试图再次读取标签。确实,我知道协议,我在这里 (http://www.eps.no/downloads/pdf/API_ACR128_v1.9.pdf) 发现 APDU 命令是:

FF 00 00 00 02 1A 00 

但是当我介绍该 APDU 时,我收到一条异常消息:

apdu must be at least 2 bytes long

但是,我正在使用一个名为 ACE122U 工具的工具,我可以在其中向标签发送 APDU 命令,我可以看到它如何回答我。所以当我在标签没有回答之前发送命令时。

我不知道如何解决,有什么想法吗?

【问题讨论】:

【参考方案1】:

难以置信,我发布了问题并再次寻找解决方案,我找到了解决方案。当然,APDU 命令是错误的。命令是:

FF:00:00:00:04:D4:42:1A:00

【讨论】:

感谢乔治维克的反馈。是的,您收到了错误,因为卡的响应太短了。很高兴你解决了... 嗨 Georgevik,你还记得你是如何得到上述命令的 'D4:42' 部分的吗?我知道 'FF:00:00:00' 是伪 APDU 的一部分,'04' 是指字节数,'1A:00' 是用于身份验证的 APDU,但无法弄清楚 'D4:42' 是什么以及如何是计算出来的吗? 我知道'D4:42' 是固定的。 IE。 FF:00:00:00:04:D4:42:1A:00FF:00:00:00:08:D4:42:11:22:33:44:55:66 @yash D4:42 部分来自 PN532 NFC 控制器芯片规范。 D4帧标识符。对于从主机控制器到 PN532 的帧,它是固定的。 D5 用于反方向的帧(从 PN532 到主机控制器)。 42 是 PN532 的启动器命令(称为 InCommunicateThru)。请参阅其用户手册:nxp.com/docs/en/user-guide/141520.pdf (p66)。

以上是关于Ultralight C、Smartcardio 和 ACR122的主要内容,如果未能解决你的问题,请参考以下文章

APDU 更改 Mifare Ultralight C 身份验证

Android:使用 NXP MiFare Ultralight C 进行身份验证

Windows读取NXP MiFare Ultralight C类型NFC卡片的信息

Eclipse 无法识别 smartcardio 库

通过 javax.smartcardio 连接到 micro SD

javax.smartcardio 读取所有智能卡