APDU命令整理解读

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

APDU命令整理解读
1.APDU命令集
1.1 ISO智能卡通用APDU命令集(详细介绍:ISO 7816标准(中文版).pdf中75~100页)
编号指令名称 CLA INS 功能描述读出带有透明结构1 READ BINARY 00/04 B0
的EF内容的一部分
将二进制值写入EF 2 WRITE BINARY D0
启动使用在命令3 UPDATE BINARY 00/04 D6
APDU中给出的位来更新早已呈现在EF 中的位
顺序地从给出的偏4 ERASE BINARY 0E
移开始将EF的内容的一部分置为其逻辑擦除的状态
给出了EF的规定记5 READ RECORD 00/04 B2
录的内容或EF的一个记录开始部分的内容
WRITE RECORD命令6 WRITE RECORD D2
报文启动下列操作之一:
——写一次记录; ——对早已呈现在卡内的记录数据字节与在命令APDU中给出的记录数据字节进行逻辑“或”运算;
——对早已呈现在卡内的记录数据字节与在命令APDU中给出的记录数据字节进行逻辑“和”运算
启动在线性结构EF7 APPEND RECORD 00/04 E2
的结束端添加记录或者在循环结构的EF内写记录号1
启动使用命令APDU8 UPDATE RECORD 00/04 DC
给出的位来更新特定记录
可在当前上下文(例9 GET DATA CA
如应用特定环境或当前DF)范围内用于检索一个原始数据对象或者包含在结构化数据对象中所包含的一个或多个数据对象可在当前上下文10 PUT DATA DA (例如应用特定环境或当前DF)范围内用于存储一个原始数据对象或者包含在结构化数据对象中的一个或多个数据对象正确的存储功能(写一次和/或更新和/或添加)通过数据对象的定义和性质来引出
设置当前文件后续11 SELECT FILE 00 A4
命令可以通过那个逻辑信道隐式地引用该当前文件
启动从接口设备送 12 VERIFY 00/04 20
入卡内的验证数据与卡内存储的引用数据(例如口令)进行比较
启动卡使用从接口 13 INTERNAL AUTHENTICATE 00 88
设备发送来的询问数据和在卡内存储的相关秘密(例如密钥)来计算鉴别数据当该相关秘密被连
接到MF时命令可以用来鉴别整个卡当该相关秘密被连接到另一个DF时命令可以用来鉴别那个DF
使用卡计算的结果 14 EXTERNAL AUTHENTICATE 00 82
(是或否)有条件地来更新安全状态而该卡的计算是以该卡先前发出(例如通过GETCHALLENGE
命令)的询问在卡内存储的可能的秘密密钥以及接口设备发送的鉴别数据为基础的
要求发出一个询问 15 GET CHALLENGE 00 84
(例如随机数)以便用于安全相关的规程(例EXTERNAL
AUTHENTICATE 命令)
打开和关闭逻辑信 16 MANAGE CHANNEL 70

用于从卡发送至接 17 GET RESPONSE 00 C0
口设备用可用的协议不能传送的那一些的APDU(或APDU的一部分)
用来发送那些不能 18 ENVOLOPE 80 C2
由有效协议来发送的APDU 或APDU的一部分或任何数据串
表6 ISO智能卡APDU命令集
命令格式:
1.READ BINARY的命令报文:
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的范围内所有字节(直到文件结束为止)应被读出。

READ BINARY的响应报文:
数据字段读的字节(Le字节)
SW1-SW2 状态字节:用来说明指令执行是否出错,由于什么原因出错
2.WRITE BINARY命令报文:
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个字节的偏移。

WRITE BINARY的响应报文:
数据字段空
SW1-SW2 状态字节:用来说明指令执行是否出错,由于什么原因出错
3.UPDATA BINARY命令报文:
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个字节的偏移。

