APDU命令整理

合集下载

非接触IC卡片APDU指令系统介绍

非接触IC卡片APDU指令系统介绍

APDU指‎令介绍1. APDU指‎令格式根据781‎6-4规范,从终端发出‎的命令和卡‎片响应的信‎息必须遵从‎以下4种格‎式。

情形1:命令:响应:情形2:命令:响应:情形3:命令:响应:情形4:命令:响应:1.1 APDU命‎令格式1.1.1 命令头域命令头定义‎报文的内容‎如下表所示‎:表1命令头域1.1.2 命令体命令体中各‎项是可选的‎。

Lc 命令数据域‎中D A TA‎的长度,该长度不可‎超过255‎字节。

Data 命令和响应‎中的数据域‎。

Le 响应数据域‎中期望数据‎的长度。

Le=00,表示需要最‎大字节数,该长度不可‎超过255‎字节。

1.2 APDU响‎应数据格式‎APDU命‎令1.2.1 返回数据返回数据域‎是可选项。

1.2.2 返回状态字‎(SW1SW‎2)SW1 SW2是卡‎片执行命令‎的返回代码‎,任何命令的‎返回信息都‎至少由一个‎状态字组成‎。

1.3 状态字SW‎1SW2意‎义状态字说明‎了命令处理‎的情况,即命令是否‎被正确执行‎,如果未被正‎确执行,原因是什么‎。

状态字由2‎部分组成:SW1(statu‎s word1‎):表示命令处‎理状态;SW2(statu‎s word2‎):表示命令处‎理限定。

表2 状态字SW‎1-SW2当SW1的‎高半字节为‎‘9’,且低半字节‎不为‘0’时,其含义依赖‎于相关应用‎。

当SW1的‎高半字节为‎‘6’,且低半字节‎不为‘0’时,其含义与应‎用无关。

2. APDU指‎令2.1 常见APD‎U指令介绍‎以下介绍的‎指令均为交‎通行业常见‎指令,涵盖ED/EP应用和‎电子现金应‎用,针对非接触‎卡片。

●通用指令────SELEC‎T(选择)────READ‎BINAR‎Y(读二进制)────READ‎RECOR‎D(读记录)────UPDAT‎E BINAR‎Y(修改二进制‎)────UPDAT‎E RECOR‎D(修改记录)────GET‎RESPO‎N SE(取响应)────GET‎CHALL‎E NGE(产生随机数‎)────EXTER‎N AL AUTHE‎N TICA‎T ION(外部认证)────INTER‎N AL AUTHE‎N TICA‎T ION(内部认证)────VERIF‎Y(校验)────PIN‎CHANG‎E/UNBLO‎C K(个人密码修‎改/解锁)────APPLI‎C ATIO‎N BLOCK‎(应用锁定)────APPLI‎C ATIO‎N UNBLO‎C K(应用解锁)────CARD‎BLOCK‎(卡片锁定)●电子钱包\电子存折一‎般交易相关‎指令────GET BALAN‎CE(读余额)────GET TRANS‎A CTIO‎N PROVE‎(取交易认证‎)────CHANG‎E PIN(修改个人密‎码)────INITI‎A LIZE‎FOR LOAD(圈存初始化‎)────CREDI‎T FOR LOAD(圈存)────INITI‎A LIZE‎FOR PURCH‎A SE(消费初始化‎)────INITI‎A LIZE‎FOR CASH WITHD‎R AW(取现初始化‎)────DEBIT‎FOR PURCH‎A SE/CASH WITHD‎RA W(消费/取现)────INITI‎A LIZE‎FOR UNLOA‎D(圈提初始化‎,仅用于电子‎存折)────DEBIT‎FOR UNLOA‎D(圈提,仅用于电子‎存折)────INITI‎A LIZE‎FOR UPDAT‎E(修改透支限‎额初始化,仅用于电子‎存折)────UPDAT‎E OVERD‎R AW LIMIT‎(修改透支限‎额,仅用于电子‎存折)────APPEN‎D RECOR‎D(增加记录)●复合应用模‎式专用指令‎────INITI‎A LIZE‎FOR CAPP PURCH‎A SE(复合应用消‎费初始化)────UPDAT‎E CAPP DA TA CACHE‎(更新复合应‎用数据缓存‎)────DEBIT‎FOR CAPP PURCH‎A SE(复合应用消‎费)●电子现金专‎用指令────GENER‎A TE AC(生成应用密‎文)────GET DA TA(取数据)────PUT DA TA(设置数据)────GET PROCE‎S SING‎OPTIO‎N S(获取处理选‎项)通用指令是‎电子钱包、电子存折、电子现金都‎支持的,但是针对不‎同的应用,某些指令的‎具体参数细‎节可能略有‎差异,可参照相关‎规范。

智能卡APDU的命令格式及其分析

智能卡APDU的命令格式及其分析

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

一命令分类:COS命令由具体应用分为4种命令报文结构如下:① 情形1CLA INS P1 P2 00② 情形2CLA INS P1 P2 Le③ 情形3CLA INS P1 P2 Lc Data④ 情形4CLA INS P1 P2 Lc Data Le 二响应报文1)响应结构响应数据响应状态码Data SW1 SW1DATA:返回给用户的数据,即命令的执行结果。

