安卓手机找不到使用"android.se.omapi.Reader.isSecureElementPresent()"的自定义SIM卡



我发布这个问题是因为我找不到合适的地方来问这个问题。

我正在使用智能卡开发自定义安全元素。

我成功连接了SEService并使用seservice.getReaders()获得了一个Reader实例。

但是,当我调用reader.isSecureElementPresent()时,它返回false

当我尝试使用普通SIM卡时,我可以找到安全元件,当我打电话给reader.isSecureElementPresent()时,它会返回true

所以我推断手机无法识别我的自定义SIM卡,这是一个native smartcard。实际上,我的本机智能卡可以与普通读卡器正常工作,并且该卡支持ISO/IEC 7816-4T=0 protocol接口。

当我尝试使用Java Card时,手机能够找到卡,并成功获得ATR。

因此,手机无法识别native smartcard而是javacard

在 Android 上通过isSecureElementPresent()方法找到安全元素是否有特定要求?

我浏览了Open Mobile API 3.3,但对isSecureElementPresent()方法没有足够的解释。

我假设手机找不到我的本机智能卡,可能是因为它没有实现GlobalPlatform Card Specification,因为开放移动API 3.3是由GlobalPlatform组织创建的。实际上Java卡支持GlobalPlatform Card Specification。这就是为什么我这么认为。

这是一个有趣的问题,虽然我没有答案,但我可以指出一种方法来掌握我已经使用过的一些信息。

2 猜测:

  • 您的 SE 没有 SIM 卡文件系统,并且未被识别为 UICC
  • 缺少运营商权限小程序(GP 安全元素访问规则(,可能需要

如果这没有帮助,这里是进一步研究的来源链接:

http://aosp.opersys.com/xref/android-10.0.0_r39/xref/frameworks/base/core/java/android/se/omapi/Reader.java

http://aosp.opersys.com/xref/android-10.0.0_r39/xref/frameworks/base/core/java/android/se/omapi/ISecureElementReader.aidl

不幸的是,AIDL是内部的。在这种情况下,我所做的是使用Magisk,然后是edXposed框架。后者允许拦截系统调用,例如用于日志记录目的。我编写了一个示例项目来揭示无线电日志的响应 APDU。这可用于此建议和下一个建议。

在较低级别,查看交换的 APDU 也应该有所帮助。这应该可以通过查看无线电日志来实现logcat -b radio *:V

最后,SIM卡跟踪器也非常有用,可以查看手机如何与SE交互,例如查看APDU。如果某些命令返回错误,则表示您命中了候选项。这应该使您能够完全控制比较已接受的 UICC 和您的解决方案。

我已经成功地使用了以前版本的 SIMTrace,但在较旧的手机上。如果这不可用,请寻找替代方案,或者您的工程师可以将某些东西焊接在一起。

相关内容

  • 没有找到相关文章

最新更新