SIM卡文件结构、常用APDU指令和应答1 SIM 卡文件结构专有名词解析 MF Master File 主文件 EF Elementary File 基本文件 DF Dedicated File 专用文件 ADF Application Dedicated File 应用专用文件 AID Application IDentifier 应用标识符 fcp File Control
大家好,我是讯享网,很高兴认识大家。
1、SIM卡文件结构专有名词解析:
MF(Master File)主文件
EF(Elementary File)基本文件
DF(Dedicated File)专用文件
ADF(Application Dedicated File)应用专用文件
AID(Application IDentifier)应用标识符
fcp(File Control Parameters)文件控制参数
binary二进制内容
record记录
2、文件结构

讯享网
一个MF里面会包含ADF/DF/EF,ADF下面也会包含DF/EF,DF下面又会包含DF/EF,不过EF下面就不会再包含其他文件了。
所以我们可以把MF当做主文件夹,ADF/DF当做次文件夹,EF当做最后一层文件夹;
MF/ADF/DF下面只有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 由一个字节序列组成。简单理解为 只有一条记录 \color{Red}{只有一条记录} 只有一条记录的文件

- 线性固定EF:线性固定 EF 文件由一个记录长度固定的记录序列组成。第一个记录记录号是 1。 简单理解为记录多条记录的文件。
- 循环EF:循环文件用于以时间顺序存储的记录,当所有的记录空间都占用时,新的存储数据将覆盖最旧的信息。 如果线型固定EF的记录是一个数组的话,循环EF的记录就是一个循环链表。
注意:线性固定 E F 和循环 E F 最多只能存放 255 条记录 \color{Red}{注意:线性固定EF和循环EF最多只能存放255条记录} 注意:线性固定EF和循环EF最多只能存放255条记录
根据上面的描述,可以看得出来,要精确的定位到一个EF文件,完整的文件路径应该是:MFID + DFID + EFID。比方说在DF-TELECOM下面的EF-SMS(保存短消息的SIM卡文件,ID为6F3C),完整路径就是“3F007F106F3C”。
下图为SIM卡部分内容结构图:

3、文件操作指令
| 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’,‘89’ |
起动 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卡执行主动式命令的结果 |
补充: \color{Red}{补充:} 补充:
| COMMAND |
值 |
说明 |
| RETRIEVE DATA |
‘CB’ |
|
| SET DATA |
‘DB’ |
|
| GET CHALLENGE |
‘84’ |
|
| TERMINAL CAPABILITY |
‘AA’ |
|
| MANAGE CHANNEL |
‘70’ |
|
| MANAGE SECURE CHANNEL |
‘73’ |
|
| TRANSACT DATA |
‘75’ |
|
4、文件操作应答内容
4.1、正常过程(90xx、91xx、92xx)
| SW1 SW2 |
说明 |
| 9000 |
命令正常完成 |
| 91xx |
命令正常完成,加上来自主动UICC的额外信息,其中包含用于终端的命令。响应数据长度xx |
| 92xx |
命令正常完成,带有关于正在进行的数据传输会话的额外信息 |
4.2、推迟处理(9300)
| SW1 SW2 |
说明 |
| 9300 |
SIM卡应用工具箱忙。命令暂时无法执行,允许执行下一步正常命令 |
4.3、警告(62xx、63xx)
| SW1 SW2 |
说明 |
| 6200 |
没有给出信息,非易失性存储器的状态不变 |
| 6281 |
部分返回的数据可能已损坏 |
| 6282 |
在读取LE字节之前到达文件/记录的结束位置 |
| 6283 |
选择的文件无效 |
| 6285 |
选择的文件处于终止状态 |
| 62F1 |
更多可用数据 |
| 62F2 |
更多可用数据和主动命令等待处理 |
| 62F3 |
响应数据可用 |
| 63F1 |
预计会有更多数据 |
| 63F2 |
更多的数据预期和主动命令等待 |
| 63Cx |
命令成功,但在使用内部更新后重试例程X次;验证失败,x重试(见注释) |
| 注释 |
对于VERIFY PIN命令,SW1 SW2表示命令成功,但PIN不正确,并且还有X重试。对于所有其它命令,它表示卡为完成命令而内部重试次数。 |
4.4、执行错误(6400、6500、6581)
| SW1 SW2 |
说明 |
| 6400 |
没有给出信息,非易失性存储器的状态不变 |
| 6500 |
没有给出信息,非易失性存储器的状态改变 |
| 6581 |
内存问题 |
4.5、检查错误
| SW1 SW2 |
说明 |
| 6700 |
错误的长度 |
| 67xx |
除了SW2=00外,这个状态字的解释与命令有关 |
| 6B00 |
错误参数P1-P2 |
| 6D00 |
指令代码不受支持或无效 |
| 6E00 |
不支持的类 |
| 6F00 |
技术问题,没有精确的诊断 |
| 6FXX |
除了SW2=00外,这个状态字的解释与命令有关 |
4.6、在CLA功能不受支持(68xx)
| SW1 SW2 |
说明 |
| 6800 |
未提供资料 |
| 6881 |
不支持的逻辑通道 |
| 6882 |
不支持安全消息传递 |
4.7、不允许的命令(69xx)
| SW1 SW2 |
说明 |
| 6900 |
未提供资料 |
| 6981 |
命令与文件结构不兼容 |
| 6982 |
不满足安全状态 |
| 6983 |
认证/PIN方法阻塞 |
| 6984 |
提及数据无效 |
| 6985 |
不符合使用条件 |
| 6986 |
命令不允许(没有选择EF) |
| 6989 |
命令不允许-安全通道-安全性不满足 |
4.8、错误参数(6Axx)
| SW1 SW2 |
说明 |
| 6A80 |
数据字段参数不正确 |
| 6A81 |
不支持此功能 |
| 6A82 |
未找到文件 |
| 6A83 |
没有找到记录 |
| 6A84 |
内存空间不足 |
| 6A86 |
P1-P2参数不正确 |
| 6A87 |
Lc与P1到P2不一致 |
| 6A88 |
未找到参考数据 |
4.9、应用程序错误(98xx)
| SW1 SW2 |
说明 |
| 9850 |
无法执行INCREASE,已达到最大值 |
| 9862 |
身份验证错误,特定于应用程序 |
| 9863 |
安全会话或关联过期 |
| 注释 |
应用程序可以定义自己的错误代码 |
补充: \color{Red}{补充:} 补充:
| 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参数不对 |
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/116878.html