UPDATE BINARY的响应报文:
数据字段空
SW1-SW2 状态字节:用来说明指令执行是否出错,由于什么原因出错
4 .ERASE BINARY命令报文:
CLA 00/04
INS 0E
P1-P2 见表下面说明
Lc字段空或02
数据字段见下表说明
Le字段空
说明:
如果在P1中b8=1,则P1的b7和b6显示0(RFU若干位), P1的b5至b1是短EF标识符,并且P2是在从文件开始的数据单元中被写的第1个字节的偏移。

如果在P1中b8=0,则P1_P2是在从文件开始的数据单元中被写的第1个字节的偏移。

如果数据字段呈现,它编码不被擦除的第1个数据单元的偏移,该偏移应大于在P1 —P2中编码的一个偏移,当数据字段为空时,该命令擦除到该文件的结束端。

ERASE BINARY的响应报文:
数据字段空
SW1-SW2 状态字节:用来说明指令执行是否出错,由于什么原因出错
5.READ RECORD命令报文:
CLA 00/04
INS B2
P1-P2 P1: 记录号或被读的第1个记录的标识符(‘00’表示当前记录); P2: 引用控制
Lc字段空
数据字段空
Le字段被读字节数
READ RECORD的响应报文:
数据字段 Le字节
SW1-SW2 状态字节:用来说明指令执行是否出错,由于什么原因出错
6.WRITE RECORD命令报文:
CLA 00/04
INS D2
P1-P2 P1=‘00’指明当前记录
P1:所指定的记录号
Lc字段后续数据字段的长度数据字段待写的记录
Le字段空
WRITE RECORD的响应报文:
数据字段空
SW1-SW2 状态字节:用来说明指令执行是否出错,由于什么原因出错
7.APPEND RECORD命令报文:
CLA 00/04
INS E2
P1-P2 只有P1 ‘00’是有效的
Lc字段后续数据字段的长度数据字段待添加的记录
Le字段空
APPEND RECORD的响应报文:
数据字段空
SW1-SW2 状态字节:用来说明指令执行是否出错,由于什么原因出错8.UPDATE RECORD命令报文:
CLA 00/04
INS DC
P1-P2 P1=‘00’指明当前记录
P1:所指定的记录号
Lc字段后续数据字段的长度数据字段待更新的记录
Le字段空
UPDATE RECORD的响应报文:
数据字段空
SW1-SW2 状态字节:用来说明指令执行是否出错,由于什么原因出错9.GET DATA命令报文:
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的编码
GET DATA的响应报文:
数据字段 Le字节
SW1-SW2 状态字节:用来说明指令执行是否出错,由于什么原因出错10.PUT DATA命令报文:
CLA 00/04
INS DA
P1-P2 见表1-9
Lc字段后续数据字段的长度数据字段待写的参数和数据
Le字段空
PUT DATA的响应报文:
数据字段空
SW1-SW2 状态字节:用来说明指令执行是否出错,由于什么原因出错11.SELECT FILE命令报文:
CLA 00/04
INS A4
P1-P2 P1:选择控制;
P2:选择选项
Lc字段空或后续数据字段的长度数据字段如果存在下列内容则按照P1-P2 ——文件标识符
——MF的路径
——当前DF的路径
——DF名称
Le字段空或在响应时期望的数据最大长度
SELECT FILE的响应报文:
数据字段信息按照P2(至多Le个字节)
SW1-SW2 状态字节:用来说明指令执行是否出错,由于什么原因出错
12.VERIFY命令报文:
CLA 00/04
INS 20
P1-P2 P1:‘00’(其他值为RFU)
P2:引用数据的限定符
Lc字段空或后续数据字段的长度
数据字段空或验证数据
Le字段空
VERIFY的响应报文:
数据字段空
SW1-SW2 状态字节:用来说明指令执行是否出错,由于什么原因出错
13.INTERNAL AUTHENTICATE命令报文:
CLA 00/04
INS 88
P1-P2 P1: 在卡内引用的算法
P2: 引用的秘钥
Lc字段后续数据字段的长度
数据字段鉴别相关的数据(例如询问)
Le字段在响应中期望的字节最大数
INTERNAL AUTHENTICATE的响应报文:
数据字段鉴别相关的数据(例如对询问的响应)
SW1-SW2 状态字节:用来说明指令执行是否出错,由于什么原因出错
14. EXTERNAL AUTHENTICATE命令报文:
CLA 00/04
INS 82
P1-P2 P1: 在卡内引用的算法
P2: 引用的秘钥
Lc字段空或后续数据字段的长度
数据字段空或鉴别相关的数据(例如对询问的响应)
Le字段空
说明:
P1=‘00’表示没有信息被给出,在发出命令之前引用的算法为已知,或在数据字段中提供。

