【问题标题】:How to read/write synchronous only smart cards like memory cards如何读/写仅同步的智能卡,如存储卡
【发布时间】:2014-10-07 23:12:14
【问题描述】:

我有一个只支持同步接口的 IC 存储卡(如 SLE5532、SLE5542...等)

我想知道如何编写一个读取内存内容、验证 PSC (PIN) 和写入内存的应用程序。

这种类型的卡不能像微处理器卡那样接受普通的 APDU。在数据表中,它指定了以二进制形式发送的命令(所有命令为 3 字节长度)

我发现了一个设计用于与 SCM 阅读器(基于 MCSCM.dll)一起使用的应用程序,但它不适用于我的 OmniKey 阅读器。

我想知道是否有可能构建一个直接调用 winsCard API 函数而无需直接使用 Reader 的 DLL 的应用程序。如果是这样,调用的正确函数是什么?

如果不可能,我怎样才能找到 OmniKey 的 API?谁能寄给我使用 OmniKey 3121 读卡器和同步卡的样品?

提前致谢

【问题讨论】:

    标签: smartcard apdu pcsc winscard


    【解决方案1】:

    不,不可能以通用方式从智能卡读卡器寻址存储卡。硬件通信协议与处理器卡不同,每个硬件制造商都是独立的,哪些伪 APDU 支持该行为。因此,如果没有特定的读者支持,您就没有机会建立沟通。 MIFARE 的情况会更好,但这对您没有帮助。如果您无法在 http://www.hidglobal.com 上找到文档,您可以寻求他们的支持。否则我会建议使用 SCM 阅读器,你已经有匹配的软件。

    这似乎是你需要的,神奇的关键字是CT-API,但这与winscard无关:http://www.hidglobal.com/drivers/14877

    【讨论】:

    • 非常感谢,我还有一个问题:硬件通信协议是否因阅读器或阅读器和芯片而异?我的意思是,如果我有一个 DLL 发送(伪 APDU)命令适用于一个阅读器制造商(例如 SCM),是否可以使用相同的 DLL 来处理相同的阅读器但不同的芯片制造商(当然我会更改命令字节根据芯片数据表)?
    • @AbdelRahmanShabana:阅读随附的文档。读卡器不一定支持所有类型的存储卡。芯片数据表对于阅读器制造商了解阅读器必须做什么很重要。您只需查看阅读器文档,将哪些命令发送给阅读器。
    【解决方案2】:

    如果您的阅读器支持 PC/SC 2.01.14 规范find them here,它可能支持访问存储卡的通用方式。 (但请注意,支持是可选的,并非所有读者都支持。)

    part 3 of the PC/SC specifications 的第 3.2.2.1 节中,定义了存储卡功能支持。此功能由您可以发送给阅读器的几个阅读器解释的 APDU 命令组成。然后阅读器将这些命令转换为存储卡特定的命令。例如,有一个 READ BINARY 命令从存储卡中读取数据:

    FF B0 ADDR1 ADDR0 Le
    

    还有一个 VERIFY 命令(对于支持 PIN 验证的卡)

    FF 20 xx yy Lc PIN
    

    为了识别特定存储卡的类型,可以参考(非接触式)存储卡的ATR(仿真)格式(在part 3 of the specification的第3.1.3.2.3.2节)和部分的supplemental document 1 (Storage Card ATR) 3 的规格。

    例如,如果您的卡根据 ISO/IEC 7816-10 I2C 变体运行,您从读卡器获得的 ATR 将如下所示:

    8E 80 01 80 4F 0C A000000306 0D xxxx 00000000 yy
    

    除此之外,一些制造商还定义了自己的自定义命令(可以通过 PC/SC API 或其他接口使用,例如 CT-API 或 Omnikey Synchronous API)。

    【讨论】:

      猜你喜欢
      • 2014-08-24
      • 1970-01-01
      • 1970-01-01
      • 2016-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多