-1

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

4

2 回答 2

2

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

接下来,您可能会遇到阅读器自动协议激活的问题。到目前为止,我使用的大多数 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的小程序。恩智浦为此提供了一个现成的小程序,可能会或可能不会为非接触式界面启用。NXP 还提供了一个 API,您可以在自己的小程序2中使用该 API来访问 MIFARE Classic 内存区域1。所以你可以编写自己的自定义小程序

  • 强制智能卡读卡器仅激活 ISO/IEC 14443-3 协议层,以便将卡作为 MIFARE Classic 卡访问。根据您的读者,这可能是微不足道和不可能做到的事情。一些阅读器,如前面提到的 HID Omnikey 阅读器,支持通过注册表设置(或通过 HID Workbench 工具)更改自动协议激活的级别。一些读卡器(例如旧版本的 ACR122U)允许您手动枚举和激活非接触式卡,您可以在其中自由选择激活的协议层。当前版本的 PC/SC 规范(这意味着某些/许多读者可能不支持这些功能),PC/SC 2 规范,第 3 部分,补充文档 2 -关于此命令如何工作的非接触式 ICC)。


1 ) 读取为“MIFARE Classic 存储区”或“虚拟 MIFARE Classic 卡”。我没有找到有关该芯片类型的太多信息。根据该芯片及其软件的新程度,而不是 MIFARE Classic 内存区域,该芯片可能(尽管我怀疑)能够根据新版本的 MIFARE4Mobile 规范管理真正的虚拟 MIFARE Classic 卡。

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

于 2014-11-13T15:37:22.287 回答
0

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

一个合适的解决方法是 MIFARE4Mobile:您可以将 GlobalPlatform APDU 发送到 JavaCard 小程序(通常由 NXP 提供,但也有其他实现),名为“服务管理器”的小程序控制卡上的 MIFARE Classic 元素。

于 2014-09-09T06:32:53.530 回答