P2=‘00’表示没有信息被给出,在发出命令之前引用的秘密为已知,或在数据字段中提供。

EXTERNAL AUTHENTICATE的响应报文:
数据字段空
SW1-SW2 状态字节:用来说明指令执行是否出错,由于什么原因出错
15.GET CHALLENGE命令报文:
CLA 00/04
INS 84
P1-P2 ‘0000’(其他值为RFU)
Lc字段空
数据字段空
Le字段在响应中期望的最大字节数
GET CHALLENGE的响应报文:
数据字段询问数据
SW1-SW2 状态字节:用来说明指令执行是否出错,由于什么原因出错
16.MANAGE CHANNEL命令报文:
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” ,则MANAGE CHANNEL应打开逻辑信道,如果b8为“1”,则MANAGE CHANNEL应关闭逻辑信道。

MANAGE CHANNEL的响应报文:
数据字段逻辑信道号,如果P1-P2=‘0000’;
空,如果P1-P2不等于‘0000’
SW1-SW2 状态字节:用来说明指令执行是否出错,由于什么原因出错
17.GET RESPONSE命令报文:
CLA 00/04
INS C0
P1-P2 ‘0000’(其他值为RFU)
Lc字段空
数据字段空
Le字段在响应中期望的数据最大长度
GET RESPONSE的响应报文:
数据字段按照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.2 GSM 11.11定制APDU(详细介绍:GSM 11.11协议—98年11月版第8章第30页至36页)
编号指令名称 CLA INS 功能描述 1 SELECT A0 A4 选择文件 2 STATUS A0 F2 用来给SIM一个机会发送
主动命令给ME 3 READ BINARY A0 B0 从当前的EF中读一个字
节字符串 4 UPDATE BINARY A0 D6 用命令中的字节字符串
更新当前EF中的字节字
符串 5 READ RECORD A0 B2 从固定长度记录EF或循
环EF中读一条完整的记
录 6 UPDATE RECORD A0 DC 更新固定长度记录EF或
循环EF中读一条完整的
记录 7 SEEK A0 A2 从固定长度记录的EF文
件中查找给定的记录 8 INCREASE A0 32 用来在循环EF中最后一
个被写入记录的后面增
加一条记录,如果最后被
写入记录位于循环EF尾,
则更新最后有一条记录
把从接口设备送入卡内9 VERIFY CHV A0 20
的验证数据与卡内存储
的引用数据进行比较 10 CHANGE CHV A0 24 修改卡内存储的验证数

