SIM卡APDU指令

一个APDU可以是一个命令,也可以是命令的响应。

命令APDU的一般格式: CLA     INS     P1      P2      P3          Data

响应APDU的一般格式: Data                                    SW1     SW2

各个字节的意义如下: CLA: 是指令类型,GSM应用为0xA0。

INS:每个命令的指令编码,下面有定义。

P1,P2,P3:指令参数。0xFF是个无效值,P3给出了数据单元的长度。对于传送命令,当SIM    流出数据时,P3=0表示数据的长度为256,而SIM  流入数据时P3=0表  示没有数据。

SW1,SW2:命令结果是否成功的状态。

指令的5种情况

情况1:没有输入/没有输出 CLA     INS     P1 P2 P3(lgth=0x00) SW1=0x90    SW2=0x00

情况2:没有输入/输出长度已知 CLA     INS         P1 P2 P3(长度值lgth)  DATA(长度为lgth)   SW1=0x90     SW2=0x00

情况3:没有输入/输出长度未知 CLA     INS     P1 P2 P3(lgth=0) SW1=0x9F    SW2=lgth1 GET RESPONSE CLA     INS         P1 P2 P3(lgth2)  DATA(长度leth1<=leth2)    SW1=0x90     SW2=0x00

情况4:有输入/没有输出 CLA      INS         P1 P2 P3(lgth) DATA(长度为lgth)   SW1=0x90    SW2=0

情况5:有输入/输出长度未知或已知 CLA     INS         P1 P2 P3(lgth) DATA(长度为lgth)       SW1=0x9F    SW2=lgth1 GET RESPONSE CLA     INS         P1 P2 P3(lgth2)  DATA(长度lgth2<=lgth1)    SW1=0x90    SW2=0x00

11.11中命令集如下:

(1) SELECT 选择一个文件的方法:

ATR(复位)之后,MF将取消被选择,并且成为当前的目录。每个文件必须通过SELECT功能通过下面的规则来选择。

这时,你可以选择MF,也可以选择MF目录下的DF和MF目录下EF,若想要选择某一DF中的EF,必须先选择该DF成为当前目录,再选择DF中的EF。

例:

//SELECT

A0 A4 00 00 02 3F00

9F 17

//SELECT

A0 A4 00 00 02 7F10

9F 17

//SELECT

A0 A4 00 00 02 6F3A

9F 0F

CLA=A0:表示GSM应用 INS=A4:表示SELECT P1P2=0000:表示参数 P3=02:表示输入文件ID的长度 3F00,7F10,6F3A表示选择的文件ID SW1=9F  SW2=17(23)/0F(15)表示命令正确结束,其中SW2表示响应值长度

(2) STATUS

此功能返回与当前文件目录(根目录或应用目录)有关的信息,此操作不会改变当前EF内容;

这条命令可在任何时候使用,以获得与GSM应用有关的信息;

输入:无;

输出:文件标识符,总的可用存储空间,CHV激活/屏蔽,CHV状态和其他的GSM详细数据

例:

//SELECT

A0 A4 00 00 02 7F10

9F 22

//STAUTS

A0 F2 00 00 22

90 00

00005DD07F1002000000000015B10114060085838583000083830000000000000000

CLA=A0:表示GSM应用 INS=F2:表示STATUS P1P2=0000:表示参数 P3=22:表示返回响应值长度(从SELECT的返回值中获取) SW1=90  SW2=00 表示命令正确结束 00005DD07F1002000000000015B10114060085838583000083830000000000000000表示返回的响应值(响应的参数/数据同使用SELECT命令选中MF和DF时的响应数据相同。)

(3) GET RESPONSE

此功能返回与当前文件目录(根目录或应用目录)有关的信息

这条命令可在任何时候使用,以获得与GSM应用有关的信息;

输入:无;

输出:文件标识符,总的可用存储空间,CHV激活/屏蔽,CHV状态和其他的GSM详细数据

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

//SELECT

A0 A4 00 00 02 3F00

9F 17

//SELECT

A0 A4 00 00 02 7F10

9F 17

