阅读JavaCard的Citizen数据

时间:2012-11-26 12:23:42

标签: smartcard javacard smartcard-reader

我们的政府已经开始发行智能国民身份证(SNIC)

我有一个智能卡读卡器( ACR38-IPC

当我将SNIC插入读卡器时,Windows检测到并安装了驱动程序,现在它在设备管理器中显示为: ActivIdentity Mini Driver(Oberthur ID-One Cosmo V7.0 128K)

我发现它是JavaCard v2.2.2

我想在C#应用程序中使用阅读器从SNIC读取我的国民身份证号码。

我在网上搜索过但没有找到合适的答案。我不想构建一个小程序并将其加载到卡上,我只想阅读存储在卡上的公民信息。

我还安装了其他国家/地区提供的软件给他们的公民阅读他们的卡片,但那些人无法读取我的卡片。

我的主要问题是SNIC发证机关没有告诉我任何关于卡的信息(完全荒谬),他们甚至没有给我我的密码(不是很神奇???)(也许他们不想要一般公众利用这张卡开发应用程序,他们会让自己的人这样做并获得好处:裙带关系)

所有我知道的是卡的类型,我想从卡中提取我的信息(我认为它不应该受到PIN的保护,即使我不知道PIN也可以阅读)

请帮我解决如何开始

这是我的卡的ATR解析:ATR Parsing

2 个答案:

答案 0 :(得分:2)

看一下ATR,看来这张卡声称有一张EF.DIR。这可能意味着APDU接口符合ISO 7816-4标准。这也意味着该卡可能符合ISO 7816-15标准,该标准基于publicly available PKCS#15 standard (warning, ftp link to version 1.1 of the standard in PDF format)。 Java卡本身仅包含对ISO 7816-4 APDU的非常基本的支持,即使通信层(ISO 7816-3)(或多或少)遵守。剩下的由Java Card开发人员负责。

开始阅读此卡的方法是访问ISO 7816-4的副本。此外,您需要读入BER和DER结构,因为很可能需要了解ASN.1结构。之后,您应该能够使用SELECTREAD BINARY APDU读取数据。阅读EF.DIR后,看一下该文件中的内容。

如果您很幸运,该卡符合ISO 7816-15标准。 ISO 7816-15描述了一种发现卡上所有文件和对象的方法。唯一的问题是解析ISO 7816-15不是可以在下午完成的事情。要了解一下,请查看ISO标准所基于的PKCS#15标准。

不幸的是,智能卡业务是例外之一。拥有某种官方文档确实非常有用。声称卡符合ISO 7816-4标准几乎没有任何意义(ISO 7816-4更像是一个伞形标准,对于那些正在制定自己标准的人来说非常有用,即使是出于这个目的,它也是一个糟糕的标准)。 / p>

不幸的是,ISO / IEC标准是严格的付费软件。您可能希望找到实现它的库等。谷歌搜索ISO / IEC 7816-4应返回大量信息(可能包括非法下载标准)。

答案 1 :(得分:1)

没有任何有用的输入数据(如发行国家,或显然是SNIC规范),很难找到有意义的答案。

一些提示:

  • Java卡只有一条固定的指令,SELECT,绝对是 无法读取所需信息,此处不太可能需要, 因为默认应用程序可能就是那个,你就是 感兴趣的。
  • PIN可能存在与否;它并不明显 是您的 PIN,可能会预见到将来的应用程序,即 还没有在卡上(例如数字签名应用程序)或永远不会 需要的。
  • 即使读取数据不需要PIN,也可以 可能需要来自后台系统的身份验证;它是 完全有可能,没有它就什么都看不懂。没有 大量的额外信息,这不会改变。 单独使用卡片无助于进步。
  • 如果该卡符合ICAO标准且/或具有非接触式接口,则其在您的 没有窃听者可以从口袋里读取信息的兴趣。 通常情况下,人们必须执行一项操作,该操作与阅读一致 基本访问控制,需要在卡上打印信息。