11 DISABLE CHV A0 26 使验证数据不可读
12 ENABLE CHV A0 28 使验证数据可被读
13 UNBLOCK CHV A0 2C 解锁由于3次输入错误验
证而被锁的验证数据
14 INVALIDATE A0 04 使当前EF文件无效
15 REHABILITATE A0 44 恢复无效的EF文件
16 RUN GSM ALGORITHM A0 88 运行SIM卡内置算法
17 SLEEP A0 FA 在SIM Phase 2阶段已被
去除
18 GET RESPONSE A0 C0 用来获得前一条命令的
响应数据,GET RESPONSE
只允许跟在RUN GSM
ALGORITHM,SEEK,SELECT
和INCREASE命令的后面
19 TERMINAL PROFILE A0 10 ME用来把涉及到SAT的功能传递给SIM卡
20 ENVELOPE A0 C2 用来传递数据给SIM卡中
的SAT应用程序
21 FETCH A0 12 用来接收SIM卡传给ME的
主动命令内容
22 TERMINAL RESPONSE 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
READ BINARY
COMMAND CLASS INS P1 P2 P3 READ A0 B0 Offset high Offset low lgth BINARY
UPDATE BINARY
COMMAND CLASS INS P1 P2 P3 UPDATE A0 D6 Offset high Offset low lgth BINARY
READ RECORD
COMMAND CLASS INS P1 P2 P3
READ A0 B2 Rec.NO. Mode lgth RECORD
UPDATE RECORD
COMMAND CLASS INS P1 P2 P3 UPDATE A0 DC Rec.NO. Mode lgth RECORD 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
VERIFY CHV
COMMAND CLASS INS P1 P2 P3 VERIFY A0 20 00 CHV NO. 08
CHV
CHANGE CHV
COMMAND CLASS INS P1 P2 P3 CHANGE A0 24 00 CHV NO. 10
CHV
DISABLE CHV
COMMAND CLASS INS P1 P2 P3 DISABLE A0 26 00 01 08
CHV
ENABLE CHV
COMMAND CLASS INS P1 P2 P3 ENABLE A0 28 00 01 08
CHV
UNBLOCK CHV
COMMAND CLASS INS P1 P2 P3 UNBLOCK A0 2C 00 CHV NO. 10
CHV
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
RUN GSM ALGORITHM
COMMAND CLASS INS P1 P2 P3 RUN GSM A0 88 00 00 10 ALGORITHM GET RESPONSE
COMMAND CLASS INS P1 P2 P3
GET A0 C0 00 00 lgth RESPONSE
TERMINAL PROFILE
COMMAND CLASS INS P1 P2 P3 TERMINAL A0 10 00 00 lgth PROFILE 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 TERMINAL RESPONSE
COMMAND CLASS INS P1 P2 P3 TERMINAL A0 14 00 00 lgth RESPONSE
注:详细格式说明请参考GSM 11.11协议—98年11月版第9章第40页至52页.
1.3 ETSI TS 10
2.221协议—2007年7月版定制APDU
编号指令名称 CLA INS 功能描述 1 SELECT 0X/4X/6X A4 选择文件 2 STATUS 8X/CX/EX F2 用来给SIM一个机会
发送主动命令给ME 3 READ BINARY 0X/4X/6X B0 从当前的EF中读一
个字节字符串
4 UPDATE BINARY 0X/4X/6X D6 用命令中的字节字
符串更新当前EF中
的字节字符串 5 READ RECORD 0X/4X/6X B2 从固定长度记录EF
或循环EF中读一条
完整的记录 6 UPDATE RECORD 0X/4X/6X DC 更新固定长度记录
EF或循环EF中读一
条完整的记录 7 SEARCH RECORD 0X/4X/6X A2 从固定长度记录的
EF文件中查找给定
的记录 8 INCREASE 8X/CX/EX 32 用来在循环EF中最
后一个被写入记录
的后面增加一条记
录,如果最后被写入
记录位于循环EF尾,
则更新最后有一条
记录 9 RETRIEVE DATA 8X/CX/EX CB 用来从当前的
BER-TLV结构的EF文
件中获得一个数据
对象 10 SET DATA 8X/CX/EX DB 用来在当前的
BER-TLV结构的EF文
件中创建一个新的
数据对象或替代一
个已经存在的数据
对象或删除一个数
据对象 11 VERIFY PIN 0X/4X/6X 20 验证PIN码 12 CHANGE PIN 0X/4X/6X 24 修改PIN码 13 DISABLE PIN 0X/4X/6X 26 使PIN码不可访问 14 ENABLE PIN 0X/4X/6X 28 使PIN码可被访问
15 UNBLOCK PIN 0X/4X/6X 2C 解锁由于3次输入错
误PIN值而被锁的
PIN码
16 DEACTIVATE FILE 0X/4X/6X 04 使当前EF文件无效
17 ACTIVATE FILE 0X/4X/6X 44 恢复无效的EF文件
使用从接口设备发 18 AUTHENTICATE 0X/4X/6X 88/89
送来的询问数据和
在卡内存储的相关
秘密(例如密钥)来
计算鉴别数据
19 GET CHALLENGE 0X/4X/6X 84 用来产生一个随机