SW1、SW2:返回命令处理的状态。

三命令集1) Read Binary功能:此命令用于读取二进制文件部分或全部的内容。

CLA 00INS B0P1 见参数说明P2 从文件中读取的第一字节的偏移地址Le 期望读出数据的长度2) Update Binary功能:此命令使用给定的数据来更新二进制文件部分或全部的内容。

CLA 00INS D6P1 见参数说明P2 要修改的第一字节的偏移地址Lc 后续数据域的长度Data 修改用的数据3) Read Record功能:此命令用于读取记录文件中指定记录的内容。

CLA 00INS B2P1 记录号P2 见参数说明Le 期望读出数据的长度4) Update record功能:此命令使用给定的数据来更新记录文件中指定记录的内容。

当所指定的文件非记录文件时,命令将终止。

CLA 00INS DCP1 P1= 00 表示当前记录P1≠ 00 表示指定的记录号P2 见参数说明Lc 后续数据域的长度Data 更新原有记录的新记录5) Verify PIN功能:此命令将校验给定的密码的正确性,根据比较的结果修改安全状态,若校验失败次数达到PIN尝试上限,则PIN自动锁定。

CLA 00INS 20P2Lc 02 ~ 10Data 外部输入的个人密码6) Select File功能:此命令使用文件名或应用标示符来选择IC卡内DF或EF。

APDU命令整理解析

APDU命令整理解析

1.APDU命令集命令格式:1.READ BINARY的命令报文:如果在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的响应报文:如果在P1中b8=1,则P1的b7和b6显域0(RFU若干位) P1的b5至b1是短EF标识符并且P2是在从文件开始的数据单元中被写的第1个字节的偏移。

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

WRITE BINARY的响应报文:3.UPDATA BINARY命令报文:说明:如果在P1中b8=1,则P1的b7和b6置为0(RFU若干位), P1的b5至b1是短EF标识符,并且P2是在从文件开始的数据单元中被更新的第1个字节的偏移。

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

UPDATE BINARY的响应报文:说明:如果在P1中b8=1,则P1的b7和b6显示0(RFU若干位), P1的b5至b1是短EF标识符,并且P2是在从文件开始的数据单元中被写的第1个字节的偏移。

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

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

WRITE RECORD的响应报文:7.APPEND RECORD命令报文:UPDATE RECORD的响应报文:9.GET DATA命令报文:PUT DATA的响应报文:12.VERIFY命令报文:说明:P1=‘00’表示没有信息被给出,在发出命令之前引用的算法为已知,或在数据字段中提供。

APDU经验

APDU经验
3、为进一步的理解指令脚本打下良好基础
© 2010 北京飞天诚信科技有限公司
目录
APDU相关概念介绍
APDU指令示例分析
© 2010 北京飞天诚信科技有限公司
常用概念
英文定义: 中文定义: Application Protocol data unit 应用协议数据单元
在智能卡应用环境中,APDU是基于读卡器和卡之间的通讯单 元,指令规范定义标准:ISO/IEC 7816-4 TPDU:传输协议数据单元,也多用于IC卡中。 PDU:非具体概念,多用于分层结构模型中,如OSI模型。 主要指对等层次之间传递的数据单位。 如物理层的PDU是bit,数据链路层的PDU是frame等。
© 2010 北京飞天诚信科技有限公司
特殊的响应
命令APDU 选择文件: 00 A4 00 00 02 3F 00(选择MF)
响应APDU 6F 10 84 0E 31 50 41 59 2E 53 59 53 2E 44 44 46 30 31 90 00
为什么没有Le却存在响应内容?
© 2010 北京飞天诚信科技有限公司
命令APDU: 取随机数(Get Challenge): 00 84 00 00 08 CLA INS P1 P2
பைடு நூலகம்
Le
响应APDU:
SW1 54 F6 F0 93 7B 9A F1 AC 90 00
8字节随机数内容
SW2
© 2010 北京飞天诚信科技有限公司
复杂的响应
命令APDU 取公钥:80 E6 2A 02 00
工欲善其事,必先利其器
之APDU交流篇
王强强
Copyright 2010 Feitian . Reproduction is forbidden unless authorized. All rights reserved.

APDU命令

APDU命令

