作者归档:softsim

CSIM Service Table

7F25/6F32

FF 03 FF 33 FF FF 3C 03 00 C0 00 00
FF 03 FC 03 FF 00 FC 03 00 0C 00 00 (老sim错误)
改成
00 03 C3 00 03 00 00 00 00 C0 00 00

CHV disable function 11 (可取消)
Abbreviated Dialing Numbers(ADN) 11 (可取消)
Fixed Dialing NUmbers(FDN) 11 (可取消)
Short Message Storage(SMS) 11 (可取消)

HRPD 11
Enhanced Phone Book 00
Multi Media Domain(MMD) 00
SF_EUIMID-based EUIMID 00

MEID Support 11
Extension 1 11 (可取消)
Extension 2 11 (可取消)
SMS Parameters 11

Last Number Dialed(LND) 11 (可取消)
Service Catergory Program for BC_SMS 00
Messaging and 3GPD Extensions 11 (可取消)
Root Certificated 00

CDMA Home Service Provider Name 11
Service Dialing Numbers(SDN) 11 (可取消)
Extenssion 3 11 (可取消)
3GPD-SIP 11 (可取消)

WAP Browser 11 (可取消)
Java 11 (可取消)
Reserved for CDG 11 (可取消)
Reserved for CDG 11 (可取消)

Data Download via SMS Broadcast 00
Data Download via SMS-PP 11 (可取消)
Menu Selection 11 (可取消)
Call Control 00

Proactive R-UIM 11 (可取消)
AKA 00
IPV6 00
RFU 00

RFU 00
RFU 00
RFU 00
RFU 00

RFU 00
3GPD-MIP 00
BCMCS 00
Multimedia Message Servicde(MMS) 11

Extension 8 00
MMS User Connnectivity Parameters 00
Application Authencation 00
Group Identifer Level 1 00

Group Identified Level 2 00
De-Peronalization Control Keys 00
Cooperative Network List 00
Call Control for Mobile Originated SMS Sevice 00

7FF1/6F32
E62A049CF40000000000
改成
C0020400000000000000

Local Phone book — 0
Fixed Dialing Numbers(FDN) — 1 (可以取消)
Extension 2 — 1 (可以取消)
Service Dialing Numbers(SDN) — 0

Extension 3 — 0
Short Message Storage — 1 (可以取消)
Short Message Parameters — 1
HRPD — 1

Service Category Program for BS-SMS —0
CDMA Home Service Provider Name —1
via SMS Broadcast (for CCAT) —0
Data Download via SMS-PP (for CCAT) —1 (可以取消)

Call Control for Voice Services —0
3GPD-SIP —1 (可以取消)
3GPD-MIP —0
AKA —0

IP-based Location Service (LCS) —0
BCMCS —0
Multimedia Messaging Service(MMS) —1
Extension 8 —0

MMS User Connectivity Parameters —0
Application Authentication —0
Group Identifier Level 1 —0
Group Identifier Level 2 —-0

De-Presonalization Control Keys —0
Cooperative Network List —0
Outgoing Call Information —1 (可以取消)
Incoming Call Information —1 (可以取消)

Extension 5 —1 (可以取消)
Multimedia Storage —0
Image(EF_Img) —0
Reservred (Enable Service Table) —1 (可以取消)

Reservred (Capability Configuration Parametr) — 0
SF_EUIMID-based EUIMID — 0
Messaging and 3GPD Extensions — 1 (可以取消)
Root Certificated — 0

WAP Browser —1 (可以取消)
Java —1 (可以取消)
Reserved for CDG —1 (可以取消)
Reserved for CDG —1 (可以取消)

IPV6 —0
Call Control for Data Service —0
Call Control for Mobile Originated SMS –0
Card Supported ENVELOPE (USSD Data Download) and ENVELOPER(Call Control) for USSD

softsim在android上实现自启动

<receiver android:name=”im.softs.softsim.receiver.SimStateChangeReceiver”>
<intent-filter>
<action android:name=”android.intent.action.SIM_STATE_CHANGED”/>
</intent-filter>
</receiver>

