Android 通过软件NFC进行卡仿真

Android 通过软件NFC进行卡仿真,android,nfc,apdu,hce,contactless-smartcard,Android,Nfc,Apdu,Hce,Contactless Smartcard,在阅读了很多问题后,我决定发布这篇文章。我读到android的股票版本不支持卡模拟的API。此外,由于谷歌/三星管理的密钥,我们无法编写自定义应用程序来保护嵌入nfc控制器中的元素 我需要模拟一张卡(mifare或desfire等)。我能看到的选择是通过软件实现。我有一个ACR122U阅读器,并且我已经测试过NFC P2P模式与我的Nexus-S配合良好 1) 我看到一个网站说nexus s的NFC控制器(pn532)可以模拟mifare 4k卡。如果这是真的,我可以将apdu命令写入/读取到此

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

我需要模拟一张卡(mifare或desfire等)。我能看到的选择是通过软件实现。我有一个ACR122U阅读器,并且我已经测试过NFC P2P模式与我的Nexus-S配合良好

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

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

我认为这是可能的,因为我们有访问控制公司的产品,这些公司提供移动应用程序,人们可以通过这些应用程序打开大门,例如,通过软件模拟卡应该是绝对可能的,但在当前的安卓API中没有公开。您必须深入研究libnfc-nxp(可能在下面)。但这可能是一个困难的问题。此功能在Inside Secure的芯片上提供,如其OpenNFC参考实现所示。唯一的问题是它是否需要更改CLF固件。如果没有,那么你可以把它破解成一个软件映像

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

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

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


另一种选择是开始在安全元素上开发。最简单的方法是获得一些支持SWP/HCI的示例测试模拟人生。有一个名为IzyNFC的免费开发工具包,可用于javacard,还有用于Android应用程序端的GSMA和AFSCM技术文档。

一些事实可能对您的应用程序有所帮助任务:

  • Nexus S(以及Galaxy Nexus、Nexus 7和许多其他Android设备)中的NFC控制器是PN544
  • 卡模拟可以通过连接到NFC控制器的安全元素或主机设备(=本例中的Android设备)来完成。Nexus S有一个可用于此的安全元素(在谷歌钱包中使用).主机设备的卡仿真不是PN544 NFC控制器的一项功能,尽管一些人声称他们已设法使其工作
  • 您可以通过安全元素启动卡模拟,方法是在设备上根目录,并遵循上的说明(我还没有用4.x JB尝试过这一点,但我假设它仍然有效)
  • 模拟MIFARE Classic卡可以由Nexus S中的安全元素完成,但不能由主机设备完成。Nexus S中的安全元素不支持模拟DESFire卡
  • 我调查了一个类似的门锁产品,它使用卡模拟本身与NFC移动设备通信,同时使用读卡器/写卡器模式与访问控制卡通信

在我看来,最简单的两个选项是:使用P2P通信(Android Beam)或在读卡器设备中使用卡模拟(如果它支持的话)。所有其他选项都需要像根设备和自定义ROM这样的东西,它们不是未来的证明,也不可能转化为真正的产品。

Android 4.4现在可以通过软件进行卡模拟。

感谢您的回复。因此,通过阅读我得到的答案,P2P是一种方式。那么我可以编写一个Android应用程序吗(使用Android beam),在一次点击读卡器时,将相关数据发送给读卡器,以授予/拒绝访问door?我可以在一次点击中交换多个NDEF消息吗?我想知道一次点击可以发送/接收的数据量。我目前正在使用NPP进行P2P模式。如果我有更多数据要交换,我是否应该切换到SNEP?你的回答也是含糊不清。你没有具体回答OP问题。请多花一点时间解释,不要只是吐出链接。此外,如果该链接将来中断,答案将被截断。至少从该链接中写出总结和回答问题的重要内容。问候!