【问题标题】:Card emulation via software NFC通过软件 NFC 进行卡模拟
【发布时间】:2013-06-20 17:56:13
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: android nfc apdu hce contactless-smartcard


    【解决方案1】:

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

    • 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 之类的东西,它们不是面向未来的,也不可能被翻译成真正的产品。

    【讨论】:

    • 感谢您的回复。所以,通过阅读我得到的答案,P2P 是要走的路。那么我可以编写一个 android 应用程序(使用 Android 光束),只需轻按一下阅读器,即可将相关数据发送给阅读器以授予/拒绝对门的访问权限?我可以一键交换多条 NDEF 消息吗?我想知道一次点击可以发送/接收的数据量。我目前正在将 NPP 用于 P2P 模式。如果我有更多数据要交换,我应该切换到 SNEP 吗?
    【解决方案2】:

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

    【讨论】:

    • 你的回答太模糊了。您没有具体回答 OP 问题。多花一点时间来解释,不要只是吐出链接。此外,如果将来此链接断开,则答案将被截断。至少从该链接中写下总结和回答问题的重要内容。亲切的问候!
    【解决方案3】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2015-07-06
      • 2011-09-30
      • 2011-08-17
      • 1970-01-01
      • 2023-04-11
      • 2010-11-20
      • 1970-01-01
      • 1970-01-01
      • 2011-09-27
      相关资源
      最近更新 更多