<receiver android:name=”.SoftSIMControlLaunch”>
<intent-filter android:priority=”100″>
<action android:name=”android.intent.action.BOOT_COMPLETED”/>
</intent-filter>
<intent-filter android:priority=”100″>
<action android:name=”android.intent.action.SIM_STATE_CHANGED”/>
</intent-filter>
</receiver>

EF MAXPRL (Maximum PRL)

EF MAXPRL (Maximum PRL)

第1-2字节  EF PRL 的 MAX_PR_LIST_SIZE
第3-4字节  EF EPRL 的 MAX_PR_LIST_SIZE (可选,如果 EPRL不存在, 此字段也不应该存在)

sim对选择DF/MF/EF的响应

3GPP TS 11.11 version 8.14.0 Release 1999 / ETSI TS 100 977 V8.14.0 (2007-06)
第41页  Response parameters/data in case of an MF or DF

类似于 USIM卡中 Tag为0x62 的 FCP(File control parameters)

1-2     RFU 保留将来使用
3-4     在所选择的目录下的空闲空间大小
5-6     文件ID
7       文件类型:01=MF,02=DF
8-12      RFU
13       可选项目(从14字节开始到结束)的长度
14       文件特性: 
          b1  b3  b4
           1   0   0   允许时钟停止, 无优先电平
           1   1   0   允许时钟停止, 高电平优先
           1   0   1   允许时钟停止, 低电平优先
           0   0   0   不允许时钟停止
           
        对于鉴权等耗时指令,  时钟是必须的,  b2=0, 时钟至少是 13/8 MHz,  b2=1时,至少 13/4 MHz

         b8 表示CHV是否启用

15       当前目录的DF个数(直接DF,不含二级DF)
16       当前目录的EF个数
17       密码个数(CHV, Unblock CHV, ADM等)
18       RFU
19       CHV1状态
20       Unblock CHV1状态
21       CHV2状态
22       Unlock CHV2状态
23       RFU
24-34    保留给管理目的

一般的sim卡 selec会回 9F17, 也就是响应长度为 23个字节

A0A40000027F20   
9F17

但是 MediaTek的基带 认为 这个响应内容 应该只有 0x16 (22)个字节

因为规范中明确说了:

Bytes 1 – 22 are mandatory and shall be returned by the SIM. Bytes 23 and following are optional and may not be
returned by the SIM.

前面22个字节是必须有SIM卡返回的.
23之后的是可选的.

EF的响应 (Response parameters/data in case of an EF)

1-2    RFU
3-4    文件大小(对于透明文件:没得说,就是整个大小,对于记录文件,也是整个大小:记录长度*记录数)
5-6    文件ID
7      文件类型: 04=EF
8      RFU
9     访问权限(0=ALW, 1=CHV1, 2=CHV2, 3=RFU, 4=ADM … E=ADM, F=NEVER): 高半字节为READ,SEEK权限, 低半字节为UPDATE权限
10     访问权限, 高半字节为INCREASE, 低半字节保留
11     高半字节为REHABILITATE, 低半字节为 INVALIDATE
12     文件状态: 01 有效
13     接下来的字段长度
14     文件结构: 00 =透明 01= 线性固定 02= RFU 03= 循环
15     记录长度 (如果为记录文件,单个记录的大小), 非记录文件,这个值为0

Bytes 1-14 are mandatory and shall be returned by the SIM.
前14个字节是所有文件都必须的
如果是记录文件, 那么第15个字节也必须有

实例:
DF_GSM:
0000 RFU
0000 剩余空间大小
7F20
02     类型:DF
0000000000 RFU
09
93 sim特性
00 子DF个数
18 子EF个数
06 密码个数
00   RFU
83
8A
83
8A
—————————
MF:
0000
0000
3F00
01
0000000000
09
93
04 子DF个数
08  子EF个数
06  密码个数
00
83
8A
83
8A
—————————

usim卡手机接入2G网络

或者usim卡使用2G手机接入3G网络

