Sim卡预先个性化程序

时间:2017-08-07 18:37:15

标签: applet javacard sim-card

目前,我正在尝试使用JCDK 3.0.4学习和开发Sim卡应用程序,一个Sim读卡器IDBridge CT30和两个不同的Sim卡,一个是sysmoSIM-SJS1-4FF和一个Taisys SIMoME,我正在使用JavaCardOs作为我的IDE并在Sim卡上安装applet。但是,我遇到了一个问题,因为当我验证GP是否使用我的SIM卡时,我收到了下一个错误" GP验证开始...... GP验证错误:GP init更新失败。 recv:6D 00"。出于这个原因,我下载了用于windows7的gp.exe,以验证计算机是否检测到阅读器以及何时键入命令

  

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)

我研究了答案,并根据许多链接说我需要设置一个密钥(我根本不知道),我发现有些人为金雅拓读者使用下一个命令设置密钥:

  

java -jar gp.jar -ldvi -sdaid A000000003000000

根据应该修复问题的帖子并验证它是否有效我必须输入下一个命令来验证阅读器是否完美运行:

  

java -jar gp.jar -l -v -d

但相反,我得到一个错误&#34; java.lang.IllegalStateException:没有选定的ISD! &#34;,很多人都与SIM卡预个性化有关,这是一个品牌特定的事情。我检查了手册,但它没有说出任何相关信息。有人可以指导我预先个性化SIM卡吗?我错过了别的什么吗?

提前谢谢。

1 个答案:

答案 0 :(得分:0)

我假设您正在尝试将JavaCard用作手机中的SIM卡。

首先,SIM遵循各种规范,例如ETSI,3GPP,ISO和JavaCard规范。

JavaCard和SIM之间的关键区别在于文件系统(而不是忘记身份验证命令)。任何移动电话,访问某些文件(但不限于此)并断言该卡是否为SIM卡。

一旦移动电话找到这些文件(每个电话开发者与另一个电话开发者不同),它就会通过其AID获取可用的应用程序,如果找到USIM的AID,则它会尝试查找另一组文件。

所以,我建议,提取Android手机的源代码并查看所需内容,或者可能是用手机嗅探SIM通信并在JavaCard中填充/处理这些命令。

This Android source code可能是您分析的良好起点。