【问题标题】:What is the apdu command combination for NTAG 213 tagNTAG 213标签的apdu命令组合是什么
【发布时间】:2019-08-22 12:37:00
【问题描述】:

我正在尝试使用 ACR 122U NFC 读卡器读/写 NFC NTAG。我在SCardTransmitreturn values junk 或 return code 6 中不断收到错误。我需要知道要在SCardTransmit 方法的 SendBuff 中传递的 apdu 命令值是什么

我检查了我通过谷歌搜索找到的 apdu 值,但到目前为止我还没有找到明确且有效的解决方案

我在网上查了很多解决方案,尝试了不同的缓冲区值

ClearBuffers();
SendBuff[0] = 0xFF;                         // CLA
SendBuff[2] = 0x00;                         // P1: same for all source types 
SendBuff[1] = 0x00;                         // INS: for stored key input
SendBuff[3] = 0x00;                         // P2 : Memory location;  P2: for stored key input
SendBuff[4] = 0x00;                         // P3: for stored key input

当我包含所有值时,我得到了 6 个返回值,最后我在 Received Buffer 中得到了一些垃圾数据

【问题讨论】:

  • 您是否初始化了SCARD_IO_REQUEST 结构,还请提供minimal sample 或至少提供您遇到错误的代码详细信息。
  • 这个解决方案对你有用吗?social.msdn.microsoft.com/Forums/vstudio/en-US/…
  • @DrakeWu-MSFT 请告诉我如何从 SCardTransmit 读取 SW1 和 SW2 值。我只从 SCardTransmit 调用中得到 6 的返回值
  • 我不知道代码细节,所以我无法判断这里出了什么问题。但是你可以参考这个代码示例。 gist.github.com/im-infamou5/4681713
  • @DrakeWu-MSFT 我有代码,它的功能很好。我只对用于验证 NTAG 213 ISO 标签块的 APDU 命令感兴趣。如果很快发现除了 Authenticating 之外的读写命令,那就太幸福了

标签: c# winapi nfc apdu


【解决方案1】:

根据 ISO-7816-4,CLA 的值“FF”无效(请参阅 ISO/IEC 7816-3 中的协议和参数选择)。 但是,根据manual of the ACR 122 Reader,它是一个有效的 Psuedo APDU,代表“直接传输命令”

P3 应该是非接触式命令的长度。由于您将其指定为 0,因此不会向 NTAG 发送任何命令。

Direct Transmit Response 预计为 2 个字节,指示 SW1 和 SW2。

SCardTransmit document 字节顺序为 CLA、INS、P1、P2、P3。

pbRecvBuffer - 指向从卡返回的任何数据的指针。 对于 T=0,接收缓冲区必须至少有两个字节长才能接收 SW1 和 SW2 状态字节。 pcbRecvLength - 提供 pbRecvBuffer 参数的长度(以字节为单位)并接收从智能卡接收到的实际字节数。

由于您包含非接触式命令,因此存在未定义的行为。

阅读请参阅第 5.2 节。访问 manual of the ACR 122 Reader 中的 Mifare Ultralight 标签

根据this ACR 122 包含 NXP 的 PN532 芯片

要验证和快速读取 NTAG,您可以从此 Java Script Example 获取 APDU

验证
0xff, // 类
0x00, // 直接传输(参见 ACR122U 文档)
0x00, // ...
0x00, // ...
0x07, // 直传有效载荷的长度
// 有效负载(7 个字节)
0xd4, // 数据交换命令(参见 PN533 文档)
0x42, // InCommunicateThru
0x1b, // PWD_AUTH
密码(4字节),

快速阅读(NXP 专有,检查此阅读器是否支持)
0xff, // 类
0x00, // 直接传输(参见 ACR122U 文档)
0x00, // ...
0x00, // ...
0x07, // 直传有效载荷的长度
// 有效负载(7 个字节)
0xd4, // 数据交换命令(参见 PN533 文档)
0x42, // InCommunicateThru
0x3a, // FAST_READ
起始页,
结束页,

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-24
    相关资源
    最近更新 更多