首页 文章

用SEEK在android中使用java卡而不是SIM卡

提问于
浏览
5

我用SEEK为Galaxy S3修补了android,经过一番努力,我现在能够将APDU发送到SIM卡并得到适当的响应 .

我想把我自己的小程序放在SIM卡中,但由于我们无法获得访问权限,我开始怀疑是否有可能发布一张java卡就像SIM卡一样工作 . 我所需要的只是一张手机无法与SIM卡区分的Java卡,不需要网络覆盖,我知道创建一个可以与运营商合作并提供网络覆盖的SIM几乎是不可能的 .

所有这一切的原因是我需要发送APDU并使用我的applet,但如果我在GS3中插入一张Java卡而不是SIM卡,它根本无法访问我 .

所以我的问题是:是否有可能发出一张Java卡,使其看起来像手机上的SIM卡(而不是运营商)?

或者是否有可能更改android以便在其中有Java卡时提供所需的访问权限,即RIL像往常一样工作?


编辑

好的,我想我会尝试发布一个包含以下属性的Java Card:

首先,它将有一个自动选择的applet(默认applet),从现在开始将调用fake-UICC .
其次,在假UICC中,我们将模拟UICC的文件系统(根据http://www.in2eps.com/fo-uicc/tk-fo-uicc-mf.html) .
第三,由于不同的类用于SIM APDU( 0xA0 )所以从RIL发送的所有APDU将由JCRE定向到伪UICC,因为普通Java卡无法识别类指令 . 例如 0xA0A4 为SIM选择,但 0x00A4 是Java Card的选择命令 .
在最后一步中,我们将尝试发送真实SIM将发送到每个APDU的完全相同的响应 .

也许它不会起作用,但我认为值得一试 .

2 回答

  • 1

    那么,实际上 I'm not sure 如果这个解决方案有效或无效,并且正如亲爱的@Vojta在他的回答中提到的那样,我想阻止人们进行以下尝试 . 这将是困难的,耗时的,并且可能没有有用的结果 . 他在这个领域比我知道得多 .

    无论如何,你想要我发布我的建议:

    SIM / USIM卡的系统文件中的每个文件都链接到十六进制数作为其地址(AID) . 这些AID在GSM和ETSI标准(例如GSM 11.11)中定义 . 您可以编写一些Javacard小程序来模拟该系统文件 .

    由于SIM / USIM卡的AID比JavaCard AID缩短,您可能需要选择支持部分AID选择的Java卡,并使用此功能将传入命令引用到其关联的小程序 .

    我认为您也可以在单个applet中模拟所有系统文件,然后使该applet默认选择applet .

    如果您对此解决方案有任何成功,请通知我们 . :)

  • 2

    通过SEEK访问的SIM卡(UICC)并不是您可以在手机中使用的唯一安全元素 .

    市场上还有其他Java Card解决方案:主要基于microSD插槽(例如由GoTrust或Feitian Technologies提供),您应该可以通过SEEK访问 .

    有些手机(不幸的是Galaxy S3不是这种情况)配备了一个特殊的安全元件插槽,您可以将常用智能卡(主要是Oberthur)插入SEEK并通过SEEK进行访问(对于某些具有此功能的设备,请参见http://www.nfcworld.com/technology/embedded-secure-element-ese/) .

    有一篇关于SE选项的有趣文章:http://nelenkov.blogspot.cz/2012/08/accessing-embedded-secure-element-in.html

    如果您了解其他一些提供microSD Java Card产品的供应商,请在评论中写下来,我会将它们添加到我的帖子中 . 这个答案不应该是上述公司的任何广告 .

相关问题