如何只读/写同步智能卡,如存储卡

时间:2014-08-14 10:21:57

标签: smartcard apdu pcsc winscard

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

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

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

我找到了一个专门用于SCM Reader的应用程序(基于MCSCM.dll),但它不能用于我的OmniKey阅读器。

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

如果不可能,我如何找到OmniKey的API?任何人都可以寄给我使用OmniKey 3121读卡器和同步卡的样品吗?

提前致谢

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

如果您的阅读器支持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节中)和{{3规范的第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)。