从 XRES (3G USIM response) 生成 SRES (2G handset response)

参考 3GPP TS 33.102 version 14.1.0 Release 14 , 也就是ETSI TS 133 102 V14.1.0 (2017-03)

Interoperation and handover between UMTS and GSM

RAND [GSM] = RAND
SRES [GSM] = XRES* 1 xor XRES* 2 xor XRES* 3 xor XRES* 4
Kc [GSM] = CK 1 xor CK 2 xor IK 1 xor IK 2

改成Java版本

    public static byte[] genKc(byte[] ck, byte[]ik) {
        byte[] kc = new byte[8];
        for(int i=0; i<8; i++) {
            kc[i] = (byte)(ck[i] ^ ck[i+8] ^ ik[i] ^ ik[i+8]);
        }
        return kc;
    }


    public static byte[] genSRES(byte[] xres) {
        byte[] sres = new byte[4];
        byte[] pad = new byte[] {0, 0, 0, 0,  0, 0, 0, 0};
        for(int i=0; i<4; i++) {
            sres[i] = (byte)(xres[i] ^ xres[i+4] ^ pad[i] ^ pad[i+4]);
        }
        return sres;
    }

Python版本

# Kc (2G handset ciphering key) from CK / IK (3G USIM keys)
def conv_C3(CK=16*'\x00', IK=16*'\x00'):
    if len(CK) != 16 or len(IK) != 16:
        _log('Your CK / IK are not the right length [16]')
        return
    return xor_string(xor_string(xor_string(CK[0:8], CK[8:16]), \
                                  IK[0:8]), \
                       IK[8:16])


def conv_C2(XRES=16*b'\x00'):
    # adapt XRES length
    len_xres = len(XRES)
    if len_xres < 4:
        _log('Your XRES is damned too short [<4]')
        return
    elif 4 <= len_xres < 16:
        XRES += (16-len_xres)*b'\x00'
    elif len_xres > 16:
        XRES = XRES[:16]
    # xor the 4 parts of 4 bytes each
    #sres[i] = res[i] ^ res[i + 4] 
    return xor_string(xor_string(xor_string(XRES[:4], XRES[4:8]), 
                                        XRES[8:12]),
                        XRES[12:16])

sim卡相关在线分析工具

APDU分析
https://www.javacardos.com/tools/apdu-parser.html

ATR分析与合成
https://www.javacardos.com/tools/atr.html

Java Card Development Kit
https://javacardos.com/download/developmentkit/jckit.zip

JCKit_JAVACOS_Beta_2.0.6.2
http://javacardos.com/download/developmentkit/JCKit_JAVACOS_Beta_2.0.6.2.zip

HPLMN selector with Access Technology

EF_HPLMNwAcT (HPLMN selector with Access Technology)
文件标识符 ‘6F62′
短文件标识符 SFI: ’13’
文件大小: 5n (n ≥ 1)

编码规则 同 EF_PLMNwAcT (User controlled PLMN selector with Access Technology)

中国联通

64F010400064F090400064F010800064F0908000FFFFFF0000FFFFFF0000FFFFFF0000FFFFFF0000

中国移动
64F000400064F000800064F0000080

中国电信
FFFFFFFFFFFFFFFFFFFF

分析:
64F000 4000 中国移动 E-UTRAN 在WB-S1模式和NB-S1模式
64F000 8000 E-UTRAN not selected, 且选择了 UTRAN
64F000 0080 (0000 0000/1000 0000) GSM and EC-GSM-IoT

64F010 4000
64F090 4000
64F010 8000
64F090 8000
FFFFFF 0000
FFFFFF 0000
FFFFFF 0000
FFFFFF 0000

                  E-UTRAN  UTRAN cdma2k1xRTT cdma2kHRPD gsmCompact gsm
64F000 4000         v
64F000 8000                  v
64F000 0080                                                         v

Equivalent HPLMN

EF_EHPLMN (Equivalent HPLMN)
文件标识符: 6FD9
短文件标识符: 1D
文件大小: 3n (n>=1)

