smartcard - 从 JavaCard 读取公民数据

标签 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保护,即使我不知道PIN也可以读取)

请帮助我如何开始

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

最佳答案

看一下 ATR,这张卡似乎声称有一个 EF.DIR。这可能意味着 APDU 接口(interface)符合 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 标准。

不幸的是,智能卡业务是异常(exception)之一。拥有某种官方文档确实会非常有帮助。声称一张卡符合 ISO 7816-4 标准几乎毫无意义(ISO 7816-4 更像是一个总括标准,对那些正在创建自己的标准的人很有用,但即使是为了这个目的,它也是一个糟糕的标准)。

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

关于smartcard - 从 JavaCard 读取公民数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13564794/

相关文章:

java - 通过js调用访问小程序中的智能卡 keystore

java - 飞天br301蓝牙读卡器停止工作

nfc - 通过NFC进行支付时如何区分非接触式卡和智能手机?

java - Java Card中包、模块、小程序的定义

java - 今天哪些手机 SIM 实际上支持 javacard?

smartcard-reader - 使用 AID 选择 EMV 应用程序

java - 服务器端Java : Can it read CAC cards and if so, 怎么办?

c# - 以编程方式停止屏幕保护程序

nfc - 从模拟卡中检测出真正的 Mifare 经典卡

java - 将 ECPublicKey 从 Java 恢复到 JavaCard