是否可以使用 ATR 来确定我是否有 ISO14443A 或 ISO14443B 类型的卡?如果是,如何?
3 回答
正如mictter正确解释的那样,真正的AT R仅适用于 ISO 7816 接触卡。我可以遵循这样的论点,即 ISO 14443 等效项可能是 ATQA/ATQB,因为这是您在激活后从标签中获得的第一个答案,尽管我更愿意说 ATR 的等效项是 ATQA + SAK + ATS 的组合(对于 A 类)和 ATQB + 对 ATTRIB 的回答的组合(对于 B 类)。
关于您看到的 ATR,我假设这是根据PC/SC 规范模拟 PC/SC 的 ATR 。
对于智能卡(ISO 14443-4 传输协议),此 ATR 的格式为
3B 8n 80 01 T[1]..T[n] xx
与存在T[1]
_T[n]
- ISO 14443 Type A 的 ATS 历史字节,或
- ATQB 应用数据 (
T[1] T[2] T[3] T[4]
)、ATQB 协议信息字段 (T[5] T[6] T[7]
) 和 ATTRIB MBLI 字段 (T[8]
) 的串联。
因此,您也许可以进行某种形式的匹配来猜测它是 A 型还是 B 型智能卡。即,如果n == 8 并且参数T[1]
与T[n]
您期望的 B 类卡的这些字段相匹配。我仍然怀疑您是否会为任意卡获得可靠的结果。
对于非接触式存储卡,情况肯定更好。对于这些卡,模拟的 ATR 如下所示:
3B 8n 80 01 T[1]..T[n] xx
与包含应用程序标识符存在指示符(标签T[1]
)。所以通常看起来像这样:T[n]
4F
T[1]
T[n]
80 4F yy A000000306 ss nnnn 00000000
识别ss
卡的协议:
0x01: ISO 14443-1 Type A
0x02: ISO 14443-2 Type A
0x03: ISO 14443-3 Type A
0x05: ISO 14443-1 Type B
0x06: ISO 14443-2 Type B
0x07: ISO 14443-3 Type B
并nnnn
识别卡名称(完整列表请参见PC/SC 规范)。
ATR 仅适用于接触式智能卡。对于非接触式卡,它的等价物称为 ATQ,它有两种变体:ATQ-A 和 ATQ-B,分别适用于两种 ISO14443 类型。
所以我推荐的方式是:
- 读卡器同时发送 REQ-A 和 REQ-B,轮询范围内是否有非接触式卡。
- 如果卡片以 REQ-A 响应,则为 Type A;或者如果它是 REQ-B,它是 B 型。
非接触式阅读器的驱动程序应将此信息传递给您的软件。我建议您获取 ISO 14443-3 标准的副本,它解释了卡发现和防冲突协议的初始步骤,因此您可以看到类型 A 和 B 之间的差异。
@haythem souissi
您可以在 pcsc3_v2.01.09_sup ( http://pcscworkgroup.com/Download/Specifications/pcsc3_v2.01.09_sup.pdf )中找到卡的列表