如何使用SIM卡(安装小程序)

时间:2015-04-01 09:27:04

标签: gsm javacard sim-card globalplatform gemalto

我有一张带有以下ATR的智能卡:

ATR = 3B 9E 94 80 1F 42 80 31 00 73 BE 21 10 66 54 59 53 04 4C 25 CF

根据atr-parse.appspot.com的输出,我发现它是 MCI(伊朗移动通信公司)SIM卡

这些是我从历史字节中获得的信息:

  

(紧凑型TLV数据对象)

     

标签:3,Len:1(卡服务数据字节)

     

卡服务数据字节:0

     
      
  • EF.DIR和EF.ATR访问服务:通过GET RECORD(s)命令

  •   
  • MF卡

  •   
     

标签:7,Len:3(卡片功能)

     

选择方法:190

     
      
  • 支持记录号

  •   
  • 支持短EF标识

  •   
  • 隐式DF选择

  •   
  • 按文件标识符选择DF

  •   
  • 按路径选择DF

  •   
  • DF选择完整的DF名称

  •   
     

数据编码字节:33

     
      
  • 写函数的行为:专有

  •   
  • BER-TLV标记字段的第一个字节的值'FF':有效

  •   
  • 四重奏中的数据单位:1

  •   
     

命令链,长度字段和逻辑通道:16

     
      
  • 逻辑频道编号分配:通过卡

  •   
  • 逻辑通道的最大数量:1

  •   
     

标签:6,Len:6(发布前数据)

     

数据:54 59 53 04 4C 25“TYS.L%”

如上所述,提到该卡片有MF

问题是我对这张卡无能为力。在第一步中,我想列出其内容。我查看了 TS 11.11 TS 102.221 TS 131.102 TS 151.011 规范。

据我从上面的文档中了解,该卡的系统文件由Master File组成,其AID为3F00,有些DF-s和EF-s。例如,基于 TS 151.011 规范的下表,我试图选择一些DF-s:

enter image description here

结果如下:

Connected to RTP CCID USB Reader 0
ATR: 3B 9E 94 80 1F 42 80 31 00 73 BE 21 10 66 54 59 53 04 4C 25 CF

> APDU
> A0 A4 04 00 02 5F 30
< 6A 82

> APDU
> A4 A4 04 00 00
< 6E 00

> APDU
> A0 A4 04 00 00
< 67 00

> APDU
> 00 A4 04 00 00
< 61 13

> APDU
> 00 C0 00 00 13
< 6F 11 84 09 A0 00 00 00 62 03 01 08 01 A5 04 9F 65 01 FF
< 90 00

> APDU
> 00 A4 04 00 09 A0 00 00 00 62 03 01 08 01
< 61 13

> APDU
> A0 A4 04 00 09 A0 00 00 00 62 03 01 08 01
< 6E 00

> APDU
> 00 A4 04 00 09 A0 00 00 00 62 03 01 08 01
< 61 13

> APDU
> 00 C0 00 00 13
< 6F 11 84 09 A0 00 00 00 62 03 01 08 01 A5 04 9F 65 01 FF
< 90 00

> APDU
> 00 A4 04 00 02 3F 00
< 6A 82

> APDU
> A0 A4 04 00 02 3F 00
< 6E 00

如上所述,我失败了,我只能找到ISD的AID。

我也尝试使用 GlobalPlatformPro 工具列出内容,但似乎该卡不支持初始更新APDU命令:

C:\Users\User\Desktop\today>java -jar gp.jar -visa2 -key 47454D5850524553534F53414D504C45 -unlock -list -v -d -i
# Detected readers from SunPCSC
[*] RTP CCID USB Reader 0
SCardConnect("RTP CCID USB Reader 0", T=*) -> T=0, 3B9E94801F4280310073BE211066545953044C25CF
SCardBeginTransaction("RTP CCID USB Reader 0")
Reader: RTP CCID USB Reader 0
ATR: 3B9E94801F4280310073BE211066545953044C25CF
More information about your card:
    http://smartcard-atr.appspot.com/parse?ATR=3B9E94801F4280310073BE211066545953044C25CF

A>> T=0 (4+0000) 00A40400 00
A<< (0019+2) (249ms) 6F118409A00000006203010801A5049F6501FF 9000
Auto-detected ISD AID: A00000006203010801
***** Card info:
A>> T=0 (4+0000) 80CA9F7F 00
A<< (0000+2) (73ms) 6A86
GET DATA(CPLC) returned SW: 6A86
NO CPLC
***** CARD DATA
A>> T=0 (4+0000) 80CA0066 00
A<< (0000+2) (81ms) 6E00
NO CARD DATA
***** KEY INFO
A>> T=0 (4+0000) 80CA00E0 00
A<< (0000+2) (82ms) 6E00
A>> T=0 (4+0000) 00CA00E0 00
A<< (0000+2) (60ms) 6E00
GET DATA(Key Information Template) not supported
A>> T=0 (4+0008) 80500000 08 FE44F8E8DF60349B 00
A<< (0000+2) (61ms) 6D00
pro.javacard.gp.GPException: INITIALIZE UPDATE failed SW: 6D00
        at pro.javacard.gp.GlobalPlatform.check(GlobalPlatform.java:1092)
        at pro.javacard.gp.GlobalPlatform.openSecureChannel(GlobalPlatform.java:398)
        at pro.javacard.gp.GPTool.main(GPTool.java:371)

C:\Users\User\Desktop\today> 

我想知道什么是错的?如何在此SIM卡上安装Java卡小程序?

请注意,我已成功使用Java Card,但我对这些SIM卡完全感到困惑。我感谢任何人都能对这个问题有所了解。 问候。

2 个答案:

答案 0 :(得分:3)

如果您从市场(而不是您自己的开发卡)获得该卡,由于您不了解其ISD的密钥集,因此几乎不可能在其上安装applet。这样做是为了仅授予发卡机构和卡所有者(MNO)对SIM卡内容的完全控制权。

另一种可能的解释是并非所有SIM卡都完全支持GP或Javacard。现有的SIM卡只能符合2G / 3G / 4G标准(GSM 11.11,11.14,102.222等)才能对其用户进行网络认证。这样的SIM卡也可以拥有STK应用程序,但它不一定是javacard applet。

答案 1 :(得分:1)

根据您的Initialize Update命令的上一个日志,可能有以下几种可能性: 1.您的卡不支持Scp02 / Scp03,如果它支持GP,则可能性较小。 2. ISD未配置SCP支持的参数。 3.以前在卡上的同一逻辑信道上有另一个安全信道。

根据我的观点,可能有最后两种可能性。

要检查第3个,您应该尝试使用以下一组步骤启动Scp02: 1.发送冷复位(PowerON-Power-OFF) 2.选择ISD 3.发送初始化更新命令。

如果它不起作用,那么您需要ISD应用参数的信息,从这些参数中您可以识别出ISD是否支持SCP02 / 03?

这些参数可以是:'C9 04 81 02 XX YY'(这里是XX支持SCP的SCP和YY参数'i'值。)