目前,我正在尝试使用JCDK 3.0.4、Sim读取器IDBridge CT30和两种不同的Sim卡来学习和开发Sim卡应用程序,其中一张是sysmoSIM SJS-4FF和Taisys SIMoME,我使用JavaCardOs作为我的IDE,并在Sim卡上安装applet。但是,我面临一个问题,因为当我验证GP与我的Sim卡一起工作时,我将得到下一个错误"GP验证开始. GP验证错误: GP init更新失败. recv: 6D 00“。因此,我下载了gp.exe For windows7,以验证计算机是否检测到了读取器,并在输入命令时进行了验证。
java -jar gp.jar -i
下一个回来的是:
Reader: Gemalto USB Smart Card Reader 0
ATR: 3B9F96801FC38031E073FA2100673101460FAC18F8FE
More information about your card:
http://smartcard-atr.appspot.com/parse?
ATR=3B9F96801FC38031E073FA2100673101460FAC18F8FE
***** Card info:
NO CPLC
***** CARD DATA
NO CARD DATA
***** KEY INFO
[main] WARN pro.javacard.gp.GlobalPlatform - GET DATA(Key Information Template) not supported
Exception in thread "main" java.lang.NullPointerException
at java.io.ByteArrayInputStream.<init>(Unknown Source)
at org.bouncycastle.asn1.ASN1InputStream.<init>(Unknown Source)
at pro.javacard.gp.GPData.get_key_template_list(GPData.java:155)
at
pro.javacard.gp.GlobalPlatform.getKeyInfoTemplate(GlobalPlatform.java:369)
at pro.javacard.gp.GPData.print_card_info(GPData.java:318)
at pro.javacard.gp.GPTool.main(GPTool.java:443)我研究了答案,根据许多链接,它说我需要设置一个键(我一点也不知道),我发现一些人在Gemalto阅读器中使用下一个命令来设置键:
java -jar gp.jar -ldvi -sdaid A000000003000000
根据修复问题的帖子,为了验证它是否有效,我必须键入下一个命令来验证读取器是否工作得很好:
java -jar gp.jar -l -v -d
但相反,我得到了一个错误"java.lang.IllegalStateException:没有选择的ISD!",这是许多人与卡前个性化,这是一个品牌特有的东西。我查了手册,但没有说什么。有人能引导我把卡预先个性化吗?我是不是漏了什么东西?
提前谢谢你。
发布于 2017-09-09 03:23:15
我假设您正在尝试使用JavaCard作为移动电话中的SIM卡。
首先,SIM遵循各种规范,如ETSI、3 3GPP、ISO和JavaCard规范。
JavaCard和SIM之间的关键区别在于文件系统(而不是忘记身份验证命令)。任何手机,访问某些文件(但不限于),并断言此卡是否是SIM卡。
一旦移动电话找到了这些文件(每个手机开发人员和另一个开发人员的文件不同),那么它就会通过他们的AIDs获得可用的应用程序,如果找到了用于USIM的AID,那么它就会尝试找到另一组文件。
因此,我会建议,拿起安卓手机的源代码,看看哪些东西是必需的,或者可能是嗅探手机与手机之间的通信,并在JavaCard中填充/处理这些命令。
这个Android源代码可能是您分析的一个良好起点。
https://stackoverflow.com/questions/45553624
复制相似问题