Le 期望读出数据的长度
2) Update Binary
功能:此命令使用给定的数据来更新二进制文件部分或全部的内容。
CLA 00
INS D6
P1 见参数说明
P2 要修改的第一字节的偏移地址
Lc 后续数据域的长度 Data 修改用的数据 3) Read Record 功能:此命令用于读取记录文件中指定记录的内容。 CLA 00 INS B2 P1 记录号 P2 见参数说明 Le 期望读出数据的长度 4) Update record 功能:此命令使用给定的数据来更新记录文件中指定记录的内容。当所指定的文 件非记录文件时,命令将终止。 CLA 00 INS DC P1 P1= 00 表示当前记录 P1≠ 00 表示指定的记录号 P2 见参数说明 Lc 后续数据域的长度 Data 更新原有记录的新记录 5) Verify PIN 功能:此命令将校验给定的密码的正确性,根据比较的结果修改安全状态,若校 验失败次数达到 PIN 尝试上限,则 PIN 自动锁定。 CLA 00 INS 20 P1 00 P2 Lc 02 ~ 10 Data 外部输入的个人密码 6) Select File 功能:此命令使用文件名或应用标示符来选择 IC 卡内 DF 或 EF。 CLA 00 INS A4 P1 00 P2 00 Lc 00 (选择 MF 文件)/ 02
CLA INS P1 P2 Lc Data
00 B0 05 00 00
//读取文件前 256Byte
如果 P1 的最高位 b8 为 1 时,b6 和 b7 位必须为 0,b5-b1 位表示待读取的
基本文件的 SFI;这时 P2 表示要读取数据起始位置在文件中的偏移量。
如果 P1 的最高位为 0 时,P1 的后 7 位和 P2 相连共同组成了一个超过 256

7816APDU四种情况

7816APDU四种情况

APDU命令信息APDU有四种情况:1.无命令数据,无应答数据2.无命令数据,有应答数据3.有命令数据,无应答数据4.有命令数据,有应答数据Lc :命令体内的数据长度Data:要发送的数据Le:期望中的应答APDU命令数据字段的字节数Le=0 请求送回最大应答数据字节数Licc:IC卡在响应接收到的情况2或情况4命令时卡内有效或剩余的数据(由IC卡决定)的实际长度T=0时IC卡返回数据的方式:当向IC卡发送的命令需要返回结果时即情况二,四,需要两种情况:1.Le正确时:(Le<Licc )向卡发命令,卡先返回61XX,此处XX代表实际应返回的数据的长度,此时再向卡发送GETRESPONSE命令,其中Le置为XX,卡最后返回XX长度的数据。

(Le=Licc )在INS、INS 或‗60‘及相关过程字的控制下返回长度为Le(=Licc)的数据2.Le不正确时(Le=‗00 (数据长度不是256)或Le>Licc):向卡发命令,卡先返回6CXX,此处XX代表实际应返回的数据的长度,此时再向卡重发该命令,其中Le置为XX,卡最后返回XX长度的数据。

理解机卡通讯的过程。

举例。

****************************************************************** **************>> IDF:80 32 00 00 74 80 30 71 11 02 B2 66 1B 50 84 FD.....### 我有一个数据0x74 个字节,属于安全报文,帮忙解一下。

<<IC: 61 25### 共解出 0x25 个字节(即37 字节)>> IDF: 00 C0 00 00 25### 那就拿来吧。

<< ret:1, wReplyLen:39,reply: 02 B2 84 03 00 01 02 B4 04 00 00 00 00 83 16 9F 66...### 给你。

常用APDU指令错误码

常用APDU指令错误码

常⽤APDU指令错误码状态码性质错误解释9000正常成功执⾏6200警告信息未提供6281警告回送数据可能出错6282警告⽂件长度⼩于Le6283警告选中的⽂件⽆效6284警告FCI格式与P2指定的不符6300警告鉴别失败63Cx警告校验失败(x-允许重试次数)6400出错状态标志位没有变6581出错内存失败6700出错长度错误6882出错不⽀持安全报⽂6981出错命令与⽂件结构不相容,当前⽂件⾮所需⽂件6982出错操作条件(AC)不满⾜,没有校验PIN6983出错认证⽅法锁定,PIN被锁定6984出错随机数⽆效,引⽤的数据⽆效6985出错使⽤条件不满⾜6986出错不满⾜命令执⾏条件(不允许的命令,INS有错)6987出错MAC丢失6988出错MAC不正确698D保留 6A80出错数据域参数不正确6A81出错功能不⽀持;创建不允许;⽬录⽆效;应⽤锁定6A82出错该⽂件未找到6A83出错该记录未找到6A84出错⽂件预留空间不⾜6A86出错P1或P2不正确6A88出错引⽤数据未找到6B00出错参数错误6Cxx出错Le长度错误,实际长度是xx6E00出错不⽀持的类:CLA有错6F00出错数据⽆效6D00出错不⽀持的指令代码9301出错资⾦不⾜9302出错MAC⽆效9303出错应⽤被永久锁定9401出错交易⾦额不⾜9402出错交易计数器达到最⼤值9403出错密钥索引不⽀持9406出错所需MAC不可⽤6900出错不能处理6901出错命令不接受(⽆效状态)61xx正常需发GET RESPONSE命令6600出错接收通讯超时6601出错接收字符奇偶错6602出错校验和不对6603警告当前DF⽂件⽆FCI6604警告当前DF下⽆SF或KF。

APDU(Application Protocol Data Unit)命令

APDU(Application Protocol Data Unit)命令

APDU(APDU:Application Protocol Data Unit)命令一条命令APDU含有一个头标和一个本体。

本体可有不同长度,或者在相关数据字段为空时,整个可以不存在。

指令头由四个数据元组成,它们是类CLA(cla ss)字节,命令INS(ins truct,n)字节和两个参数Pl和P2 (P arameters 1 and 2)字节组成,如图1所示。

