【问题标题】:list content of globalplatform smartcard with APDU使用 APDU 列出 globalplatform 智能卡的内容
【发布时间】:2019-06-24 20:21:23
【问题描述】:

我正在尝试列出与 GlobalPlatform 2.1.1 兼容的智能卡内容,特别是列出已安装的小程序(除了 ISD)和/或使用 APDU 命令的公钥,但我找不到任何示例。

我们将不胜感激任何参考/文档。

ATR:3B7F94000080318065B0850300EF120FFF829000

提前致谢。

【问题讨论】:

    标签: smartcard apdu globalplatform


    【解决方案1】:

    查看GlobalPlatformProGPShell 了解一些工作示例。

    基本上您需要向 ISD 进行身份验证(这意味着您必须拥有正确的密钥)并发出 GET STATUS 命令(请参阅全球平台卡规范 2.1.1,第 9.4 章)。

    要获取有关加载的 ISD 密钥的信息,请使用带有适当标签的 GET DATA(第 9.3 章)。

    祝你的项目好运!

    编辑>

    一些卡(不是很多)支持带有对象枚举的 ISO 7816-4 SELECT APDU,并允许使用以下方法迭代卡应用程序(无需身份验证):

    • 00 A4 04 00 00 -- 按 [截断] 空应用程序标识符选择,第一次或唯一一次出现

    • 当 SW != 6A 82

      • 00 A4 04 02 00 -- 获取下一个事件

    详情请见ISO 7816-4

    EDIT2>

    如果卡使用默认的40..4F 键,请使用 GlobalPlatformPro(参见here):

    java -jar gp.jar -list

    请注意,使用错误密钥的身份验证尝试几乎肯定会破坏您的卡——请参阅here

    EDIT3>

    对于带有“知名母钥匙”的金雅拓卡:

    java -jar gp.jar -visa2 -key 47454D5850524553534F53414D504C45 -list

    请注意,使用错误密钥的身份验证尝试几乎肯定会破坏您的卡

    【讨论】:

    • 00 A4 04 00 0000 A4 00 02 00 总是输出相同的结果:Received (SW1=0x90, SW2=0x00): 6F 65 84 08 A0 00 00 00 18 43 4D 00 A5 59 73 4A 06 07 2A 86 48 86 FC 6B 01 60 0C 06 0A 2A 86 48 86 FC 6B 02 02 01 01 63 09 06 07 2A 86 48 86 FC 6B 03 64 0B 06 09 2A 86 48 86 FC 6B 04 01 05 65 0B 06 09 2B 85 10 86 48 64 02 01 03 66 0C 06 0A 2B 06 01 04 01 2A 02 6E 01 02 9F 6E 06 12 91 21 72 03 00 9F 65 01 FF 我已经尝试过带有令人毛骨悚然的警告的 GPP (jar),但似乎这些不是正确的键。也许应该联系发行人。对不起格式,似乎换行不起作用?
    • @Gabriel 因为您的卡可能是金雅拓 - 可能值得尝试默认金雅拓密钥 - 请参阅编辑后的答案。但请务必先与您的供应商核实 - 否则您将锁定您的卡。
    【解决方案2】:

    如果您想在不进行身份验证的情况下获取应用程序列表,则有可能以下可能会起作用:

    1. 从卡重置,发送 APDU 00A40400 以希望选择 ISD。
    2. 然后发送APDU 80CA 2F00

    最后一条命令来自GlobalPlatform v2.2.1 specification 的第 152 页。我只看到它在一张卡上工作:Tesla Model 3 NFC Card

    如果有效,您将获得一堆标记为 61 的串联 ASN.1 项目,其中包含 AID(标记 4F)。

    【讨论】:

      【解决方案3】:

      智能卡从未设计用于转储,而是用于非常细粒度的访问,例如:此文件只能在 PIN 验证后读取,以便使用密钥 9 编写质询-响应测试是必要的。这是与 SLE4428 等存储卡的概念差异,这意味着您通常无法读取所有内容。

      对于没有文件系统但只有applet 的javacard,所有这些都提供了它们的命令集,转储的想法是完全奇怪的,因为每个applet 都由可执行代码和持久变量的任意组合组成。你想象的结果是什么?

      ISO 7816-15 定义了一个公共接口来检索一些信息,例如已安装应用程序的列表,但您不能依赖它的支持。

      【讨论】:

      • 我不是在想像“ls -a”这样的东西,而是像 这样的东西,以便选择它并使用它进行操作。看来我需要通过 ISD 进行身份验证才能访问卡中的某些内容。我知道我必须使用 SCP01 协议。我还在研究。
      猜你喜欢
      • 1970-01-01
      • 2020-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多