使用APDU命令浏览智能卡的文件结构

时间:2013-07-12 06:42:59

标签: smartcard apdu

我有一张智能卡(法国使用的Carte Vitale),我需要知道出生​​日期的存储位置。但我似乎没有找到任何有关文件结构的信息。

对于比利时的eID卡,我做了同样的事,我可以用APDU命令轻松读取出生日期。但比利时政府提供了关于卡片上文件结构的正确信息。

有没有办法通过APDU“浏览”智能卡的文件结构,看看它在什么地址上的内容,而不知道它的任何内容?

修改 我发现了一些有关阅读Carte Vitale信息的更多信息:herehere

来自第一个链接的部分,“API或不是API?这是问题......”。由谷歌翻译...不完美,但你明白了:

*众所周知,BC C0 00 00 08确定存储卡的最后一个地址,第一个是0200h命令。通常(ADMAX = 2188h),我们发现,从2128h到2180h,一个“生产区域”包含指向所有感兴趣区域的指针(在我们的例子中,无空间读数将从0288h延伸到2180h)。话虽这么说,BC 02 88 04 B0命令将返回第一个32位字的内容,BC B0 21 80 04的内容将返回。在这两者之间,发现了很多东西!就在制造区域之前,有几个字让人想起V1.40规范第20页上提到的“组件映射”。想象一下,BC B0 20 18 F8命令返回以下数据:

3F FF 88 C3  
3F 20 C3 50  
20 80 02 F0  
00 3F C2 B8  
2D 3F C2 A0  
2C FF 98 C2  

在“指针”(?)中,在C388h C298h,02F0h引起了人们的注意。那么让我们来BC B0 02 14 F0,并将我们的前两个单词的简单解码告诉我们:

3F FF F5 40  0011 1111 1111 1111 1111 0101 0100 0000  
24 08 43 FF  0010 0100 0000 1000 0100 0011 1111 1111  
3F FF FF FF  
3F FF FF FF  
3F FF FF F8  

忽略每个单词的前两位,然后形成四位组,可以轻松提取BCD编号54 09 02,具体而言,唯一受益人的出生日期是09.02.1954!*

我的ADMAX不同:它是21 20。 这是否意味着我可以编写执行BC B0 02 00 08的程序来读取前8个字节,然后将8个字节添加到地址02 00然后再读取,依此类推,一直到ADMAX 21 20 ?我会读一下卡上的所有可读日期吗?或者我看到的事情太简单了?

再次感谢!

1 个答案:

答案 0 :(得分:2)

因为你提到"关于什么地址"我强烈认为比利时卡是一张简单的存储卡。

Carte Vitale是处理器卡。这种卡不一定具有与目录命令相当的手段;有时会有信息文件支持这一点,但没有规范你就会迷失方向。在具有特定应用程序的封闭系统中,此类信息文件的可能性不大。

由于处理器卡也可能具有非平凡的访问条件,即使知道存储信息的文件,也不一定意味着您可以成功读取它。

Here是法国健康保险页面,但我对法语的命令不足以找到卡片规格。