类字节用于识别应用和它们专有的命令组。

例如,GSM使用类字节‘AO’,而代码‘8X’则最常用于公司专用(私用)命令。

相反,基于ISO的命令都用类字节‘OX’编码。

标准另外规定了类字节用于识别安全报文和逻辑通道。

虽然如此,仍然和前面所述把类字类当做应用识别符使用是相容的。

类字节的编码参见表1和表2图1 命令APDU的结构表1 按照ISO/IEC 7816-4的最重要的类别字节(CLA)的编码表2 关于类字节的适用概况的补充说明在命令APDU中的下一个字节是指令字节,它对实际的命令编码。

这个字节的几乎全部的地址空间都可以使用,而惟一的限制是只可以使用偶编码。

这是因为T=0协议允许在回送的命令字节中用把先前的字节增量1来激活可编程电压。

因此命令字节永远是偶数的。

两个参数字节主要用来提供更多的关于指令字节选择命令的信息。

于是,它们主要用来作为命令不同选项的选择开关。

例如,把它们用来选择SELECT FILE的不同选项或是规定READ BINARY的区距。

接着头标的下一段是本体,除有了长度规定之外,它可以被略去,本体承担了双重角色。

首先,它规定了送给卡的数据部分的长度(在Lc字段),以及由卡回送的数据部分的长度(在Le字段)。

其次,它含有发送给卡的有关命令的数据。

如果Le字段之值为‘00’,则终端期待着卡传送这条命令最大可用数量的数据,这是关于长度的数值规定的惟一例外。

Le和L字段通常为1字节长。

然而能够把它们转换为每个有3字节长的字段,这样可用来表示高达65536的长度,因为第1字节中含有扩展符序列‘∞’,参见图2。

非接触IC卡片APDU指令系统介绍

非接触IC卡片APDU指令系统介绍

APDU指令介绍1. APDU指令格式根据7816-4规范,从终端发出的命令和卡片响应的信息必须遵从以下4种格式。

情形1:命令:响应:情形2:命令:响应:情形3:命令:响应:情形4:命令:响应:1.1 APDU命令格式1.1.1 命令头域命令头定义报文的内容如下表所示:1.1.2 命令体命令体中各项是可选的。

Lc 命令数据域中DATA的长度,该长度不可超过255字节。

Data 命令和响应中的数据域。

Le 响应数据域中期望数据的长度。

Le=00,表示需要最大字节数,该长度不可超过255字节。

1.2 APDU响应数据格式APDU1.2.1 返回数据返回数据域是可选项。

1.2.2 返回状态字(SW1SW2)SW1 SW2是卡片执行命令的返回代码,任何命令的返回信息都至少由一个状态字组成。

1.3 状态字SW1SW2意义状态字说明了命令处理的情况,即命令是否被正确执行,如果未被正确执行,原因是什么。

状态字由2部分组成:SW1(status word1):表示命令处理状态;SW2(status word2):表示命令处理限定。

表2 状态字SW1-SW2当SW1的高半字节为‘9’,且低半字节不为‘0’时,其含义依赖于相关应用。

当SW1的高半字节为‘6’,且低半字节不为‘0’时,其含义与应用无关。

2. APDU指令2.1 常见APDU指令介绍以下介绍的指令均为交通行业常见指令,涵盖ED/EP应用和电子现金应用,针对非接触卡片。

●通用指令────SELECT(选择)────READ BINARY(读二进制)────READ RECORD(读记录)────UPDATE BINARY(修改二进制)────UPDATE RECORD(修改记录)────GET RESPONSE(取响应)────GET CHALLENGE(产生随机数)────EXTERNAL AUTHENTICATION(外部认证)────INTERNAL AUTHENTICATION(内部认证)────VERIFY(校验)────PIN CHANGE/UNBLOCK(个人密码修改/解锁)────APPLICATION BLOCK(应用锁定)────APPLICATION UNBLOCK(应用解锁)────CARD BLOCK(卡片锁定)●电子钱包\电子存折一般交易相关指令────GET BALANCE(读余额)────GET TRANSACTION PROVE(取交易认证)────CHANGE PIN(修改个人密码)────INITIALIZE FOR LOAD(圈存初始化)────CREDIT FOR LOAD(圈存)────INITIALIZE FOR PURCHASE(消费初始化)────INITIALIZE FOR CASH WITHDRAW(取现初始化)────DEBIT FOR PURCHASE/CASH WITHDRAW(消费/取现)────INITIALIZE FOR UNLOAD(圈提初始化,仅用于电子存折)────DEBIT FOR UNLOAD(圈提,仅用于电子存折)────INITIALIZE FOR UPDATE(修改透支限额初始化,仅用于电子存折)────UPDATE OVERDRAW LIMIT(修改透支限额,仅用于电子存折)────APPEND RECORD(增加记录)●复合应用模式专用指令────INITIALIZE FOR CAPP PURCHASE(复合应用消费初始化)────UPDATE CAPP DATA CACHE(更新复合应用数据缓存)────DEBIT FOR CAPP PURCHASE(复合应用消费)●电子现金专用指令────GENERATE AC(生成应用密文)────GET DATA(取数据)────PUT DATA(设置数据)────GET PROCESSING OPTIONS(获取处理选项)表3 APDU命令集通用指令是电子钱包、电子存折、电子现金都支持的,但是针对不同的应用,某些指令的具体参数细节可能略有差异,可参照相关规范。