//SELECT

A0 A4 00 00 02 6F3A

9F0F

//GET RESPONSE

A0 C0 00 00 0F

0000 0AF0 6F3A 04 00 11 FF 44 01 02 01 1C

9000

0000 0AF0 6F3A 04 00 11 FF 44 01 02 01 1C

//--00 00 保留

//--0A F0 占用的空间大小,表示7000字节

//--6F 3A 选中File的ID

//--04 文件类型,见11.11 9.3

//----'00':保留 '01':MF '02':DF '04':EF

//----此文件类型 EF

//--00 见11.11 9.2.1 detail 3

//----对于二进制和记录文件,该字节为保留字节。对于循环文件,除b6(0 based)外所有的bit都是保留的,b6=1表示当前所选择的循环文件可以执行INCREASE命令

//--11 FF 44 访问权限

//--01 文件状态,见11.11 9.3

//----+--+--+--+--+--+--+--+--+

//----|b7|b6|b5|b4|b3|b2|b1|b0|

//----+--+--+--+--+--+--+--+--+

//---- | | | | | | | +-b0=0文件无效, b0=1文件有效

//---- | | | | | | +----RFU

//---- | | | | | | b2=0: 当文件无效时不允许读和写

//---- | | | | | +-------b2=1: 当文件无效时允许读和写

//---- +--+--+--+--+----------RFU

//----本字节表示文件有效,当文件无效时不允许读/写

//--02 后面数据的长度,表示2

//----01 文件结构,见11.11 9.3

//------'00':二进制文件(透明文件) '01':记录文件(线性定长) '03':循环文件

//------此文件结构记录文件

//----1C 记录长度,见11.11 9.2.1 detail 4

(4)READ BINARY

此功能允许SIM卡从当前透明文件中读取字节串;

如果不满足EF文件READ指令的访问准予条件,SIM卡拒绝该功能;

输入:字节串的偏移地址和长度;

输出:字节串;

//SELECT  A0 A4 00 00 02  2F05 9F 0F

//GET RESPONSE A0 C0 00 00 0F 0000 0008 2F05 04 00 01FF55 01 02 0000 90   00

//READ BINARY A0 B0 00 00 08 6573656E66727074 90 00

//READ BINARY A0 B0 00 01 04 73656E66 90 00

CLA=A0:表示GSM应用 INS=B0:表示READ BINARY P1P2=0000:表示高低位偏移 P3=08:表示返回响应值长度(从SELECT的返回值中获取) (当P1P2=0001,P3=04时表示向右偏移1位,返回长度为4的响应值) SW1=90  SW2=00 表示命令正确结束

(5)UPDATE BINARY

此功能用于更新当前透明文件的字节串;

如果不满足EF文件UPDATE指令的访问准予条件,SIM卡拒绝该功能;

输入:字节串的偏移地址和长度;

输出:无;

//SELECT  A0 A4 00 00 02  2F05 9F 0F

//GET RESPONSE A0 C0 00 00 0F 0000 0008 2F05 04 00 01FF55 01 02 0000 90   00

//READ BINARY A0 B0 00 00 08 6573656E66727074 90 00

//UPDATE BINARY A0 D6 00 00 08 0000000000000001 90 00

//READ BINARY A0 B0 00 00 08 0000000000000001 90 00 更新成功!

(6)READ RECORD 此功能用于读取线性固定文件或循环文件的记录; 如果不满足EF文件READ指令的访问准予条件,SIM卡拒绝该功能。若操作失败,记录指针不改变; 读指令定义了4种模式: CURRENT模式(04):读当前的记录,记录指针不变; ABSOLUTE模式(04+记录号):读给定记录号的记录,记录指针不变; NEXT模式(02):功能执行前记录指针加一,然后读取指针指向的记录。 PREVIOUS模式(03):功能执行前记录指针减一,然后读取指针指向的记录。 输入:模式、记录号(ABSOLUTE模式)、记录长度; 输出:记录;

//SELECT A0A4000002 3F00 9F17

//SELECT A0A4000002 7F10 9F17

