选择接触式智能卡的MF
Posted
技术标签:
【中文标题】选择接触式智能卡的MF【英文标题】:Select MF of the contact smart card 【发布时间】:2017-05-10 15:10:27 【问题描述】:我尝试根据 ISO7816-4 指令使用 APDU 命令从联系人卡片中选择主文件 MF
如下:
-
初始化阅读器
连接到卡
选择MF -> [00 A4 00 00 02 00 3F] 结果[69 85](不满足使用条件)
我认为在选择命令之前有一个缺失的步骤,请您指教
【问题讨论】:
[00 A4 00 00 02 3F 00]
是否有效(因为主文件通常具有文件标识符 0x3F00
)?
不,它不工作,返回错误 6985,我需要示例代码来向/从智能卡写入/读取二进制数据。
您有该智能卡的数据表吗?有许多不同的智能卡类型(其中一些不符合 ISO 7816-4)。你到底在用哪一个?
这是 SCOSTA 智能卡
【参考方案1】:
让我们检查 ATR 的选择方法,以确保您的卡按名称、标识符或路径接受 SELECT 命令... 您可以检查 ISO 7816-4,也可以通过将 ATR 复制到输入框来检查:https://smartcard-atr.appspot.com/
【讨论】:
ATR = 3B 67 00 00 01 04 01 01 13 0C 01 Ahm..我猜你的卡是Java卡,所以,你不能直接通过你的APDU选择MF,在Javacard中,你必须编写小程序并将其安装到卡上,作为网桥的小程序将接收您的 APDU 并将其发送到卡。我很确定,因为我一直在努力解决这个问题。【参考方案2】:如今大多数智能卡都是 JavaCard;也就是说,它们可以用 Java 方言编程,并且能够运行不同的卡上程序/应用程序,也称为“cardlets”。
有时,默认选择这些卡片之一;但通常情况并非如此。 在我看来,您期待前者并得到后者。
所以,首先,您已选择要与之交谈的卡片。
示例:您希望“IsoApplet”可用,它实现了一个 PKCS15 结构,您可以在其中从 MF 开始,然后按照您的预期查看目录。
重置后发送00 A4 04 00 0C F2 76 A2 88 BC FB A6 9D 34 F3 10 01
选中;
如果成功 (90 00
),那么您可以继续执行“SELECT MF”等等。
【讨论】:
【参考方案3】:如果是SCOSTA卡,发送“00A4000C 02 3F00”选择MF 即命令 APDU:CLA=0x00 INS=0xA4 P1=0x00 P2=0x0C Lc=0x02 DATA(hex) = 3F 00 Le=(EMPTY)
【讨论】:
以上是关于选择接触式智能卡的MF的主要内容,如果未能解决你的问题,请参考以下文章