20 TERMINAL CAPABILITY 8X/CX/EX AA 用来告诉SIM关于终
端的功能
21 TERMINAL PROFILE 80 10 ME用来把涉及到SAT
的功能传递给SIM卡
22 ENVELOPE 80 C2 用来传递数据给SIM
卡中的SAT应用程序
23 FETCH 80 12 用来接收SIM卡传给
ME的主动命令内容
24 TERMINAL RESPONSE 80 14 把ME执行完主动命
令后的信息返回给
SIM卡
打开和关闭逻辑信 25 MANAGE CHANNEL 0X/4X/6X 70

用于从卡发送至接 26 GET RESPONSE 0X/4X/6X C0
口设备用可用的协
议不能传送的那一
些的APDU(或APDU
的一部分)
命令格式(下面只列出在GSM 11.11协议的基础上增加或改变的APDU命令): SEARCH RECORD命令就是GSM 11.11中的SEEK命令;
VERIFY PIN命令就是GSM 11.11中的VERIFY CHV命令;
CHANGE PIN命令就是GSM 11.11中的CHANGE CHV命令;
DISABLE PIN命令就是GSM 11.11中的DISABLE CHV命令;
ENABLE PIN命令就是GSM 11.11中的ENABLE CHV命令;
UNBLOCK PIN命令就是GSM 11.11中的UNBLOCK CHV命令;
DEACTIVATE FILE命令就是GSM 11.11中的INVALIDATE命令;
ACTIVATE FILE命令就是GSM 11.11中的REHABILITATE命令;
AUTHENTICATE命令同GSM 11.11中的RUS GSM ALGORITHM命令;
MANAGE CHANNEL命令属于ISO 7816-4标准APDU命令集;
GET CHALLENGE命令属于ISO 7816-4标准APDU命令集;
TERMINAL CAPABILITY的命令报文:
CLA 8X/CX/EX
INS AA
P1-P2 0000
Lc字段接下来数据字段的长度
数据字段命令数据
Le字段
RETRIEVE DATA的命令报文:
CLA 8X/CX/EX INS CB P1-P2 P1=00;
P2:见表3-1. Lc字段后续数据字段的长度数据字段空或数据对象的标签Le字段响应数据的长度
含义 B8 B7 B6 B5 B4 B3 B2 B1
第一个模块 1 0 - - - - - -
接下来一个模块 0 0 - 0 0 0 0 0
转发前一个模块 0 1 - 0 0 0 0 0
保留供将来使用 1 1 - - - - - -
× × × × × 安全报文标识 - - -
当前EF - - - 0 0 0 0 0
任何其他值保留供将来使用
表 3-1 P2编码
SET DATA的命令报文:
CLA 8X/CX/EX INS DB P1-P2 P1:00;
P2:见表3-1 Lc字段后续数据字段的长度数据字段 BER-TLV数据对象或删除时的标签字段 Le字段
书中横卧着整个过去的灵魂——卡莱尔
人的影响短暂而微弱,书的影响则广泛而深远——普希金
人离开了书,如同离开空气一样不能生活——科洛廖夫
书不仅是生活,而且是现在、过去和未来文化生活的源泉——库法耶夫
书籍把我们引入最美好的社会,使我们认识各个时代的伟大智者———史美尔斯
书籍便是这种改造灵魂的工具。

人类所需要的,是富有启发性的养料。

而阅读,则正是这种养料———雨果。

相关文档
最新文档