【问题标题】:Determine card type from ATR根据 ATR 确定卡类型
【发布时间】:2014-05-01 08:21:10
【问题描述】:

是否可以使用 ATR 来确定我是否拥有 ISO14443A 或 ISO14443B 类型的卡?如果是,怎么做?

【问题讨论】:

    标签: nfc smartcard rfid pcsc contactless-smartcard


    【解决方案1】:

    正如mictter 正确explained真正的 ATR 仅适用于 ISO 7816 联系人卡片。我可以遵循这样的论点,即 ISO 14443 等效项可能是 ATQA/ATQB,因为这是您在激活后从标签中获得的第一个答案,尽管我更愿意说 ATR 的等效项是 ATQA + SAK + ATS 的组合( A 类)和 ATQB + ATTRIB 答案的组合(B 类)。

    关于 ATR,我假设这是根据PC/SC specification 的 PC/SC 模拟 ATR。

    对于智能卡(ISO 14443-4 传输协议),此 ATR 的格式为

    3B 8n 80 01 T[1]..T[n] xx
    

    T[1]T[n]

    1. ISO 14443 A 类的 ATS 历史字节,或
    2. ATQB 应用程序数据 (T[1] T[2] T[3] T[4])、ATQB 协议信息字段 (T[5] T[6] T[7]) 和 ATTRIB MBLI 字段 (T[8]) 的串联。

    因此,如果它是 A 型或 B 型智能卡,您也许可以进行某种形式的匹配以 猜测。 IE。如果 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 specifications)。

    【讨论】:

    【解决方案2】:

    ATR 仅适用于接触式智能卡。对于非接触式卡,它的等价物称为 ATQ,它有两种变体:ATQ-A 和 ATQ-B,分别对应两种 ISO14443 类型。

    所以我推荐的方式是:

    • 读卡器同时发送 REQ-A 和 REQ-B,轮询范围内是否有非接触式卡。
    • 如果卡以 REQ-A 响应,则为 A 类;或者如果是 REQ-B,则为 Type B。

    非接触式阅读器的驱动程序应将此信息传递给您的软件。 我建议您获取一份 ISO 14443-3 标准的副本,它解释了卡发现和防冲突协议的初始步骤,因此您可以看到类型 A 和 B 之间的区别。

    【讨论】:

      【解决方案3】:

      @haythem souissi

      您可以在 pcsc3_v2.01.09_sup (http://pcscworkgroup.com/Download/Specifications/pcsc3_v2.01.09_sup.pdf) 中找到卡的列表

      【讨论】:

      • 仅链接的答案在 stackoverflow 上无效
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-27
      • 1970-01-01
      • 2021-12-08
      • 1970-01-01
      • 2011-02-04
      • 1970-01-01
      相关资源
      最近更新 更多