//SELECT A0A4000002 6F3A 9F0F

//GET RESPONSE A0C000000F 00000AF06F3A040011FF440102011C 9000

//READ RECORD A0B201041C 80aabbccddFFFFFFFFFFFFFFFFFF07812143658709F1FFFFFFFFFFFF 9000

(7)UPDATE RECORD

向线性定长记录的EF文件或循环记录EF文件中写入一条完整的记录;

如果不满足EF文件UPDATE指令的访问准予条件,SIM卡拒绝该功能。若操作失败,记录指针不改变;

//SELECT A0A4000002 3F00 9F17

//SELECT A0A4000002 7F10 9F17

//SELECT A0A4000002 6F3A 9F0F

//GET RESPONSE A0C000000F 00000AF06F3A040011FF440102011E 9000

//UPDATE RECORD A0DC01041E

输入数据: 111110000000000000000000000000000000000000000000000000000000

90 00

APDU= ApplicationProtocol data unit, 是智能卡与智能卡读卡器之间传送的信息单元, (给智能卡发送的命令)指令(ISO 7816-4规范有定义)    CLA   INS  P1  P2 Lc  Data  Le

其中CLA为指令类别;INS为指令码;P1、P2为参数;Lc为Data的长度;Le为希望响应时回答的数据字节数,0表最大可能长度。

00A4040000:发送一个空的选择命令,获取卡和主安全域的信息。00A40400是select选择对应的CLA,INS,P1和P2,后面2位是发送的文件名的长度。此命令使用文件名或应用标示符来选择IC卡内DF(专用文件)或EF(基本文件)。

80此命令创建卡片文件系统,80CA9F7F00:获取CPLC信息。8050XXXXX:  双向认证并建立会话密钥。

非接触CPU卡应该支持以下与应用无关的常用指令命令:

编号

指令

指令类别

指令码

功能描述

APPLICATION UNBLOCK

84

18

应用解锁

APPLICATION BLOCK

84

1E

应用锁定

CARD BLOCK

84

16

卡片锁定

EXTERNAL AUTHENTICATE

00

82

外部认证

GET CHALLENGE

00

84

取随机数

INTERNAL AUTHENTICATE

00

88

内部认证

PIN UNBLOCK

84

24

个人密码解锁

READ  BINARY

00

B0

读二进制文件内容

READ  RECORD

00

B2

读记录文件指定内容

SELECT

00

A4

选择文件

UPDATE  BINARY

00/04

D6

写二进制文件

UPDATE  RECORD

00/04

DC

写记录文件

VERIFY

00

20

验证口令

编号

指令

指令类别

指令码

功能描述

CHANGE/PIN RELOAD

80

5E

重装/修改个人密码

CREDIT FOR LOAD

80

52

圈存

DEBIT FOR PURCHASE/ CASE WITHDRAW/UNLOAD

80

54

消费/取现/圈提

GET BALANCE

80

5C

读余额

GET TRANSCATION PROVE

80

5A

取交易认证

INITIALIZE FOR XXX

80

50

初始化XXX交易

UNBLOCK

80

2C

解锁被锁住的口令

UPDATE OVERDRAW LIMIT

80

58

修改透支限额

