6

在阅读了很多问题后,我决定发布这个。我读到 android 的股票版本不支持用于卡模拟的 API。此外,由于 google/samsung 管理的密钥,我们无法编写自定义应用程序来保护嵌入在 nfc 控制器中的元素。

我需要模拟一张卡片(mifare 或 desfire 等)。我可以看到的选项是通过软件进行。我有一个 ACR122U 阅读器,并且我已经测试了 NFC P2P 模式在我拥有的 Nexus-S 上运行良好。

1)我看到一个网站说nexus s的NFC控制器(pn532)可以模拟mifare 4k卡。如果这是真的,我可以向这个模拟卡写入/读取 apdu 命令吗?(可能如果我使用像 cyanogenmod 这样的改装 rom)

2)我可以编写一个android应用程序来读取从阅读器发送的apdu命令并生成适当的响应(如果不完全,那么仅在某种程度上)。为此,我搜索了我们需要用 cynagenmod 修补 nexus 。有人试过通过这种方法模拟卡吗?

我认为这是可能的,因为我们有来自门禁控制公司的产品,它们提供移动应用程序,人们可以通过这些产品打开门,例如http://www.assaabloy.com/en/com/Products/seos-mobile-access/

4

3 回答 3

4

一些可能对您的探索有所帮助的事实:

  • Nexus S(以及 Galaxy Nexus、Nexus 7 和许多其他 Android 设备)中的 NFC 控制器是 PN544
  • 卡模拟可以通过连接到 NFC 控制器的安全元件或主机设备(在本例中为 Android 设备)来完成。Nexus S 有一个可用于此目的的安全元件(用于 Google 电子钱包)。来自主机设备的卡模拟不是 PN544 NFC 控制器的功能,尽管有些人声称他们已经设法让它工作。
  • 您可以通过 root 设备并按照https://stackoverflow.com/a/10506299/1202968上的说明通过安全元素打开卡仿真(尚未尝试使用 4.x JB,但我认为它仍然作品)。
  • 模拟 MIFARE Classic 卡可以由 Nexus S 中的安全元件完成,但不能由主机设备完成。Nexus S 中的安全元件不支持模拟 DESFire 卡。
  • 我研究了一个类似的门锁产品,它使用卡仿真本身与 NFC 移动设备通信,同时使用读卡器/写卡器模式与门禁卡通信。

IMO,两个最简单的选择是:使用 P2P 通信(Android Beam)或在读卡器设备中使用卡模拟(如果它支持的话)。所有其他选项都需要诸如根设备和自定义 ROM 之类的东西,它们不是面向未来的,也不可能被翻译成真正的产品。

于 2013-06-21T21:07:08.210 回答
2

Android 4.4 现在可以通过软件进行卡模拟。http://developer.android.com/guide/topics/connectivity/nfc/hce.html

于 2013-11-01T15:50:58.630 回答
0

2) 软件卡模拟肯定是可能的,但在当前的 Android API 中没有公开。您将不得不深入挖掘 libnfc-nxp(可能在下面)。不过,这可能是一件困难的事。如他们的 OpenNFC 参考实现所示,Inside Secure 的芯片上提供了此功能。唯一的问题是它是否需要更改 CLF 固件。如果没有,那么您可以将其破解为软件映像。

但是,需要注意的是,您将缺少以下功能: - 安全性(Android 应用程序不如智能卡安全) - 快速且可预测的响应时间(嗯,可能取决于您如何编码) - 电话卡模拟运行已关闭

我相信 SEOS 基于 ISO14443-4 而不是 Mifare。这意味着您需要一个安全元素来运行它。

1)不太确定这个,我猜这仍然是基于硬件的(例如依赖于嵌入式安全元件,如恩智浦的SmartMX。

另一种选择是开始在安全元素上进行开发。最直接的方法是获取一些支持 SWP/HCI 的示例测试 SIM。有一个名为 IzyNFC 的免费开发工具包,您可以将其用于 javacard,以及用于 Android 应用程序端的 GSMA 和 AFSCM 技术文档。

于 2013-06-21T15:21:49.173 回答