我已经修补了寻找银河S3的安卓,经过一些挣扎,我现在能够发送APDU到SIM卡,并得到适当的反应。
我想把我自己的小应用程序放在SIM里面,但是由于我们没有办法这样做,我开始怀疑是否有一个java卡可以像SIM卡一样工作。我所需要的只是一张java卡,手机无法区分它与SIM,不需要网络覆盖,我知道,几乎不可能创建一个SIM,可以与运营商和网络覆盖。
这一切的原因是我需要发送APDU并使用我的applet,但是如果我在GS3中插入一个java卡而不是一个SIM卡,它将使我完全没有访问权限。
所以我的问题是:是否有可能发出一张java卡,使它看起来像电话中的SIM (而不是操作员)?
或者,当android中有一个java卡时,它是否有可能改变它,以便它提供所需的访问权限,也就是说,RIL正常工作?
编辑
好的,我想我将尝试发行一个具有以下属性的Java卡:
首先,它将有一个自动选择的applet (默认applet),从现在起将被称为假-UICC。
第二,在假UICC中,我们将模仿UICC的文件系统(根据http://www.in2eps.com/fo-uicc/tk-fo-uicc-mf.html)。
第三,由于SIM (0xA0)使用了不同的类,所以所有从RIL发送的APDU都将被JCRE定向到假-UICC,因为普通的Java卡无法识别class+instruction。例如,0xA0A4是SIM的选择,而0x00A4是Java的select命令。
在最后一步,我们将尝试发送完全相同的响应,一个真正的SIM将发送给每个APDU。
也许行不通,但我认为值得一试。
发布于 2015-08-08 07:17:09
实际上,,我不确定这个解决方案是否有效,正如他在回答下面的评论中提到的那样,我想劝阻人们不要做以下的尝试。这将是困难的,耗时的,可能没有任何有用的结果。在这个领域他比我了解得多。
不管怎么说,正如你想要的那样,我张贴了我的建议:
SIM/USIM卡的系统文件中的每个文件都链接到一个十六进制数字作为其地址(AID)。这些艾滋病是在GSM和ETSI标准(例如GSM 11.11 )中定义的。您可以编写一些Javacard来模拟系统文件。
由于SIM/USIM卡的艾滋病比JavaCard艾滋病缩短,您可能需要选择一个支持部分AID选择的JavaCard,并使用此功能将传入的命令引用到其关联的applet。
我认为您也可以模拟单个applet中的所有系统文件,然后使该applet默认选中applet。
如果您对此解决方案有任何成功,请通知我们。:)
发布于 2015-07-08 07:53:18
通过搜索访问SIM卡(UICC)并不是您可以在手机中使用的唯一安全元素。
市场上还有其他的Java解决方案:主要是基于microSD插槽(例如,由GoTrust或提供的),您应该可以通过Card访问它们。
有些手机(不幸的是,Galaxy S3不是这样)配备了一个特殊的安全元素插槽,您可以将普通智能卡(主要是通过Oberthur)插入并通过smart访问它(一些具有此功能的设备请参见http://www.nfcworld.com/technology/embedded-secure-element-ese/ )。
有一篇关于SE选项的有趣文章:http://nelenkov.blogspot.cz/2012/08/accessing-embedded-secure-element-in.html
如果您认识一些提供microSD Java产品的供应商,请将它们写在评论中,我将把它们添加到我的帖子中。这个答案不应该是上述公司的任何广告。
https://stackoverflow.com/questions/31268002
复制相似问题