SmartMX混合卡 - 如何访问MIFARE Classic

时间:2014-09-08 07:34:38

标签: smartcard mifare apdu pcsc contactless-smartcard

我有一堆带有SmartMX芯片的混合智能卡(确切地说是smartmx-m3b.03.d3-NX212A),它包含一个MIFARE Classic 4k。我一直试图访问卡的MIFARE部分,虽然在Android上这样做是访问android.nfc.tech.MifareClassic标签的相当简单的任务,但我不知道如何在Windows中这样做。我是否应该寻找PCSC Reader特定命令来访问此卡上的MIFARE Classic?或者我应该寻找一个SmartMX芯片特定的APDU来包装MIFARE经典的命令吗?

2 个答案:

答案 0 :(得分:2)

这在很大程度上取决于您使用的智能卡读卡器。首先,正如mictter所指出的那样,您的读者必须支持MIFARE Classic技术(这基本上意味着您会遇到基于某些NXP芯片组的非接触式读卡器,或读者(尽管恩智浦在MF Classic读卡器上的许可政策)技术)实现MIFARE Classic阅读器功能)。

接下来,您可能会遇到自动协议激活阅读器的问题。到目前为止我使用的大多数PS / SC读卡器(例如HID Omnikey 5321)将自动执行协议激活,直到最高可用协议层。对于通过其非接触式接口公开MIFARE Classic和ISO-DEP(ISO / IEC 14443-4,顶部带有ISO / IEC 7816-4 APDU)协议的SmartMX芯片,这意味着阅读器将自动执行ISO-DEP链接激活。这有效地禁用了通过MIFARE Classic协议的访问(因为MF Classic协议在较低层之上运行 - > ISO / IEC 14443-3)。

因此,您基本上有两个选择:

  • 使用一方讲APDU的小程序,并访问另一方的MIFARE Classic内存区域 1 。恩智浦为此提供了一个现成的小程序,可以为非接触式接口启用或不启用。此外,恩智浦还提供了一个API,您可以在自己的applet 2 中使用它来访问MIFARE Classic内存区域 1 。所以你可以编写自己的自定义applet

  • 强制智能卡读卡器仅激活ISO / IEC 14443-3协议层,以便将卡作为MIFARE Classic卡访问。根据您的读者,这可能是微不足道的,也是不可能的。有些读者,如前面提到的HID Omnikey读卡器,支持通过注册表设置(或通过HID Workbench工具)更改自动协议激活的级别。某些读卡器(例如旧款中的ACR122U)允许您执行非接触式卡的手动枚举和激活,您可以在其中自由选择激活的协议层。 PC / SC规范在其当前版本中(这意味着某些/许多读者可能不支持这些功能)定义了SWITCH_PROTOCOL命令,该命令可用于强制手动激活非接触式卡达到用户定义的协议level(请参阅PC/SC 2 specification, Part 3, Supplemental Document 2 - Contactless ICCs有关此命令的工作原理)。


1 )读作“MIFARE Classic内存区”或“虚拟MIFARE Classic卡”。我没有找到关于该芯片类型的更多信息。根据MIFARE4Mobile规范的新版本,该芯片可能(我怀疑)能够管理真正的虚拟MIFARE Classic卡,而不是MIFARE Classic内存区域,而不是MIFARE Classic内存区域。

2 )我假设您使用的SmartMX运行JCOP OS,并且您可以安装任意Java Card小程序。

答案 1 :(得分:0)

由于MIFARE Classic是一项专有技术,您需要读者支持它。例如,只有恩智浦制造的具有NFC控制器的Android手机才能访问它(我自己的Nexus 5有一个Broadcom,因此我无法访问android.nfc.tech.MifareClassic)。

一个合适的解决方法是MIFARE4Mobile:您可以将GlobalPlatform APDU发送到JavaCard applet(通常由NXP提供,但还有其他实现),applet称为" Service Manager",控制MIFARE Classic元素在卡上。