apdu select指令

apdu select指令

apdu select指令摘要:1.简介2.APDU(应用层协议数据单元)3.APDU select 指令4.指令结构5.应用场景6.结论正文:1.简介APDU select 指令是智能卡(Smart Card)通信中常用的一种指令,用于从智能卡中读取或写入数据。

它属于APDU(应用层协议数据单元)指令族的一员,应用在ISO/IEC 7816 协议中。

2.APDU(应用层协议数据单元)APDU 是智能卡通信中的基本数据单元,用于在智能卡与外部设备之间传递信息。

它包含了应用层协议的命令和响应数据,以及与数据传输相关的附加信息。

3.APDU select 指令APDU select 指令用于选择特定的文件或应用,以便进一步执行读取或写入操作。

它的主要功能是从智能卡中获取数据,或者将数据写入智能卡。

4.指令结构APDU select 指令的基本结构如下:起始字符(Start of File Identifier,SOFI)文件标识符(File Identifier,FID)保留字(Reserved,RES)数据长度(Data Length,DL)数据(Data,D)校验和(Check Sum,CS)结束字符(End of File Identifier,EOFI)其中,文件标识符用于指定要访问的文件,数据长度表示实际传输数据的字节数,数据则是具体的读取或写入内容。

5.应用场景APDU select 指令广泛应用于智能卡的各类应用场景,如金融、通信、医疗等。

例如,在金融领域,它可用于从智能卡中读取余额信息;在通信领域,它可用于从智能卡中读取套餐信息;在医疗领域,它可用于从智能卡中读取患者信息等。

6.结论APDU select 指令作为智能卡通信中的重要组成部分,为各类应用场景提供了便捷的数据读取和写入功能。

APDU命令整理

APDU命令整理

1.APDU命令集命令格式:1.READ BINARY的命令报文:如果在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的响应报文:2.WRITE BINARY命令报文:说明:如果在P1中b8=1,则P1的b7和b6显域 0(RFU若干位) P1的b5至b1是短EF标识符并且P2是在从文件开始的数据单元中被写的第1个字节的偏移。

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

WRITE BINARY的响应报文:3.UPDATA BINARY命令报文:如果在P1中b8=1,则P1的b7和b6置为0(RFU若干位), P1的b5至b1是短EF标识符,并且P2是在从文件开始的数据单元中被更新的第1个字节的偏移。

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

如果在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的响应报文:5.READ RECORD命令报文:READ RECORD的响应报文:7.APPEND RECORD命令报文:GET DATA的响应报文:10.PUT DATA命令报文:11.SELECT FILE命令报文:SELECT FILE的响应报文:VERIFY的响应报文:13.INTERNAL AUTHENTICATE命令报文:INTERNAL AUTHENTICATE的响应报文:说明:P1=‘00’表示没有信息被给出,在发出命令之前引用的算法为已知,或在数据字段中提供。

APDU:APDU常用指令

APDU:APDU常用指令

APDU:APDU常⽤指令
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卡应该⽀持以下与应⽤⽆关的常⽤指令命令:。

APDU指令集合

APDU指令集合

