apdu 移动sim_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返回密钥。
apdu 移动sim_SIM之APDU指令格式 | 学步园相关推荐
- layui上传图片列表展示_layui怎么做图片在列表中显示 | 学步园
layui table中显示图片的方法: 图片需要用到模板.templet: 注意div不可省略,48px指的是div的高度,如果要决定img图片的高度,需要单独设计style ',style:'he ...
- java调用存储过程sqlserver_Java调用SqlServer存储过程怎么实现 | 学步园
在使用Java开发时,经常会遇到调用SqlServer存储过程的问题.下面学步园小编来讲解下Java调用SqlServer存储过程怎么实现? Java调用SqlServer存储过程怎么实现 1.数据库 ...
- mysql 异常关机后 无法查数据_MySQL数据库非法关机造成数据表损坏怎么排查 | 学步园...
该篇文章我们介绍由于非法硬件关机,造成了MySQL数据库的数据表损坏,数据库不能正常运行的一个实例.下面学步园小编来讲解下MySQL数据库非法关机造成数据表损坏怎么排查? MySQL数据库非法关机造成 ...
- mysql超长sql查询_超长SQL怎么查询?MySQL列长度限制有哪些 | 学步园
MySQL字符串的限制长度看似重要性不要,其实和整个MySQL数据库的安全性是息息相关的,很值得我们去深入研究分析.SQL注入攻击一直都在被广泛的讨论,然而人们却忽略了今天我将要介绍的这两个安全隐患, ...
- netmiko 记录日志_Pythonnetmiko模块的使用 | 学步园
一.简介 此模块用于简化paramiko与网络设备之间的ssh连接,可在windows与Unix平台使用 二.目前支持的设备 (2019.03.07) Regularly tested Arista ...
- python正则去掉重复单词_python使用正则表达式去除中文文本多余空格,保留英文之间空格方法详解 | 学步园...
在pdf转为文本的时候,经常会多出空格,影响数据观感,因此需要去掉文本中多余的空格,而文本中的英文之间的正常空格需要保留,输入输出如下: input:我今天 赚了 10 个亿,老百姓very happ ...
- mysql 枚举字段,MySQL字段中的枚举是什么意思 | 学步园
MySQL字段相信大家都有一些了解,为您介绍的是MySQL字段中的枚举,希望对您学习MySQL字段方面能够有所帮助.下面学步园小编来讲解下MySQL字段中的枚举是什么意思? MySQL字段中的枚举是什 ...
- oracle 的exp是什么,oracle中exp和imp是什么,oracle中exp和imp有何区别 | 学步园
oracle中exp和imp是什么,oracle中exp和imp有何区别.exp和imp的输入都是名字和值对:exp parameter_name=value 或exp parameter_name= ...
- java oval_Java对象校验框架Oval怎么使用 | 学步园
OVal是一个可扩展的Java对象数据验证框架,验证的规则可以通过配置文件.Annotation.POJOs进行设定.可以使用纯Java语言.JavaScript.Groovy.BeanShell等进 ...
- mysql timestamp 默认_MySQL数据库TIMESTAMP怎么设置默认值 | 学步园
MySQL数据库TIMESTAMP设置默认值新手技术人员对他感到很陌生,不知道该怎么设置.下面学步园小编来讲解下MySQL数据库TIMESTAMP怎么设置默认值? MySQL数据库TIMESTAMP怎 ...
最新文章
- 最全技术剖析:百度视觉团队获世界最大规模目标检测竞赛冠军
- Android输入法遮挡了输入框,使用android:fitsSystemWindows=“true“后界面顶部出现白条解决方案
- Java 依赖注入标准(JSR-330)简介
- python笔记基础-python学习笔记之基础一(第一天)
- 【Accelerated C++】重点回顾
- cad2017怎么改变选择方式_CAD编辑对象选择的方法有哪些
- c++实现任意类型数组类的封装
- linux中的文件,文件夹,链接的权限划分
- Dungeon Master(信息学奥赛一本通-T1248)
- Office 2003 主 Interop 程序集的安装和使用
- Java JSP JSTL
- VMWare学习总结(1)——Centos7安装完毕后无法联网的解决方法
- KTable的设置单元格属性
- 试用钉钉内网映射工具
- printf() 输出数据格式汇总
- html网页对账单样式,结算对账单.html
- 技巧分享-电脑版微信如何登录多个账号
- WebAI.js:一个简单的网页前端 AI 模型部署工具
- 镜头焦距与拍摄距离以及拍摄范围的关系
- 两个整数之间的所有素数,素数个数,素数和
热门文章
- 点集求最小包围盒OBB算法
- 电阻式触摸屏和电容式触摸屏区别
- 创意的键盘钢琴音源 Native Instruments Hybrid Keys 1.1.0
- c语言上机ex11答案,全国计算机等级考试C语言南开100题(上机必考).doc
- 《整理的艺术》读后反思,“强迫症患者”的理论依据
- 安装音量控制程序 WINDOWS
- 没有他的帅气,也要像他那般努力!(转载)
- java 工作流开发框架比较
- 手机html己停用怎么办,iphone手机出现已停用请五分钟再试怎么办
- 可视化建站cms_帝国CMS教程 | 01.系统运行环境及简介