You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NFC PC/SC底层命令的文档位置、构成及读写方法咨询

NFC底层命令与SCardTransmit使用细节

一、底层NFC命令的官方文档来源

你通过SCardTransmit发送的是PC/SC标准的APDU命令,相关规范可参考:

  • PC/SC工作组发布的《PC/SC Specification》,定义了读卡器与PC之间的通信框架及通用APDU命令格式
  • ISO/IEC 14443系列标准,这是非接触式智能卡(含NFC标签)的国际通用通信标准
  • 对应NFC标签的厂商规范,比如常用的MIFARE系列标签,需参考NXP官方发布的《MIFARE Classic Datasheet》等文档

二、0xFF 0xCA 0x00 0x00 0x00命令的字节含义

这是一条PC/SC标准的APDU命令,各字节作用如下:

  • 0xFF:CLA(命令类别),表示该命令是发给读卡器的通用控制命令
  • 0xCA:INS(指令代码),对应「获取数据」操作,这里专门用来读取NFC标签的UID
  • 0x00 0x00:P1、P2(指令参数),设为0表示读取默认的UID数据
  • 0x00:Le(期望返回的数据长度),0表示让读卡器返回所有可用的UID数据

返回数据末尾的0x90 0x00是APDU标准状态码:

  • 0x90:核心状态位,表示命令执行成功
  • 0x00:附加状态位,说明无额外错误信息

三、读取NFC标签内存块的APDU命令序列

以最常用的MIFARE Classic标签为例,读取内存块需要先完成密钥验证,再发送读取命令:

1. 密钥验证(以块0、默认密钥A为例)

发送以下APDU命令:

0xFF 0x86 0x00 0x00 0x06 0x01 0x00 0x00 0x60 0x00 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF

各字节含义:

  • 0xFF:CLA
  • 0x86:INS(执行事务)
  • 0x00 0x00:P1、P2
  • 0x06:Lc(后续命令数据的长度,此处为6字节密钥)
  • 0x01:命令版本
  • 0x00 0x00:目标块地址(这里是块0)
  • 0x60:密钥类型(0x60为密钥A,0x61为密钥B)
  • 0x00:密钥索引
  • 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF:验证用的密钥值

2. 读取内存块(块0)

验证成功后,发送读取命令:

0xFF 0xB0 0x00 0x00 0x10

各字节含义:

  • 0xFF:CLA
  • 0xB0:INS(读取二进制数据)
  • 0x00 0x00:P1、P2(目标块地址)
  • 0x10:Le(期望返回16字节,MIFARE Classic每个块固定为16字节)

如果是其他类型的NFC标签(如NTAG系列),命令格式会有差异,需参考对应厂商的标签规格文档。

内容的提问来源于stack exchange,提问作者deltamind106

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 03:23:36