SIM卡里面的内容跟我们平常电脑的文件管理系统类似,一个文件夹下面有文件夹也有文件,文件夹下面又有文件夹,一层接一层的嵌套,只不过SIM规范将这些文件进行了名字的定义,如MF/EF/DF/ADF...
如下先将几个专有名词进行解释:
MF(Master File)主文件
EF(Elementary File)基本文件
DF(Dedicated File)专用文件
ADF(Application Dedicated File)应用专用文件
AID(Application IDentifier)应用标识符
fcp(File Control Parameters)文件控制参数
binary二进制内容
record记录
1.文件结构
先看一张图片,如下:
结构图可以看到一个MF里面会包含,EF/DF/ADF,DF下面又会包含DF/EF,ADF下面也会包含DF/EF,不过EF下面就不会再包含其他文件了。
所以我们可以把MF当做主文件夹,DF/ADF当做次文件夹,EF当做最后一层文件夹;
MF/DF/ADF下面只有fcp,EF下面有fcp/binary/record
MF(Master File):主文件,理解为根目录。MF文件的ID为3F00
DF(Dedicated File):专用文件,理解为文件夹。常见的DF有:
- DF-GSM:ID为7F20
- DF-TELECOM:ID为7F10
- ADF:Application DF,ID为7FFF
EF(Elementary File):基本文件,存储数据用的文件。基本文件又分为3类
-
透明EF:透明结构的 EF 由一个字节序列组成。简单理解为只有一条记录的文件
-
线性固定EF:线性固定 EF 文件由一个记录长度固定的记录序列组成。第一个记录记录号是 1。 简单理解为记录多条记录的文件。
-
循环EF:循环文件用于以时间顺序存储的记录,当所有的记录空间都占用时,新的存储数据将覆盖最旧的信息。 如果线型固定EF的记录是一个数组的话,循环EF的记录就是一个循环链表。
注意:线性固定EF和循环EF最多只能存放255条记录
根据上面的描述,可以看得出来,要精确的定位到一个EF文件,完整的文件路径应该是:MFID + DFID + EFID。比方说在DF-TELECOM下面的EF-SMS(保存短消息的SIM卡文件,ID为6F3C),完整路径就是“3F007F106F3C”。
下图为SIM卡部分内容结构图:
USIM-STR2.文件操作指令
COMMAND | 值 | 说明 |
---|---|---|
SELECT | 'A4' | 选择文件 |
STATUS | 'F2' | 查询当前目录的信息 |
READ BINARY | 'B0' | 读取透明EF内容/二进制 |
UPDATE BINARY | 'D6' | 更新透明EF内容/二进制 |
READ RECORD | 'B2' | 读取线性固定EF或者循环EF的记录 |
UPDATE RECORD | 'DC' | 更新线性固定EF或者循环EF的记录 |
SEEK | 'A2' | 查找线性固定EF中与关键字相匹配的记录 |
INCREASE | '32' | 向循环EF中插入最旧的记录 |
VERIFY CHV | '20' | 验证PIN码 |
CHANGE CHV | '24' | 修改PIN码 |
DISABLE CHV | '26' | 关闭PIN码验证 |
ENABLE CHV | '28' | 打开PIN码验证 |
UNBLOCK CHV | '2C' | 解锁 |
INVALIDATE | '04' | 功能使当前 EF 无效 |
REHABILITATE | '44' | 使当前无效的 EF 恢复有效状态 |
RUN GSM ALGORITHM | '88' | 起动 SIM 卡中的 GSM 算法 A3 和 A8 |
SLEEP | 'FA' | 睡眠 命令只被 Phase1 的移动设备支持,对于 Phase2 或者以后的移动设备不会使用该命令。 |
GET RESPONSE | 'C0' | 返回指令的响应数据 |
TERMINAL PROFILE | '10' | 告知SIM卡手机对STK的支持能力,初始化SIM卡的过程中发给SIM卡。 |
ENVELOPE | 'C2' | '手机发送数据或者事件给SIM卡。 |
FETCH | '12' | 手机从SIM卡获取命令 |
TERMINAL RESPONSE | '14' | 手机返回SIM卡执行主动式命令的结果 |
3.文件操作应答内容
SW1 SW2 | 说明 |
---|---|
9000 | 命令正常完成 |
61XX | SW2表示仍然有效的响应字节数 |
6E00 | CLA不支持 |
6D00 | CLA支持,但INS未编程或无效 |
6B00 | CLA INS支持,但P1、P2不正确 |
6700 | CLA INS P1 P2支持,但P3不正确 |
6F00 | 命令不支持且未给出精确诊断 |
6982 | 不满足安全条件:SIM PUK时,想要读IMSI就会出现 |
6E00 | SIM卡却用USIM卡的指令 |
6A82 | 没有找到文件 |
6A86 | P1-P2参数不对 |
网友评论