APDU指令集合1GP APDU 指令参考(GlobalPlatform 第九章)1.1State ReturnedSw1 sw2 meaning62 00 Logical Channel already closed62 83 Card Life Cycle State is CARD_LOCKED63 10 More data available64 00 No specific diagnosis65 81 Memory failure67 00 Wrong length in Lc68 81 Logical channel not supported or is not active68 82 Secure messaging not supported69 82 Security status not satisfied69 85 Conditions of use not satisfied6A 80 Incorrect values in command data6A 81 Function not supported e.g. card Life Cycle State is CARD_LOCKED6A 82 Selected Application / file not found6A 84 Not enough memory space6A 86 Incorrect P1 P26A 88 Referenced data not found6D 00 Invalid instruction6E 00 Invalid class94 84 Algorithm not supported1.2基本指令command CLA INFDelete command (80\84) E4 (9.2)GET DATA Command (00\80\84) CA (9.3)GET STATUS Command (80\84)F2 (9.4)INSTALL Command (80\84)E6 (9.5)LOAD Command (80\84)E8 (9.6)MANAGE CHANNEL Command 00 70 (9.7)PUT KEY Command (80\84)D8 (9.8)SELECT Command 00 A4 (9.9)SET STATUS Command (80\84)F0 (9.10)STORE DATA Command (80\84)E2 (9.11)2PBOC 指令参考(中国金融集成电路1、2) 2.1基本指令command CLA INF 说明APPLICATION BLOCK 84 1E 使当前选择的应用失效(6.2.3)APPLICATION UNBLOCK 84 18 用于恢复当前应用(6.2.4)CARD BLOCK 84 16 使卡中所有应用永久失效(6.2.5)EXTERNAL AUTHENTICATION 00 82 要求IC卡中的应用验证密码(6.2.6) GET CHALLENGE 00 84 请求一个用于安全相关过程的随机数(6.2.7)GET RESPONSE 00 C0 提供了一种从卡片向接口设备传送APDU 的传输方法 (6.2.8) INTERNAL AUTHENTICA TION 00 88 提供了利用接口设备发来的随机数和自身存储的相关密钥进行数据认证的功能(6.2.9)PIN UNBLOCK 84 24 为发卡方提供了解锁个人密码的功能(6.2.10)READ BINARY (00\04)B0 用于读取二进制文件的内容(6.2.11) READ RECORD (00\04)B2 用于读取记录文件的内容(6.2.12) SELECT 00 A4 通过文件名或AID来选择IC卡中的PSE、DDF或ADF(6.2.13) UPDATE BINARY (00\04)D6 报文使用命令APDU中给定的数据修改EF文件中已有的数据(6.2.14) UPDATE RECORD (00\04)DC 报文用命令APDU中给定的数据更改指定的记录(6.2.15)VERIFY 00 20 用于校验命令数据域中的个人密码的正确性(6.2.16)(1)CHANGE PIN(修改个人密码) 80 5E 01 00 (5.2.2)CREDIT FOR LOAD(圈存) 80 52 00 00 (5.2.3)DEBIT FOR PURCHASE/CASH WITHDRAW(消费/取现) 80 54 01 00 (5.2.4)DEBIT FOR UNLOAD(圈提) 80 54 03 00 (5.2.5)GET BALANCE(读余额) 80 5C 00 0x (5.2.6)GET TRANSACTION PROVE(取交易认证) 80 5A 00 xx (5.2.7)INITIALIZE FOR CASH WITHDRAW(取现初始化) 80 50 02 01 (5.2.8)INITIALIZE FOR LOAD(圈存初始化) 80 50 00 0x (5.2.9)INITIALIZE FOR PURCHASE(消费初始化) 80 50 01 0x (5.2.10) INITIALIZE FOR UNLOAD(圈提初始化) 80 50 05 01 (5.2.11)INITIALIZE FOR UPDATE(修改初始化) 80 50 04 01 (5.2.12)RELOAD PIN(重装个人密码) 80 5E 00 00 (5.2.13)UPDATE OVERDRAW LIMIT(修改透支限额) 80 58 00 00 (5.2.14)(2) 2.2State ReturnedSw1 sw2 meaning 性质61 xx 正常处理62 00 无信息提供警告62 81 回送数据可能出错警告62 82 文件长度<le< p="">62 83 选择文件无效警告63 00 认证失败警告63 cx 使用内部重试程序更新成功警告64 00 状态位未变错误65 81 内存错误错误67 00 Lc长度错误错误68 82 不支持安全报文错误69 00 不能处理69 01 命令不接受(无效状态) 错误69 81 命令与文件结构不相容错误69 82 不满足安全状态错误69 83 认证方法锁定错误69 84 引用数据无效错误69 85 使用条件不满足错误69 86 不满足命令执行的条件(非当前EF) 错误69 87 安全报文数据项丢失错误69 88 安全报文数据项不正确错误6A 80 数据域参数不正确错误6A 81 不支持此功能警告6A 82 文件未找到错误6A 83 未找到记录错误6A 84 文件中存储空间不够错误6A 86 参数P1 P2不正确错误6A 88 未找到引用数据错误6B 00 参数错误(偏移地址超出了EF) 错误6C xx 长度错误(Le不正确,xx表示实际长度) 错误6D 00 INS不支持或错误错误6E 00 CLA不支持或错误错误6F 00 数据无效错误93 02 MAC无效错误93 03 应用永久锁定警告\错误(block\unblock)94 01 金额不足错误94 03 密钥索引不支持错误94 06 所需MAC不可用错误37816 指令参考(7816-4)3.1基本指令command CLA INF 说明READ BINARY 00 B0 (6.1)WRITE BINARY command 00 D0 (6.2)UPDATE BINARY command 00 D6 (6.3)ERASE BINARY command 00 0E (6.4)READ RECORD(S) command 00 B2 (6.5)WRITE RECORD command 00 D2 (6.6)APPEND RECORD 00 E2 (6.7)UPDATE RECORD command 00 DC (6.8)GET DATA command 00 CA (6.9)PUT DATA command 00 DA (6.10)SELECT FILE command 00 A4 (6.11)VERIFY command 00 20 (6.12)INTERNAL AUTHENTICA TE command 00 88 (6.13)EXTERNAL AUTHENTICATE command 00 B2 (6.14)GET CHALLENGE command 00 B4 (6.15)MANAGE CHANNEL command 00 70 (6.16)3.2State ReturnedSw1 sw2 meaning62 00 No information is given62 81 Part of returned data may be corrupted62 82 End of file reached befeore reading Le bytes62 83 Selected file invalidated62 84 FCI not formatted according to 5.1.562 CX Counter (successful writing, but after using an internal retry routine. 'X'!='0'indicates the number of retries: 'X'='0' means that no counter is provided)63 00 No information given (verification failed)63 CX Counter (successful storing, but after using an internalretry routine, 'X'!='0'indicates the number of retries. 'X'='0' means that no counter is provided65 81 Memory failure (unsuccessful writing)67 00 Wrong length (wrong Le field)69 81 Command incompatible with file structure69 82 Security status not satisfied69 83 Authentication method blocked69 84 Referenced data invalidated69 85 Conditions of use not satisfied69 86 Command not allowed (no current EF)6A 80 Incorrect parameters in the data field6A 81 Function not supported6A 82 File not found6A 83 Record not found6A 84 Not enough memory space in the file6A 85 Lc inconsistent with TLV structure6A 86 Incorrect parameters P1-P26a 87 Lc inconsistent with P1-P26A 88 Referenced data (data objects) not found6B 00 Wrong parameters (offset outside the EF)6C XX Wrong length (wrong Le field: 'XX' indicates the exact length)</le<>。

学习笔记-USIM卡与终端命令详解

学习笔记-USIM卡与终端命令详解

ETSI TS 102 221UICC与终端接口;物理和逻辑特性1USIM-ME命令结构本章节描述了UICC(USIM)所支持的命令和响应APDU格式。

1.1命令APDU结构本章节描述了一个通用的应用协议数据单元(APDU)的基本结构。

APDU是指在传输层之上的应用层的数据(移动设备和卡之间)传输协议。

一个命令APDU包含数据包头和数据体。

见下表,其中,数据包头包含CLA字段,INS 字段,P1和P2字段,其是命令APDU的必要组成部分。

数据体部分是可选部分,包括Lc,Data和Le。

表10.1:命令APDU的内容对于 C-APDU 结构的四种可能组合见下表:表10.2:C-APDU组合2.1.1Class字段编码Class类字段的最高4位(b8-b5)的含义参见下表,位4和3表示安全数据标识,位2和1表示所用的逻辑通道,逻辑通道可以从0到3。

如果UICC卡支持逻辑通道机制,那么最大可获得的逻辑通道数标识在ATR的卡兼容性数据对象中,如果该数据对象不存在,则只支持b2 = b1 = 0的数据通道。

一个运行在支持逻辑通道的UICC上的应用,应该要么在消息校验中,从签名的计算中去除类字节,或者将其设置为缺省值。

移动终端可以改变应用所使用的逻辑通道,与所使用的逻辑通道比较安全消息校验签名。

表10.3:类字节编码缺省情况下,卡不采用安全消息,除非由应用特别指出。

2.1.2指令字段编码参见下表表10.5:电信应用的指令字节编码2.1.3参数字段编码参数字节P1和P2的使用和具体的命令有关。

如果参数未被使用,则设置未'00'。

具体编码方式参见具体的命令。

2.1.4Lc字段的编码该字段表示数据的长度,其为可选项。

如果该字段存在,则在其后将跟着相应长度的数据字节。

移动设备可以发送1到255各字节。

2.1.5数据体编码数据体的编码与具体的命令有关。

参见下面章节。

2.1.6Le字段的编码该字段表示命令发送后所期望的最大返回数据长度,其为可选项。

apdu指令应答解析

apdu指令应答解析

pdu指令应答解析
APDU(Application Protocol Data Unit)指令是智能卡应用中的通信单位,用于在终端和智能卡之间传递命令和数据。

APDU指令有两种类型:命令APDU和响应APDU。

命令APDU由以下四个部分组成:
CLA(1 byte):指令的类型,表示命令的类别。

INS(1 byte):指令码,表示具体的指令。

P1(1 byte):对指令的补充说明。

P2(1 byte):对指令的补充说明。

Lc(1 byte或3 bytes):数据长度,表示数据域的长度,可以为1 byte 或3 bytes,根据具体的指令而定。

Data field(0~65535 bytes):数据域,表示需要传输的数据。

Le(1 byte或2 bytes):期望的响应长度,可以为1 byte或2 bytes,
根据具体的指令而定。

响应APDU由以下三个部分组成:
DATA(0~65535 bytes):响应数据域,表示指令执行后返回的数据。

SW1(1 byte):状态字1,表示指令执行的状态。

SW2(1 byte):状态字2,表示指令执行的状态。

APDU指令的应答解析需要根据具体的指令和协议进行解析。

一般来说,响应APDU的状态字1和状态字2组合在一起表示了指令执行的结果,根据状态字的不同可以判断指令是否执行成功以及出错的原因。

同时,响应APDU的数据域中也可能包含指令执行后返回的数据,需要根据具体的指令和协议进行解析。

应用协议数据单元

应用协议数据单元

应用协议数据单元1. 概述应用协议数据单元(Application Protocol Data Unit,简称APDU)是指在计算机网络中,应用层与传输层之间传输的数据单元。

它是一种特定格式的数据结构,用于在应用层协议之间交换信息。

APDU通常用于智能卡、指纹识别和支持加密通信的系统中。

2. APDU格式APDU由两部分组成:命令数据和响应数据。

命令数据用于向远程设备发送请求,而响应数据用于接收远程设备返回的响应。

2.1 命令数据命令数据由四个部分组成:•CLA(Class):这是一个1字节的字段,用于指定命令的应用类别。

它通常定义了命令的类型、所使用的协议和数据传输方式。

•INS(Instruction):这是一个1字节的字段,用于指定命令的具体操作。

•P1和P2:这两个1字节的字段,称为双参数字段,用于向远程设备传递额外的参数,用于进一步确定命令的含义。

•Lc:这是一个1字节的字段,用于指定命令数据(Data)字段的长度。

它告诉远程设备需要执行的操作。

2.2 响应数据响应数据由两个部分组成:•数据长度(Le):这是一个1字节的字段,用于指定响应数据的长度。

如果命令没有返回任何数据,则该字段为0。

•响应数据(Data):这是一个可选的字段,用于存储返回的数据。

3. APDU应用示例以下是一个简单的APDU命令示例,用于与智能卡进行通信:CLA | INS | P1 | P2 | Lc | Data | Le其中,各字段具体含义如下:•CLA:0x00•INS:0xA4•P1:0x04•P2:0x00•Lc:0x06•Data:0x3F 0x00 0x00 0x00 0x00 0x00•Le:0x00以上命令的作用是向智能卡发送一个SELECT APDU命令,选择一个特定的应用。

4. APDU命令与响应处理过程APDU的命令与响应处理过程如下:1.应用程序创建一个APDU命令。

2.该命令被传递给传输层。

apdu结构

apdu结构

APDU(Application Protocol Data Unit)是应用协议数据单元,用于在智能卡和智能卡应用之间传输数据。

APDU 是命令/响应协议的数据单元,包含命令、数据和状态信息。

APDU 的结构包括:
命令字节:用于标识APDU 命令的类型,如CLA(Class)字节。

长度字节:用于表示APDU 的长度,包括命令字节和数据字节的总长度。

数据字节:包含实际要传输的数据,可以是参数或命令中的数据。

状态字节:用于表示响应的状态信息,例如成功或失败状态。

APDU 的命令/响应结构包括:
命令格式:包含APDU 命令字节和数据字节,用于向智能卡发送指令和数据。

响应格式:包含APDU 状态字节,用于返回响应状态信息。

APDU 的数据域可以有不同的长度,根据实际情况而定。

如果数据域为空,则APDU 只包括头标。

根据应用协议的规定,不同的APDU 命令有不同的命令码和参数格式。

以上内容仅供参考,如需更准确全面的信息,可以咨询银行智能卡相关技术领域的专业人员或查阅相关技术手册。

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

1.APDU命令集
命令格式:
1.READ BINARY的命令报文:
如果在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的响应报文:
如果在P1中b8=1,则P1的b7和b6显域0(RFU若干位) P1的b5至b1是短EF标识符并且P2是在从文件开始的数据单元中被写的第1个字节的偏移。

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

WRITE BINARY的响应报文:
3.UPDATA BINARY命令报文:
说明:
如果在P1中b8=1,则P1的b7和b6置为0(RFU若干位), P1的b5至b1是短EF标识
符,并且P2是在从文件开始的数据单元中被更新的第1个字节的偏移。

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

UPDATE BINARY的响应报文:
说明:
如果在P1中b8=1,则P1的b7和b6显示0(RFU若干位), P1的b5至b1是短EF标识符,并且P2是在从文件开始的数据单元中被写的第1个字节的偏移。

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

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

WRITE RECORD的响应报文:
7.APPEND RECORD命令报文:
UPDATE RECORD的响应报文:
9.GET DATA命令报文:
PUT DATA的响应报文:
12.VERIFY命令报文:
说明:
P1=‘00’表示没有信息被给出,在发出命令之前引用的算法为已知,或在数据字段中提供。

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

EXTERNAL AUTHENTICATE的响应报文:
15.GET CHALLENGE命令报文:
说明:
P1的位b8用来表示开放功能或关闭功能;如果b8为“0” ,则MANAGE CHANNEL应打开逻辑信道,如果b8为“1”,则MANAGE CHANNEL应关闭逻辑信道。

MANAGE CHANNEL的响应报文:
17.GET RESPONSE命令报文:
18.ENVELOPE命令报文:
说明:
当对于发送数据串而言根据T=0来使用ENVELOPE命令时,在ENVELOPE命令
ADPU中的空数据字段意味着“数据串的结束”.
1.2 GSM 11.11定制APDU(详细介绍:GSM 11.11协议—98年11月版第8章第30页至36页)
命令格式:
READ RECORD
INV ALIDATE
注:详细格式说明请参考GSM 11.11协议—98年11月版第9章第40页至52页.
命令格式(下面只列出在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命令;
DEACTIV ATE FILE命令就是GSM 11.11中的INV ALIDATE命令;
ACTIV ATE FILE命令就是GSM 11.11中的REHABILITATE命令;
AUTHENTICATE命令同GSM 11.11中的RUS GSM ALGORITHM命令;
MANAGE CHANNEL命令属于ISO 7816-4标准APDU命令集;
GET CHALLENGE命令属于ISO 7816-4标准APDU命令集;
RETRIEVE DATA的命令报文:
表3-1 P2编码SET DATA的命令报文:。

相关文档
最新文档