奇巧:如何航线的APDU到SIM卡

问题描述 投票:7回答:3

我想航线的APDU我从NFC读写器获取到SIM卡。按照HCE documentation我认为这将有可能只是通过创建一个具有根据路由条目(我做了)的OffHostApduService。

可悲的是,SIM似乎并没有得到任何的APDU。选择-命令时,SIM卡直接与6a82连接到我的工作站通过SIM卡阅读器返回的工作(未找到文件)。

在logcat中我发现了两个信息感兴趣的东西:

每次我拍一个SELECT命令应该被路由到SIM卡,我得到这些条目:

01-14 10:44:18.501: D/BrcmNfcJni(1009): RoutingManager::stackCallback: event=0x17
01-14 10:44:18.501: D/BrcmNfcJni(1009): RoutingManager::stackCallback: NFA_CE_DATA_EVT; h=0x302; data len=12
01-14 10:44:18.501: D/HostEmulationManager(1009): notifyHostEmulationData

我认为这是一个线索,路由设置不正确的,因为我想的是Android OS不应该知道当路由到SIM处于活动状态,并且选择或其他命令发送到SIM卡。

我每次从阅读器的近距离无线通信领域的取出手机,我收到以下错误:

01-14 10:46:48.791: E/BrcmNfcNfa(1009): UICC[0x0] is not activated

我试图跟踪这个错误的原因下来,发现这似乎属于博通NFC驱动程序文件external/libnfc-nci/src/nfa/ce/nfa_ce_act.chere

我认为错误是因为司机认为,SIM卡未激活的应用程序无法设置正确的路由为APDU的。在我发出命令的那一刻,SIM解锁(PIN-输入),但我怀疑这有什么关系呢,因为我没有在读卡器使用它之前解锁SIM卡。

我使用的是Nexus 5进行测试。是否有人有经验和/或工作的例子,其中的APDU可以被路由到SIM卡,而不是CPU?

android nfc android-4.4-kitkat apdu hce
3个回答
5
投票

快速检查(分析插入到设备的UICC SWP引脚上的信号)显示了Nexus 5未激活SIM作为NFC安全元件(均未在引导也不穿上智能卡读取器的电话时)。

然而,我发现在设备的系统分区两个有趣的文件:

  • /system/etc/libnfc-brcm-20791b05.conf
  • /system/etc/libnfc-brcm.conf

这两个文件似乎以提供用于NFC控制器的配置(第一个芯片sepecific配置和第二个芯片家族特异性一个?)。

解锁引导程序后,我可以通过启动一个clockworkmod恢复映像修改通过亚行的文件,所以我做了一些与配置参数试验。

其结果是,我设法让设备激活UICC(UICC被激活,并通过SWP注册了CE门?),该装置有时甚至通知UICC约场状态的变化。然而,没有我修改的配置,我能得到读者顺利地发现卡仿真(这是之前,工作时仅HCE是在设备上可用),也与UICC通信。

/system/etc/libnfc-brcm.conf有趣的参数似乎是:

  • NFA_MAX_EE_SUPPORTED:这是当前设置为0。我试过值3,这似乎是默认的。
  • ACTIVE_SE:这当前被设定为0(无活性SE)。我试图取消对线,使设备使用第一SE检测。
  • NFA_HCI_STATIC_PIPE_ID_??:不应该是必要的,但上了GS4这是设置为0x71的? = F3和F4。
  • UICC_LISTEN_TECH_MASK:这是设置为0x00我们GS4。
  • REGISTER_VIRTUAL_SE:我离开了这个,因为它是(==注释掉)。
  • SCREEN_OFF_POWER_STATE:我没有这个实验,但在我们这个GS4设置为3(关屏CE)。

/system/etc/libnfc-brcm-20791b05.conf有趣的参数似乎是:

  • NFA_DM_START_UP_CFG:我试过了UICC被注释掉的参数,我试图使用的配置从我们的GS4。值具有长度字节开始,并且在TLV格式(一个标记字节,一个字节长度,参数数据)被构造。为UICC激活相关的标签似乎是C2,其中如果设置在第二个参数字节中的高两位禁用NFC控制器的SWP接口。
  • NFA_DM_PRE_DISCOVERY_CFG:该评论认为,这需要被注释掉了UICC的支持。

3
投票

这是一个,而自从我上次在Android上使用,但据我所知(我可能是错的),安全元件访问(内部或内部SIM)卡仿真起到尚未打开,所有的开发人员(without some hacking)。有这方面似乎还没有解决SE控制许多非技术问题(谁保持蛋糕的电信运营商或服务提供商的最大份额?)。

该消息是,谷歌已经采取奇巧及其HCE,基本上包含在实施无硬件安全元件一个NFC卡模拟模式不同的方法。恕我直言,这基本上是打破了有趣的卡模拟模式应用所需的安全:电子支付,票务,身份验证等Nexus 5 lacks such secure element我怀疑谷歌将通过放宽对进入安全里面SIM元素迎合运营商,所以我想它仍然会不可能APDU发送到SIM卡与股票固件。


2
投票

如果您将以下内容添加/etc/libnfc-brcm.conf

DEFAULT_ISODEP_ROUTE=0xF3 

在UICC将接收的APDU

您还需要所有修改abovelibnfc-brcm.conflibnfc-brcm-20791b05.conf

截至果冻豆4.3,正常的方法是使用nfc_extras及其方法CardEmulationRoute (<route>, <nfcEe>)路由的UICC到RF。但在奇巧,通过DEFAULT_ISODEP_ROUTE这种残酷的修改足以启用UICC卡仿真。

© www.soinside.com 2019 - 2024. All rights reserved.