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返回密钥。

apdu 移动sim_SIM之APDU指令格式 | 学步园相关推荐

  1. layui上传图片列表展示_layui怎么做图片在列表中显示 | 学步园

    layui table中显示图片的方法: 图片需要用到模板.templet: 注意div不可省略,48px指的是div的高度,如果要决定img图片的高度,需要单独设计style ',style:'he ...

  2. java调用存储过程sqlserver_Java调用SqlServer存储过程怎么实现 | 学步园

    在使用Java开发时,经常会遇到调用SqlServer存储过程的问题.下面学步园小编来讲解下Java调用SqlServer存储过程怎么实现? Java调用SqlServer存储过程怎么实现 1.数据库 ...

  3. mysql 异常关机后 无法查数据_MySQL数据库非法关机造成数据表损坏怎么排查 | 学步园...

    该篇文章我们介绍由于非法硬件关机,造成了MySQL数据库的数据表损坏,数据库不能正常运行的一个实例.下面学步园小编来讲解下MySQL数据库非法关机造成数据表损坏怎么排查? MySQL数据库非法关机造成 ...

  4. mysql超长sql查询_超长SQL怎么查询?MySQL列长度限制有哪些 | 学步园

    MySQL字符串的限制长度看似重要性不要,其实和整个MySQL数据库的安全性是息息相关的,很值得我们去深入研究分析.SQL注入攻击一直都在被广泛的讨论,然而人们却忽略了今天我将要介绍的这两个安全隐患, ...

  5. netmiko 记录日志_Pythonnetmiko模块的使用 | 学步园

    一.简介 此模块用于简化paramiko与网络设备之间的ssh连接,可在windows与Unix平台使用 二.目前支持的设备 (2019.03.07) Regularly tested Arista ...

  6. python正则去掉重复单词_python使用正则表达式去除中文文本多余空格,保留英文之间空格方法详解 | 学步园...

    在pdf转为文本的时候,经常会多出空格,影响数据观感,因此需要去掉文本中多余的空格,而文本中的英文之间的正常空格需要保留,输入输出如下: input:我今天 赚了 10 个亿,老百姓very happ ...

  7. mysql 枚举字段,MySQL字段中的枚举是什么意思 | 学步园

    MySQL字段相信大家都有一些了解,为您介绍的是MySQL字段中的枚举,希望对您学习MySQL字段方面能够有所帮助.下面学步园小编来讲解下MySQL字段中的枚举是什么意思? MySQL字段中的枚举是什 ...

  8. oracle 的exp是什么,oracle中exp和imp是什么,oracle中exp和imp有何区别 | 学步园

    oracle中exp和imp是什么,oracle中exp和imp有何区别.exp和imp的输入都是名字和值对:exp parameter_name=value 或exp parameter_name= ...

  9. java oval_Java对象校验框架Oval怎么使用 | 学步园

    OVal是一个可扩展的Java对象数据验证框架,验证的规则可以通过配置文件.Annotation.POJOs进行设定.可以使用纯Java语言.JavaScript.Groovy.BeanShell等进 ...

  10. mysql timestamp 默认_MySQL数据库TIMESTAMP怎么设置默认值 | 学步园

    MySQL数据库TIMESTAMP设置默认值新手技术人员对他感到很陌生,不知道该怎么设置.下面学步园小编来讲解下MySQL数据库TIMESTAMP怎么设置默认值? MySQL数据库TIMESTAMP怎 ...

最新文章

  1. 最全技术剖析:百度视觉团队获世界最大规模目标检测竞赛冠军
  2. Android输入法遮挡了输入框,使用android:fitsSystemWindows=“true“后界面顶部出现白条解决方案
  3. Java 依赖注入标准(JSR-330)简介
  4. python笔记基础-python学习笔记之基础一(第一天)
  5. 【Accelerated C++】重点回顾
  6. cad2017怎么改变选择方式_CAD编辑对象选择的方法有哪些
  7. c++实现任意类型数组类的封装
  8. linux中的文件,文件夹,链接的权限划分
  9. Dungeon Master(信息学奥赛一本通-T1248)
  10. Office 2003 主 Interop 程序集的安装和使用
  11. Java JSP JSTL
  12. VMWare学习总结(1)——Centos7安装完毕后无法联网的解决方法
  13. KTable的设置单元格属性
  14. 试用钉钉内网映射工具
  15. printf() 输出数据格式汇总
  16. html网页对账单样式,结算对账单.html
  17. 技巧分享-电脑版微信如何登录多个账号
  18. WebAI.js:一个简单的网页前端 AI 模型部署工具
  19. 镜头焦距与拍摄距离以及拍摄范围的关系
  20. 两个整数之间的所有素数,素数个数,素数和

热门文章

  1. 点集求最小包围盒OBB算法
  2. 电阻式触摸屏和电容式触摸屏区别
  3. 创意的键盘钢琴音源 Native Instruments Hybrid Keys 1.1.0
  4. c语言上机ex11答案,全国计算机等级考试C语言南开100题(上机必考).doc
  5. 《整理的艺术》读后反思,“强迫症患者”的理论依据
  6. 安装音量控制程序 WINDOWS
  7. 没有他的帅气,也要像他那般努力!(转载)
  8. java 工作流开发框架比较
  9. 手机html己停用怎么办,iphone手机出现已停用请五分钟再试怎么办
  10. 可视化建站cms_帝国CMS教程 | 01.系统运行环境及简介