通过软件NFC进行卡仿真

时间:2013-06-20 17:56:14

标签: android nfc apdu hce contactless-smartcard

在阅读了很多问题之后,我决定发布这个问题。我读到android的股票版本不支持用于卡片仿真的API。此外,由于谷歌/三星管理的密钥,我们无法编写自定义应用程序来保护嵌入在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/

3 个答案:

答案 0 :(得分:3)

可能对您的任务有帮助的一些事实:

  • Nexus S中的NFC控制器(以及Galaxy Nexus,Nexus 7和其他一些Android设备)是PN544
  • 卡仿真可以通过连接到NFC控制器的安全元件或主机设备(在这种情况下为Android设备)完成。 Nexus S具有可用于此的安全元素(在Google电子钱包中使用)。来自主机设备的卡仿真不是PN544 NFC控制器的功能,尽管有些人声称他们已经设法使其正常工作。
  • 你可以通过安装设备并按照https://stackoverflow.com/a/10506299/1202968上的说明开启安全元件的卡片仿真(我们没有尝试使用4.x JB,但我认为它仍然有效)。
  • 模拟MIFARE Classic卡可以通过Nexus S中的安全元件完成,但不能由主机设备完成。 Nexus S中的安全元素不支持模拟DESFire卡。
  • 我研究了一种类似的门锁产品,它使用卡片仿真本身与NFC移动设备进行通信,同时使用读卡器/写卡器模式与门禁卡进行通信。
IMO,最简单的两个选项是:使用P2P通信(Android Beam)或在读卡器设备中使用卡仿真(如果支持它)。所有其他选项都需要诸如root设备和自定义ROM之类的东西,这些东西不是面向未来的,不可能被翻译成真正的产品。

答案 1 :(得分:1)

现在,Android 4.4可通过软件进行卡片仿真。 http://developer.android.com/guide/topics/connectivity/nfc/hce.html

答案 2 :(得分:0)

2)绝对可以通过软件进行卡片仿真,但不会在当前的Android API中公开。你将不得不深入研究libnfc-nxp(可能在下面)。但这可能是一个困难的问题。此功能在Inside Secure的芯片上提供,如OpenNFC参考实现中所示。唯一的问题是它是否需要更改CLF固件。如果没有,那么你可以将其破解为软件映像。

但需要注意的是,您将缺少以下功能: - 安全性(Android应用程序不如智能卡安全) - 快速且可预测的响应时间(好吧,取决于你可能的编码方式) - 手机关机时卡片仿真

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

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

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