SIM之APDU指令格式

 sim与ME之间通过APDU进行交互。

APDU包括命令APDU跟相应APDU,其中命令APDU格式为CLA+INS+P1+P2+P3+DATA,响应APDU格式为Data+SW1+SW2,当由ME从SIM读取数据时则STPlayer使用READ,往上写数据则使用WRITE模式。每个命令格式及APDU的格式我已经都写过一遍了,这里就不多做介绍 ,主要介绍为什么这么写跟返回值如何判断。

 

MF或DF下的相应参数/数据:1-2:RFU,3-4:MF/DF下的剩余未分配空间,5-6文件识别,7:文件类型,8-12:RFU,13:可选字段的长度,14-34:GSM特定数据

                                                   GSM特定数据  14:文件类型,15:当前目录下的直接的DF数目,16:当前目录下的直接的EF数目,17:(CHV+PUK+ADM)目,                     18:              RFU,19:CHV1状态(位1为几个VERIFY CHV1尝试正保留着),20:Unblock CHV1状态(位1为几个UNBLOCK CHV1尝试正保留着),21:CHV2状态,22:Unblock CHV2状态,23:FRU,24-34:管理字段,往后为RFU

EF情况下的响应数据/参数:1-2:RFU,3-4:文件大小,5-6:文件识别,7:文件类型,8:RFU,9-11:GSM存取权限,12:文件状态,13:可选字段的长度,14:文件类型,15:记录长度,16以后是RFU

EF文件分类:00:transparent EF(文件头+字节序列),01:Linear fixed EF(文件头+一竖下来的记录) 03:cyclic EF(文件头+一竖下来的记录,最后一条记录有一指针链接,对于更新操作只能用PREVIOUS方式)

文件类型:00:RFU 01:MF,02 :DF,04:EF

状态字:正确执行  90 00:命令正常结束  9F XX:长度为XX的相应数据

                 参考管理  94 00 :没有EF被选择   94 02:超出范围  94 04:文件ID没有发现,或者特征字串没有发现 94 08:文件与命令不一致

                 安全管理  98 02 :CHV没有初始化  98 04:不满足存取条件或CHV校验不成功,至少还有一次剩余尝试或UNBLOCK CHV校验不成功,至少还有一次剩余尝试或鉴权失败(连续三次CHV或十次UNBLOCK)   98 08:与CHV状态矛盾  98 10:与文件无效的状态矛盾  98 40:CHV校验不成功,无剩余尝试或UNBLOCK CHV校验不成功,无剩余尝试或CHV 锁或UNBLOCK CHV 锁住 98 50:不能执行增加,已达到最大值

                 应用出错 67 XX:错误的参数P3(一般XX为00),6B XX:不正确的参数P1或P2,6D XX :命令中提供不正确的指令代码,6E XX :命令中提供错误的指令类别,6F XX,没有给出诊断的技术问题。

SELECT:只能选择当前,儿子,父亲,亲兄弟四种文件,在STPlayer中选择EF后,接下来的操作失败,则会返回到上一级,须重新选择EF。

STATUS与GET RESPONSE:区别在于STATUS命令不适用与EF,其中P3所需要的len为select响应的参数SW2

READ_BINARY与UPDATE_BINARY:针对transparent EF,offset high和offset low指明偏移的高位跟低位,其中READ的len为GET RESPONSE中的最后一位,即该字节序列的长度,而UPDATE的len为要更新字节序列的长度,即后面跟数据的长度。

READ_RECORD与UPDATE_RECORD:针对Linear fixed EF跟cyclic EF,其中为cyclic EF时,UPDATE只能使用PREVIOUS方式,这里说明模式,02:NEXT RECORD,03:PREVIOUS RECORD,04:ABSOLUTE MODE/CURRENT MODE,其中len为STATUS或GET RESPONSE响应数据的最后一位,而记录号的范围对于Linear fixed EF来说为1到最大记录(响应数据的3、4位(文件大小)除以该len),而对于cyclic要注意的一点是,虽然最后一条的下一条为第一条,当是当你指定到最后一条+1的记录号,然后用当前模式,则会发生 94 02 的错。

SEEK:针对Linear fixed EF跟cyclic EF,包含四种模式,X0(从头往下),X1(从尾往上),X2(从下一个往下),X3(从上一个往上),其中X为1时返回记录号。如操作不成功,则记录指针未改变。其中查询的长度为1到记录长度。

INCREASE:针对cyclic EF,每条记录都加上该命令的数据,里面指定3个字节,我把全部cysclic EF都找了一遍,发现就EFACM跟EFLND两个文件,既然它指定3个字节,我想应该就是针对EFACM设定的了。

VERIFY_CHV/CHANGE_CHV/DISABLE_CHV/ENABLE_CHV/UNBLOCK_CHV:三次校验失败CHV阻塞,十次UNBLOCK失败死锁。

INVALIDATE/REHABILITATE:这个命令前有个要求:仿真器取得安全取款条件,当我根据1117里的步骤写时,它前面选择的是EFLOCI,然而在这个文件下怎么试都不行,后来我把文件换为EFADN就可行了,我想应该是EFLOCI未有安全取款条件,而EFADN有。这个命令还得注意一点是,在执行该命令是,要校验的是CHV2。当执行成功后,GET_RESPONSE的响应数据的字节12位1为0,即为无效文件,此时只有SELECT跟REHABILITATE这两条命令可执行。其中REHABILITATE即为恢复为有效的命令。

RUN_ALGORITHM:此函数需在DFGSM下,后面跟一16字节的随意数据,通过GET RESPONSE返回密钥。

 

 

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值