APDU命令整理.docx
《APDU命令整理.docx》由会员分享,可在线阅读,更多相关《APDU命令整理.docx(29页珍藏版)》请在冰豆网上搜索。
![APDU命令整理.docx](https://file1.bdocx.com/fileroot1/2023-2/4/b42bb0bb-b1db-4cac-beb5-f0bb1d17f7f3/b42bb0bb-b1db-4cac-beb5-f0bb1d17f7f31.gif)
APDU命令整理
1.APDU命令集
1.1ISO智能卡通用APDU命令集(详细介绍:
ISO7816标准(中文版).pdf中75~100页)
编号
指令名称
CLA
INS
功能描述
1
READBINARY
00/04
B0
读出带有透明结构的EF内容的一部分
2
WRITEBINARY
D0
将二进制值写入EF
3
UPDATEBINARY
00/04
D6
启动使用在命令APDU中给出的位来更新早已呈现在EF
中的位
4
ERASEBINARY
0E
顺序地从给出的偏移开始将EF的内容的一部分置为其
逻辑擦除的状态
5
READRECORD
00/04
B2
给出了EF的规定记录的内容或EF的一个记录开始部分的
内容
6
WRITERECORD
D2
WRITERECORD命令报文启动下列操作之一:
——写一次记录;
——对早已呈现在卡内的记录数据字节与在命令APDU中给出的记录数据字节进行逻辑“或”运算;
——对早已呈现在卡内的记录数据字节与在命令APDU中给出的记录数据字节进行逻辑“和”运算
7
APPENDRECORD
00/04
E2
启动在线性结构EF的结束端添加记录或者在循环结
构的EF内写记录号1
8
UPDATERECORD
00/04
DC
启动使用命令APDU给出的位来更新特定记录
9
GETDATA
CA
可在当前上下文(例如应用特定环境或当前DF)范围内用于检索一个原始数据对象或者包含在结构化数据对象中所包含的一个或多个数据对象
10
PUTDATA
DA
可在当前上下文(例如应用特定环境或当前DF)范围内用于存储一个原始数据对象或者包含在结构化数据对象中的一个或多个数据对象正确的
存储功能(写一次和/或更新和/或添加)通过数据对象的定义和性质来引出
11
SELECTFILE
00
A4
设置当前文件后续命令可以通过那个逻辑信道隐式地引用该当前文件
12
VERIFY
00/04
20
启动从接口设备送入卡内的验证数据与卡内存储的引用数据(例如口令)进行比较
13
INTERNALAUTHENTICATE
00
88
启动卡使用从接口设备发送来的询问数据和在卡内存储的相关秘密(例如密钥)来计算鉴别数据
当该相关秘密被连接到MF时命令可以用来鉴别整个卡
当该相关秘密被连接到另一个DF时命令可以用来鉴别那个DF
14
EXTERNALAUTHENTICATE
00
82
使用卡计算的结果(是或否)有条件地来更新安全状态而该卡的计算是以该卡先前发出(例如通过GETCHALLENGE命令)的询问在卡内存储的可能的秘密密钥以及接口设备发送的鉴别数据为基础的
15
GETCHALLENGE
00
84
要求发出一个询问(例如随机数)以便用于安全相关的
规程(例EXTERNALAUTHENTICATE命令)
16
MANAGECHANNEL
70
打开和关闭逻辑信道
17
GETRESPONSE
00
C0
用于从卡发送至接口设备用可用的协议不能传送的那一
些的APDU(或APDU的一部分)
18
ENVOLOPE
80
C2
用来发送那些不能由有效协议来发送的APDU或APDU的一部分或任何数据串
表6ISO智能卡APDU命令集
命令格式:
1.READBINARY的命令报文:
CLA
00/04
INS
B0
P1-P2
见表下面说明
Lc字段
空
数据字段
空
Le字段
待读的字节数
说明:
如果在P1中b8=1,则P1的b7和b6置为0(RFU若干位)P1的b5至b1是短EF标识
符并且P2是在从文件开始的数据单元中被读的第1个字节的偏移。
如果在P1中b8=0,则P1_P2是在从文件开始的数据单元中被读的第1个字节的
偏移。
如果Le字段仅包含若干“0”则对于短的长度在不超过256的范围内或者对扩充长
度在不超过65536的范围内所有字节(直到文件结束为止)应被读出。
READBINARY的响应报文:
数据字段
读的字节(Le字节)
SW1-SW2
状态字节:
用来说明指令执行是否出错,由于什么原因出错
2.WRITEBINARY命令报文:
CLA
00/04
INS
D0
P1-P2
见表下面说明
Lc字段
后续数据字段的长度
数据字段
待写的数据单元串
Le字段
空
说明:
如果在P1中b8=1,则P1的b7和b6显域0(RFU若干位)P1的b5至b1是短EF标识
符并且P2是在从文件开始的数据单元中被写的第1个字节的偏移。
如果在P1中b8=0,则P1_P2是在从文件开始的数据单元中被写的第1个字节的
偏移。
WRITEBINARY的响应报文:
数据字段
空
SW1-SW2
状态字节:
用来说明指令执行是否出错,由于什么原因出错
3.UPDATABINARY命令报文:
CLA
00/04
INS
D6
P1-P2
见表下面说明
Lc字段
后续数据字段的长度
数据字段
待写的数据单元串
Le字段
空
说明:
如果在P1中b8=1,则P1的b7和b6置为0(RFU若干位),P1的b5至b1是短EF标识
符,并且P2是在从文件开始的数据单元中被更新的第1个字节的偏移。
如果在P1中b8=0,则P1_P2是在从文件开始的数据单元中被更新的第1个字节
的偏移。
UPDATEBINARY的响应报文:
数据字段
空
SW1-SW2
青青的豆角青青的草地青青的瓦状态字节:
用来说明指令执行是否出错,由于什么原因出错
有—无对—错热—冷暖—冷弯—直
4.ERASEBINARY命令报文:
空—满干—湿今—古闲—忙天—地CLA
00/04
INS
美丽的风景精彩的球赛高远的蓝天雪白的肚皮0E
P1-P2
走之底:
这、边、远、进、过、道、选、连、送见表下面说明
Lc字段
空或02
数据字段
见下表说明
Le字段
空
说明:
如果在P1中b8=1,则P1的b7和b6显示0(RFU若干位),P1的b5至b1是短EF标识
(4)、()一边()一边()。
符,并且P2是在从文件开始的数据单元中被写的第1个字节的偏移。
耳朵旁:
阳、那、都如果在P1中b8=0,则P1_P2是在从文件开始的数据单元中被写的第1个字节的
偏移。
如果数据字段呈现,它编码不被擦除的第1个数据单元的偏移,该偏移
应大于在P1—P2中编码的一个偏移,当数据字段为空时,该命令擦除到该文件的结
束端。
ERASEBINARY的响应报文:
数据字段
空
大大的西瓜可爱的小熊快乐的生日SW1-SW2
挺拔的松树茂密的树林会心的微笑透明的翅膀状态字节:
用来说明指令执行是否出错,由于什么原因出错
5.READRECORD命令报文:
CLA
00/04
INS
B2
P1-P2
P1:
记录号或被读的第1个记录的标识符(‘00’表示当前记录);
P2:
引用控制
Lc字段
空
数据字段
空
Le字段
被读字节数
READRECORD的响应报文:
数据字段
Le字节
SW1-SW2
状态字节:
用来说明指令执行是否出错,由于什么原因出错
6.WRITERECORD命令报文:
CLA
00/04
INS
D2
P1-P2
P1=‘00’指明当前记录
P1:
所指定的记录号
Lc字段
后续数据字段的长度
数据字段
待写的记录
Le字段
空
WRITERECORD的响应报文:
数据字段
空
SW1-SW2
状态字节:
用来说明指令执行是否出错,由于什么原因出错
7.APPENDRECORD命令报文:
CLA
00/04
INS
E2
P1-P2
只有P1‘00’是有效的
Lc字段
后续数据字段的长度
数据字段
待添加的记录
Le字段
空
APPENDRECORD的响应报文:
数据字段
空
SW1-SW2
状态字节:
用来说明指令执行是否出错,由于什么原因出错
8.UPDATERECORD命令报文:
CLA
00/04
INS
DC
P1-P2
P1=‘00’指明当前记录
P1:
所指定的记录号
Lc字段
后续数据字段的长度
数据字段
待更新的记录
Le字段
空
UPDATERECORD的响应报文:
数据字段
空
SW1-SW2
状态字节:
用来说明指令执行是否出错,由于什么原因出错
9.GETDATA命令报文:
CLA
00/04
INS
CA
P1-P2
见表1-9
Lc字段
空
数据字段
空
Le字段
在响应时期望的字节数
值
含义
‘0000’至‘003F
RFU(保留供将来使用)
‘0040’至‘00FF’
P2中的BER-TLV标签(1个字节)
‘0100’至‘01FF’
应用数据(专有编码)
‘0200’至‘02FF’
P2中的简单TLV标签
‘0300’至‘3FFF’
RFU(保留供将来使用)
‘0400’至‘FFFF’
P1-P2中的BER-TLV标签(2个字节)
表1-9参数P1-P2的编码
GETDATA的响应报文:
数据字段
Le字节
SW1-SW2
状态字节:
用来说明指令执行是否出错,由于什么原因出错
10.PUTDATA命令报文:
CLA
00/04
INS
DA
P1-P2
见表1-9
Lc字段
后续数据字段的长度
数据字段
待写的参数和数据
Le字段
空
PUTDATA的响应报文:
数据字段
空
SW1-SW2
状态字节:
用来说明指令执行是否出错,由于什么原因出错
11.SELECTFILE命令报文:
CLA
00/04
INS
A4
P1-P2
P1:
选择控制;
P2:
选择选项
Lc字段
空或后续数据字段的长度
数据字段
如果存在下列内容则按照P1-P2
——文件标识符
——MF的路径
——当前DF的路径
——DF名称
Le字段
空或在响应时期望的数据最大长度
SELECTFILE的响应报文:
数据字段
信息按照P2(至多Le个字节)
SW1-SW2
状态字节:
用来说明指令执行是否出错,由于什么原因出错
12.VERIFY命令报文:
CLA
00/04
INS
20
P1-P2
P1:
‘00’(其他值为RFU)
P2:
引用数据的限定符
Lc字段
空或后续数据字段的长度
数据字段
空或验证数据
Le字段
空
VERIFY的响应报文:
数据字段
空
SW1-SW2
状态字节:
用来说明指令执行是否出错,由于什么原因出错
13.INTERNALAUTHENTICATE命令报文:
CLA
00/04
INS
88
P1-P2
P1:
在卡内引用的算法
P2:
引用的秘钥
Lc字段
后续数据字段的长度
数据字段
鉴别相关的数据(例如询问)
Le字段
在响应中期望的字节最大数
INTERNALAUTHENTICATE的响应报文:
数据字段
鉴别相关的数据(例如对询问的响应)
SW1-SW2
状态字节:
用来说明指令执行是否出错,由于什么原因出错
14.EXTERNALAUTHENTICATE命令报文:
CLA
00/04
INS
82
P1-P2
P1:
在卡内引用的算法
P2:
引用的秘钥
Lc字段
空或后续数据字段的长度
数据字段
空或鉴别相关的数据(例如对询问的响应)
Le字段
空
说明:
P1=‘00’表示没有信息被给出,在发出命令之前引用的算法为已知,或在数据
字段中提供。
P2=‘00’表示没有信息被给出,在发出命令之前引用的秘密为已知,或在数据
字段中提供。
EXTERNALAUTHENTICATE的响应报文:
数据字段
空
SW1-SW2
状态字节:
用来说明指令执行是否出错,由于什么原因出错
15.GETCHALLENGE命令报文:
CLA
00/04
INS
84
P1-P2
‘0000’(其他值为RFU)
Lc字段
空
数据字段
空
Le字段
在响应中期望的最大字节数
GETCHALLENGE的响应报文:
数据字段
询问数据
SW1-SW2
状态字节:
用来说明指令执行是否出错,由于什么原因出错
16.MANAGECHANNEL命令报文:
CLA
00/04
INS
70
P1-P2
P1=‘00’打开逻辑信道
P1=‘80’关闭逻辑信道(其他值为RFU)
P2:
‘00’‘01’‘02’‘03’(其他值为RFU)
Lc字段
空
数据字段
空
Le字段
‘01’如果P1-P2=‘0000’;
空,如果P1-P2不等于‘0000’
说明:
P1的位b8用来表示开放功能或关闭功能;如果b8为“0”,则MANAGECHANNEL应打
开逻辑信道,如果b8为“1”,则MANAGECHANNEL应关闭逻辑信道。
MANAGECHANNEL的响应报文:
数据字段
逻辑信道号,如果P1-P2=‘0000’;
空,如果P1-P2不等于‘0000’
SW1-SW2
状态字节:
用来说明指令执行是否出错,由于什么原因出错
17.GETRESPONSE命令报文:
CLA
00/04
INS
C0
P1-P2
‘0000’(其他值为RFU)
Lc字段
空
数据字段
空
Le字段
在响应中期望的数据最大长度
GETRESPONSE的响应报文:
数据字段
按照Le的APDU(的一部分)
SW1-SW2
状态字节:
用来说明指令执行是否出错,由于什么原因出错
18.ENVELOPE命令报文:
CLA
80
INS
C2
P1-P2
‘0000’(其他值为RFU)
Lc字段
后续数据字段的长度
数据字段
APDU(的一部分)
Le字段
空或期望数据的长度
说明:
当对于发送数据串而言根据T=0来使用ENVELOPE命令时,在ENVELOPE命令
ADPU中的空数据字段意味着“数据串的结束”.
ENVELOPE的响应报文:
数据字段
空或按照Le的APDU(的一部分)
SW1-SW2
状态字节:
用来说明指令执行是否出错,由于什么原因出错
1.2GSM11.11定制APDU(详细介绍:
GSM11.11协议—98年11月版第8章第30页至36页)
编号
指令名称
CLA
INS
功能描述
1
SELECT
A0
A4
选择文件
2
STATUS
A0
F2
用来给SIM一个机会发送主动命令给ME
3
READBINARY
A0
B0
从当前的EF中读一个字节字符串
4
UPDATEBINARY
A0
D6
用命令中的字节字符串更新当前EF中的字节字符串
5
READRECORD
A0
B2
从固定长度记录EF或循环EF中读一条完整的记录
6
UPDATERECORD
A0
DC
更新固定长度记录EF或循环EF中读一条完整的记录
7
SEEK
A0
A2
从固定长度记录的EF文件中查找给定的记录
8
INCREASE
A0
32
用来在循环EF中最后一个被写入记录的后面增加一条记录,如果最后被写入记录位于循环EF尾,则更新最后有一条记录
9
VERIFYCHV
A0
20
把从接口设备送入卡内的验证数据与卡内存储的引用数据进行比较
10
CHANGECHV
A0
24
修改卡内存储的验证数据
11
DISABLECHV
A0
26
使验证数据不可读
12
ENABLECHV
A0
28
使验证数据可被读
13
UNBLOCKCHV
A0
2C
解锁由于3次输入错误验证而被锁的验证数据
14
INVALIDATE
A0
04
使当前EF文件无效
15
REHABILITATE
A0
44
恢复无效的EF文件
16
RUNGSMALGORITHM
A0
88
运行SIM卡内置算法
17
SLEEP
A0
FA
在SIMPhase2阶段已被去除
18
GETRESPONSE
A0
C0
用来获得前一条命令的响应数据,GETRESPONSE只允许跟在RUNGSMALGORITHM,SEEK,SELECT和INCREASE命令的后面
19
TERMINALPROFILE
A0
10
ME用来把涉及到SAT的功能传递给SIM卡
20
ENVELOPE
A0
C2
用来传递数据给SIM卡中的SAT应用程序
21
FETCH
A0
12
用来接收SIM卡传给ME的主动命令内容
22
TERMINALRESPONSE
A0
14
把ME执行完主动命令后的信息返回给SIM卡
命令格式:
SELECT
COMMAND
CLASS
INS
P1
P2
P3
SELECT
A0
A4
00
00
02
STATUS
COMMAND
CLASS
INS
P1
P2
P3
STATUS
A0
F2
00
00
lgth
READBINARY
COMMAND
CLASS
INS
P1
P2
P3
READBINARY
A0
B0
Offsethigh
Offsetlow
lgth
UPDATEBINARY
COMMAND
CLASS
INS
P1
P2
P3
UPDATEBINARY
A0
D6
Offsethigh
Offsetlow
lgth
READRECORD
COMMAND
CLASS
INS
P1
P2
P3
READRECORD
A0
B2
Rec.NO.
Mode
lgth
UPDATERECORD
COMMAND
CLASS
INS
P1
P2
P3
UPDATERECORD
A0
DC
Rec.NO.
Mode
lgth
SEEK
COMMAND
CLASS
INS
P1
P2
P3
SEEK
A0
A2
00
Type/Mode
lgth
INCREASE
COMMAND
CLASS
INS
P1
P2
P3
INCREASE
A0
32
00
00
03
VERIFYCHV
COMMAND
CLASS
INS
P1
P2
P3
VERIFYCHV
A0
20
00
CHVNO.
08
CHANGECHV
COMMAND
CLASS
INS
P1
P2
P3
CHANGECHV
A0
24
00
CHVNO.
10
DISABLECHV
COMMAND
CLASS
INS
P1
P2
P3
DISABLECHV
A0
26
00
01
08
ENABLECHV
COMMAND
CLASS
INS
P1
P2
P3
ENABLECHV
A0
28
00
01
08
UNBLOCKCHV
COMMAND
CLASS
INS
P1
P2
P3
UNBLOCKCHV
A0
2C
00
CHVNO.
10
INVALIDATE
COMMAND
CLASS
INS
P1
P2
P3
INVALIDATE
A0
04
00
00
00
REHABILITATE
COMMAND
CLASS
INS
P1
P2
P3
REHABILITATE
A0
44
00
00
00
RUNGSMALGORITHM
COMMAND
CLASS
INS
P1
P2
P3
RUNGSMALGORITHM
A0
88
00
00
10
GETRESPONSE
COMMAND
CLASS
INS
P1
P2
P3
GETRESPONSE
A0
C0
00
00
lgth
TERMINALPROFILE
COMMAND
CLASS
INS
P1
P2
P3
TERMINALPROFILE
A0
10
00
00
lgth
ENVELOPE
COMMAND
CLASS
INS
P1
P2
P3
ENVELOPE
A0
C2
00
00
lgth
FETCH
COMMAND
CLASS
INS
P1
P2
P3
FETCH
A0
12
00
00
lgth
TERMINALRESPONSE
COMMAND
CLASS
INS
P1
P2
P3
TERMINALRESPONSE
A0
14
00
00
lgth
注:
详细格式说明请参考GSM11.11协议—98年11月版第9章第40页至52页.
1.3ETSITS102.221协议—2007年7月版定制APDU
编号
指令名称
CLA
INS
功能描述
1
SELECT
0X/4X/6X
A4
选择文件
2
STATUS
8X/CX/EX
F2
用来给SIM一个机会发送主动命令给ME
3
READBINARY
0X/4X/6X
B0
从当前的EF中读一个字节字符串
4
UPDATEBINARY
0X/4X/6X
D6
用命令中的字节字符串更新当前EF中的字节字符串
5
READRECORD
0X/4X/6X
B2
从固定长度记录EF或循环EF中读一条完整的记录
6
UPDATERECORD
0X/4X/6X
DC
更新固定长度记录EF或循环EF中读一条完整的记录
7
SEARCHRECORD
0X/4X/6X
A2
从