等效归属PLMN

当中国移动的IMSI为46000开头的用户, 注册到 460 02 的网络时, 如果没有设置 等效归属PLMN, 就会显示漫游状态

中国电信 64F01164F030FFFFFFFFFFFF ( 等效网络为 460 11 和 460 03)
中国移动 64F00064F07064F02064F080 ( 等效网络为 460 00 , 460 07, 460 02, 460 08)
中国联通 64F010FFFFFFFFFFFFFFFFFF ( 等效网络为 460 01)
其实联通还有一个 物联网网号为 460 06

EF_LI和EF_PL

EF_PL (3F00/2F05) Preferred languages
中国移动 FFFFFFFFFFFFFFFF
中国联通 FFFFFFFF
中国电信 FFFFFFFF

EF_LI (7FF0/6F05 或 7F20/6F05)
中国移动 FFFFFFFFFFFFFFFF
中国联通 7A68656E
中国电信 FFFFFFFFFFFFFFFF

PL和 LI编码标准 遵循 ISO 639 (1988): “Code for the representation of names of languages”.

中国联通的编码是 “zhen” 也就是中文和英文

USIM初始化全过程

UICC激活后, ME选择一个USIM应用.
如果不存在 EF_DIR文件, 或者 EF_DIR中没有USIM应用, 那么ME应该尝试去选择GSM应用(卡可能会被reset)

1) ME请求一个 紧急呼叫代码(ECC, emergency call codes) 参阅 TS 22.101
2) ME请求 语言提示(Language Indication).
优先选择的语言选择, 应该总是使用EF_LI, 而不是 MF下的EF_PL, 除非以下情况
1>> 如果EF_LI的最高优先级位置的值是 ‘FFFF’. 那么首选语言选择, 应该是 MF目录下的EF_PL文件 (按照 TS 31.101中的定义的过程)
2>> ME不支持EF_LI中指明的语言编码, 或者 EF_LI不存在.
3>> 如果EF_LI和EF_PL中的语言都不被ME支持, 那么终端应该使用它自己内部的默认选择.
3) ME执行用户验证过程. 如果验证失败, USIM初始化过程停止.
4) ME执行 管理信息 请求 (也就是读取EF_AD)
5) ME 执行 USIm Service Table请求
6) ME 执行 Enabled Service Table 请求
7) 在FDN启用的情况下, 不支持FDN的ME应该允许紧急呼叫, 而不应该允许MO呼叫和MO-SMS
8) 在BDN启用的情况下, 不支持呼叫控制(Call Control)的ME应该允许紧急呼叫, 而不允许MO呼叫
9) 如果ACL启用, 不支持ACL的ME不应该发送任何APN到网络
10) 上面所有过程成功执行完毕, 那么一个3G会话应该开始. 否在, 3G会话不应该开始
11) 如果ME和USIM支持相关的服务, ME应该执行如下过程:
1>> IMSI请求
2>> Access control information请求 (EF_ACC Access Control Class 本文件必须存在)
3>> Higher Priority PLMN search period请求 (EF_HPPLMN Higher Priority PLMN search period 本文件必须存在)
4>> EHPLMN
5>> HPLMN selector with Access Technology
6>> User controlled PLMN selector with Access Technology
7>> Operator controlled PLMN selector with Access Technology
8>> GSM initialisation
9>> Location Information request for CS-and/or PS-mode and/or EPS
10>> Cipher key and integrity key request for CS- and/or PS-mode
11>> EPS NAS Security Context request for EPS
12>> Forbidden PLMN
13>> Initialisation value for hyperframe number
14>> Maximum value of START
15>> CBMID
16>> 依赖于usim和me支持的服务, 更多的EF会被读取
在USIM初始化成功完成后, ME准备好了3G会话, 应该发出一个特殊的STATUS命令给usim, 告诉它这个事

——————

GSM相关的初始化过程

如果GSM接入启用, 如果可用的服务启用, ME也支持GSM复合接入技术, 那么下面的过程也会执行
1) Investigation Scan
2) CPBCCH信息