选择接触式智能卡的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的主要内容,如果未能解决你的问题,请参考以下文章

读取智能卡的 UID

双接口智能卡通常是不是支持在软件中禁用非接触式接口?

如何让安卓手机充当非接触式智能卡?

非接触式智能卡仅响应第一个 APDU 命令

智能卡文件结构的安全访问条件

MF0 AI+IoT K210 人脸识别模块 应用笔记-