apdu 移动sim_SIM卡APDU指令相关推荐

  1. web调用IC卡读卡器开发第六章--CPU卡APDU操作

    CPU卡APDU的web操作 CPU卡介绍 友我科技IC卡读卡器web插件 CPU卡复位 CPU卡APDU操作 操作例程 CPU卡介绍 CPU卡与M1卡不同, 他不是一种逻辑存储卡,一张空白的CPU卡 ...

  2. CPU卡PSAM卡 响应指令错误码

    http://m.blog.csdn.net/xinxinsky/article/details/52315592             PIN 二进制文件:数据以字节为单位进行读写,每次读写的长度 ...

  3. SIM卡APDU指令

    1. 协议格式 一个APDU可以是一个命令,也可以是命令的响应. 命令APDU的一般格式: CLA INS P1 P2 P3 Data 响应APDU的一般格式: Data SW1 SW2 2. 协议各 ...

  4. java apdu读取社保卡_使用javax.smartcardio的用于智能卡的ISO 7816 APDU

    我已经使用 javax.smartcardio 从智能卡读取序列号而不需要太多努力 . 但是现在我被读取了 . 我正在根据ISO 7816指南创建APDU命令,但由于我的十六进制值被转换为错误的字节, ...

  5. 东信社保卡医保卡底层指令通讯协议(支持单片机、Linux、ARM等嵌入式系统使用)

    东信社保卡读卡器医保卡读卡器底层指令通讯协议,本协议适用有底层开发经验的技术人员使用,支持单片机.Linux.ARM等嵌入式系统使用. 支持的产品型号有:东信EST-100身份证社保卡读卡器.东信ES ...

  6. CPU卡PSAM卡 响应指令

    http://m.blog.csdn.net/xinxinsky/article/details/52315592             PIN 二进制文件:数据以字节为单位进行读写,每次读写的长度 ...

  7. 银联IC卡读卡流程详解--读卡器与卡交互指令

    最近因研究了下银联借记/贷记应用卡片规范,发现网上可参考资源较少,于是萌生了写下这篇文字的想法,希望可以帮助到有需要的兄弟姐妹,有描述不清晰或者有错误的地方欢迎指正. 下面进入正题,测试使用的卡是招商 ...

  8. 剑灵力士卡刀ahk_剑灵卡刀指令

    咒术 暗系 #IfWinActive ahk_class LaunchUnrealUWindowsClient XButton1:: loop{ send {4} sleep 1 send {4} s ...

  9. IC卡 PBOC指令

    1.CHANGE PIN (1)CHANGE PIN允许持卡人将当前个人密码修改为新的密码,命令中的个人密码值以明文方式进行传送. (2)PIN值以cn格式存放,不需要整字节填充,最低有效字节的低半字 ...

  10. ic 卡获取帐号apdu指令_非接触IC卡片APDU指令系统介绍..docx

    CPU卡APDU指令介绍 APDU指令格式 根据7816-4规范,从终端发出的命令和卡片响应的信息必须遵从以下4种格式. 情形1: 命令 : CLA INS P1 P2 00 响应 : SW1 SW2 ...

最新文章

  1. 为什么阿里巴巴RPC接口不允许使用枚举类型?
  2. c++异常的层次结构(继承在异常中的应用)
  3. php开启与关闭错误提示
  4. oracle求部门请假类别合计_【大话IT】求oracle sql 写法,找出同类的合计,所有的总计...
  5. 解决toolbar左边空出一部分的问题
  6. Android之提示Cannot call this method while RecyclerView is computing a layout or scrolling
  7. MyBatis嵌套Collection
  8. Java 创建线程的4种方式
  9. HALCON:Variation Model用法解析
  10. VS+VSS代码管理
  11. Cocos2d-x学习:vs2010使用vld检测内存泄露
  12. 丹东dns服务器位置,各省主要DNS服务器对照表
  13. 自动驾驶开源平台整理
  14. push大法破解登录框
  15. lex生成lex.yy.c代码流程解析
  16. 西门子TIA博途仿真器PLCSIM使用教程
  17. html图片的宽度和高度设置,CSS设置img图片的宽度和高度
  18. 安全标准ISO7498-2(Security Architecture)名词定义
  19. 基于云创部署spark
  20. 弘辽科技:淘宝14天降权会恢复吗?多久能恢复正常?

热门文章

  1. zipentry java_zipentry?java实现解压缩?substring?Java用ZIP格式压缩和解压缩文件
  2. 32款 jQuery UI框架开源软件
  3. 第九章 DirectX 输入和声音(下)
  4. C语言的应用之单片机学习
  5. 计算机单元测验2符号化,地理信息系统概论
  6. RFID技术如何管理图书馆
  7. 阿里云Ubuntu系统部署K8s集群
  8. C#编程--ribbon界面介绍
  9. c语言图书馆管理系统(功能非常之多)
  10. 如何查计算机的网络速度,电脑怎么查网速?教你精准测速的方法