Android M4M-Mifare-DESFire EV1:需要将哪些Mifare-AID添加到NFC路由表中,以便将非主机路由到UICC上的Mifare-DESFire虚拟卡?

Android M4M-Mifare-DESFire EV1:需要将哪些Mifare-AID添加到NFC路由表中,以便将非主机路由到UICC上的Mifare-DESFire虚拟卡?,android,nfc,mifare,contactless-smartcard,secure-element,Android,Nfc,Mifare,Contactless Smartcard,Secure Element,在一些Android设备上,Mifare DESFire通信路由到HCE,而不是脱离主机(UICC) 从基于OMAPI与非主机安全元素的通信中,我已经学会了如何向Android非主机路由表中添加辅助工具,以便我可以在UICC上选择它们。(感谢@MichaelRoland) 我目前的问题是:我的UICC上确实有一个虚拟Mifare DESfire卡。现在,有些设备没有将本机包装的Mifare命令路由到UICC,而且我仍然没有更改默认路由的交换机。因此,我想在我的脱离主机路由表中有另一个条目,但我不

在一些Android设备上,Mifare DESFire通信路由到HCE,而不是脱离主机(UICC)

从基于OMAPI与非主机安全元素的通信中,我已经学会了如何向Android非主机路由表中添加辅助工具,以便我可以在UICC上选择它们。(感谢@MichaelRoland)

我目前的问题是:我的UICC上确实有一个虚拟Mifare DESfire卡。现在,有些设备没有将本机包装的Mifare命令路由到UICC,而且我仍然没有更改默认路由的交换机。因此,我想在我的脱离主机路由表中有另一个条目,但我不知道该使用哪个辅助工具

我们的MIFARE DESFire测试应用程序
F01010
有一个PICC应用程序帮助。这是用于在CLT界面上选择应用程序的辅助工具,但无法输入到Android脱离主机路由表中。此外,我们还有两个与MIFARE DESFire应用程序相关的辅助工具。这是虚拟卡管理器辅助工具(
A000003964D344D14000000000000000
)和服务管理器辅助工具(
A000003964D344D2400000000000


但是,我必须在路由表中插入哪些辅助工具?

如果您想以广泛的方式部署应用程序,以避免使用相同辅助工具的应用程序之间发生冲突,则必须遵循ISO7816-5。第二种方法是使用一个始终以0x0F开头的专有非注册辅助

示例:0x0F、0x11、0x22、0x33、0x44

Android(可能还有NFC控制器本身)目前仅支持基于ISO/IEC 7816-4 AIDs/DF名称的路由配置。您不能为本机DESFire辅助(即3字节辅助)或所有本机包装的通信添加路由

您可以做什么:

  • 在应用程序创建期间,为您的DESFire应用程序指定ISO/IEC 716-4 DF名称。此DF名称是可以在Android脱离主机路由配置中指定的辅助工具。但是,您需要使用DESFire ISO命令集(特别是发出SELECT FILE(by DF name)命令来选择您的DESFire应用程序)来触发基于AID的路由

  • DESFire EV1本身具有AID/DF名称
    D2 76 00 00 85 01 00
    。如果您的读卡器选择此辅助(使用选择文件(按DF名称)命令),则DESFire卡将切换到ISO框架(允许使用ISO命令和包装的本机命令)并选择其主文件。您可以向Android注册此帮助,将所有DESFire通信路由到UICC。但是,每个读卡器都需要通过发送SELECT FILE命令来启动DESFire通信


对不起,我确实有帮助,但我不知道需要向路由表添加什么。我的应用程序基本上只是确保此Mifare Desfire VC(或Mifare Desfire)的所有命令都路由到UICC。为此,我需要知道哪些以及如何将Mifare Desfire VC(AID)添加到非主机路由。嗨,Andy,从应用程序级别看,您无法访问真正的路由表。您在清单中所做的基本上只是注册到android系统,哪些服务使用哪些辅助。据我所知,从应用程序级别无法访问真正的路由表,该路由表决定哪些内容将被托管,哪些内容将被UICC访问。如果要更改默认路由,必须访问NFC堆栈本身的配置文件。例如/etc/libnfc-brcm.conf,如果手机内置broadcom芯片。在这个位置上,基本上你必须添加你的路线。