编程PC/SC读卡器时使用的ATR命令

8
我已经检查了MIFARE Ultralight和TOPAZ/Jewel IC标签的编程接口。该API很好地描述了如何在卡上保存字节,如何寻址存储块,如何执行所有操作(如读取、读取全部、使用OTP(一次性可编程)功能、读取ROM字节、从空闲状态切换到就绪状态(REQA、WUPA命令)),它还指出命令是否受CRC保护,如何访问标签UID等。
当我开始为NFC读卡器(ACR122U或SCL010)编写程序时,我发现PCD(读卡器)和PICC(标签)之间的所有通信都始于ATR(Answer-To-Reset)命令,据互联网上描述,这是PCD向PICC发送的用于识别目的的命令。
但是,标签文档中没有提及ATR命令——当它们被激活(PQR)时,与标签的所有通信都始于REQA、WUPA命令,以将卡片切换到Ready模式。
我的理解是,ATR由基于NFC读卡器通信的标签的PC/SC构建。一旦读卡器检测到标签的技术类型,它就会创建ATR。此外,根据文档,相同的NFC标签对于不同的NFC读卡器的ATR是不同的。
我正确吗?PC / SC是否构建ATR?
敬礼
STeN
2个回答

16

简短回答:

  • 你对于ATR由PCSC读卡器生成是正确的
  • 我认为无论是哪个读卡器,非接触式卡片的ATR都将保持不变

详细回答:

ATR适用于接触式智能卡,并在ISO 7816中得到规定。而对于非接触式智能卡,则是PC/SC读卡器(IFD)生成ATR。

ATR基于以下构造:

  • ATS (Answer to Select),适用于ISO 14443 Type A卡片
  • ATQB和ATTRIB字节,适用于ISO 14443 Type B卡片

ATR的形式将是 3B 8X 80 01 HB_ATS Parity_Byte 其中X是ATS的历史字节数量。

关于非接触式智能卡ATR的确切构造,请参见PC/SC规范的第3.1.3.2.3节。

鉴于唯一的可变因素是ATS,无论使用哪个读卡器,它应该是相同的。

--Sid


2
+1 你能告诉我确切的ATR命令是什么吗?我已经在网上搜索了十分之久,但没有结果 :( - Roy Lee
我有同样的疑虑吗?你能帮忙吗? - neo

2
ATR包含固定字段和可选字段(有条件的)。因此,根据某些字段的值,后续字段可能被省略,因此不同读卡器的ATR可能不同,但它们都符合标准。
在这里查看智能卡教程简而言之,ATR帧如下所示:
enter image description here

ATR是由卡片(PICC)响应读卡器(PCD或IFD)发出的RESET命令而生成的。 - Chand51

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接