SIM卡文件结构、常用APDU指令和应答

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/EFADF下面也会包含DF/EFDF下面又会包含DF/EF,不过EF下面就不会再包含其他文件了。

所以我们可以把MF当做主文件夹,ADF/DF当做次文件夹,EF当做最后一层文件夹;
MF/ADF/DF下面只有fcpEF下面有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说明
9300SIM卡应用工具箱忙。命令暂时无法执行,允许执行下一步正常命令

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内存空间不足
6A86P1-P2参数不正确
6A87Lc与P1到P2不一致
6A88未找到参考数据

4.9、应用程序错误(98xx)

SW1 SW2说明
9850无法执行INCREASE,已达到最大值
9862身份验证错误,特定于应用程序
9863安全会话或关联过期
注释应用程序可以定义自己的错误代码

补充: \color{Red}{补充:} 补充:

SW1 SW2说明
9000命令正常完成
61XXSW2表示仍然有效的响应字节数
6E00CLA不支持
6D00CLA支持,但INS未编程或无效
6B00CLA INS支持,但P1、P2不正确
6700CLA INS P1 P2支持,但P3不正确
6F00命令不支持且未给出精确诊断
6982不满足安全条件:SIM PUK时,想要读IMSI就会出现
6E00SIM卡却用USIM卡的指令
6A82没有找到文件
6A86P1-P2参数不对
  • 6
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值