7816APDU四种情况.docx

上传人:b****7 文档编号:9997546 上传时间:2023-02-07 格式:DOCX 页数:31 大小:125.91KB
下载 相关 举报
7816APDU四种情况.docx_第1页
第1页 / 共31页
7816APDU四种情况.docx_第2页
第2页 / 共31页
7816APDU四种情况.docx_第3页
第3页 / 共31页
7816APDU四种情况.docx_第4页
第4页 / 共31页
7816APDU四种情况.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

7816APDU四种情况.docx

《7816APDU四种情况.docx》由会员分享,可在线阅读,更多相关《7816APDU四种情况.docx(31页珍藏版)》请在冰豆网上搜索。

7816APDU四种情况.docx

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

(Le=Licc)在INS、INS或‗60‘及相关过程字的控制下返回长度为Le(=Licc)的数据

2.Le不正确时(Le=‗00(数据长度不是256)或Le>Licc):

向卡发命令,卡先返回6CXX,此处XX代表实际应返回的数据的长度,此时再向卡重发该命令,其中Le置为XX,卡最后返回XX长度的数据。

 

理解机卡通讯的过程。

举例。

********************************************************************************

>>IDF:

80320000748030711102B2661B5084FD.....

###我有一个数据0x74个字节,属于安全报文,帮忙解一下。

<

6125

###共解出0x25个字节(即37字节)

>>IDF:

00C0000025

###那就拿来吧。

<

1,wReplyLen:

39,reply:

02B28403000102B4040000000083169F66...

###给你。

(之所以是39,37字节后跟状态字9000)

>>smartcard.wCommandLen:

12,00B2000E07000114000202B2

###我要读当前记录的某某位置。

<

1,wReplyLen:

2,reply:

6103

###3个字节

>>smartcard.wCommandLen:

5,00C0000003

###拿来吧

<

1,wReplyLen:

5,reply:

0000099000

###给你

--------------------------------------------------------------------------------

>>smartcard.wCommandLen:

89,80320000548130510102B2E4325084FD

###我有一个数据0x54个字节,属于安全报文,帮忙解一下。

<

1,wReplyLen:

2,reply:

6B27

###出错了,我不认识

>>smartcard.wCommandLen:

12,00B2000E07000114000202B2

###我要读当前记录的某某位置。

<

1,wReplyLen:

2,reply:

6103

###3个字节

>>smartcard.wCommandLen:

5,00C0000003

###拿来吧

<

1,wReplyLen:

5,reply:

0000099000

###给你

 

智能卡的传输协议命令

文章出处:

joywyc发布时间:

2008/11/21|1042次阅读

每天新产品时刻新体验一站式电子数码采购中心专业PCB打样工厂,24小时加急出货服务器和存储系统的超新互连解决方案多样化的电子和电气元件

  原则上,传输协议应构造的完全独立于应用层的数据和命令,这也是OSI层次模型的意图。

遗憾地是,在理论要求和真正的实践中存在着差异。

这里有两条命令其目的仅在于允许传输机制可在应用层上使用,名为GETRESPONSE(获取晌应)和ENVELOPE(包封)。

这里还有另一条命令,MANAGECHANNEL(通道管理),它的功能不能由应用层单独使用,这三条命令的功能参见表1~表3。

  表1遵照ISO/IEC7816-4的GETRESPONSE的功能

  表2遵照ISO/IEC7816-4的ENVELOPE的功能

  表3遵照ISO/IEC7816-4MANAGECHANNEL的功能

  在T=0的协议中,不可能在一个命令一响应循环①中,既发送一个数据字组给智能卡雨同时又从智能卡接收一数据字组,因之,这个协议不支持情况4(Case 4)的命令,虽然它们被经常用到。

于是,在T=0协议时被迫使用一个工作区,这样就工作在一种简单的方式中。

情况4命令被送至卡,如果它是成功的,一特殊的回送代码被发送给终端。

它通知终端,命令已产生了数据正等待着提取,终端于是就发送一条GETRESPONSE命令给智能卡并接收数据。

这样就结束了对于第1条命令的命令-响应循环。

只要除GETRESPONSE命令之外,没有别的命令被送给卡,则响应数据就可以多次被请求。

  当命令在保密通信的电文中被完全加密时,T=0协议中有可能发生传输问题,它既需要不加密的指令字节同时还需要不加密的Le字节。

ENVELOPE命令用嵌入一个完整的具有其头标和数据部分的APDU到ENVELOPE命令的APDU的数据中的方法避开了这个限制。

这样可以不受任何限制的加密,并可用任何协议传送。

同样的方法也用于智能卡所产生的响应之中,它也嵌入在ENVELOPE命令的APDU之中。

  逻辑通道允许在单独一张卡中有多达四项应用可相互独立地寻址。

在类别字节中用两位来使命令与应用相协调。

在使用一新的逻辑通道之前,终端必须明显地经MANAGECHANNEL命令通知智能卡,向卡表示需用另外的通道。

通道号可由终端给出,或由卡在其响应中提供一个空闲的通道号。

当被打开的新的逻辑通道是标准通道(0通道)时,卡的表现就好像在复位之后面对着新的通道一样,这就是说,MF是被选择了的,并且未曾达到安仝状态。

当一个不是0通道的新逻辑通道被打开后,现行选择的DE和安全状态都被保留了下来。

当一逻辑通道被关闭后,相关的文件选择和安全状态均被清除

 

1)ReadBinary 

功能:

此命令用于读取二进制文件部分或全部的内容。

 

CLA 00 

INS B0 

P1见参数说明 

P2从文件中读取的第一字节的偏移地址 

Le期望读出数据的长度 

2)UpdateBinary 

功能:

此命令使用给定的数据来更新二进制文件部分或全部的内容。

 

CLA 00 

INS D6 

P1见参数说明 

P2要修改的第一字节的偏移地址 

Lc后续数据域的长度 

Data修改用的数据 

3)ReadRecord 

功能:

此命令用于读取记录文件中指定记录的内容。

 

CLA 00 

INS B2 

P1记录号 

P2见参数说明 

Le期望读出数据的长度 

4)Updaterecord 

功能:

此命令使用给定的数据来更新记录文件中指定记录的内容。

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

 

CLA 00 

INS DC 

P1P1=00表示当前记录 

P1≠00表示指定的记录号 

P2见参数说明 

Lc后续数据域的长度 

Data更新原有记录的新记录 

5)VerifyPIN 

功能:

此命令将校验给定的密码的正确性,根据比较的结果修改安全状态,若校验失败次数达到PIN尝试上限,则PIN自动锁定。

 

CLA 00 

INS 20 

P1 00 

P2 

Lc 02~10 

Data外部输入的个人密码 

6)SelectFile 

功能:

此命令使用文件名或应用标示符来选择IC卡内DF或EF。

 

CLA 00 

INS A4 

P1 00 

P2 00 

Lc 00(选择MF文件)/ 02 

Data无/FID 

7)GetChallenge 

功能:

此命令请求IC卡返回一个用于安全相关过程的随机数。

 

CLA 00 

INS 84 

P1 00 

P2 00 

Le 04 

8)GetResponse 

功能:

此命令为T=0协议情形4状态下,用来取卡中返回的数据。

 

格式:

 

CLA 00 

INS C0 

P1 00 

P2 00 

Le响应的期望数据最大长度 

9)InternalAuthenticate 

功能:

此命令将为外部设备验证卡中的秘密模块的有效性提供数据。

 

CLA 00 

INS 88 

P1 00 

P2 00~07密钥号 

Lc 04 

Data外部随机数(4字节) 

10)ExternalAuthenticate 

功能:

此命令将验证外部设备中的秘密模块的有效性。

 

CLA 00 

INS 82 

P1 00 

P2 00 ~07密钥号 

Lc 0C 

Data发卡方认证数据 

11)Change/UnlockPIN 

功能:

修改、解锁、安装卡片个人密码。

 

CLA 00 

INS 5E 

P1 00 修改卡片个人密码 

01 解锁卡片个人密码 

02 安(重)装卡片个人密码 

P2密码号 

Lc 

Data 

12)UnlockKey 

功能:

解锁卡片应用密钥。

 

CLA 00 

INS 5C 

P1 01 解锁应用密钥 

02 安装卡片应用密钥 

P2密钥号 

Lc无/密钥长度 

Data无/加密的密钥 

13)CreateFile 

功能:

此命令创建卡片文件系统。

 

CLA 00/ 80 

INS F2 

P1 00/FTP文件类型 

P2 00/FAC文件访问控制条件 

Lc无/ 07 

Data 

示例:

 

1应用选择 

(1)选择MF(主文件) 

CLA  INS  P1  P2  Lc  Data 

00   A4   00  00 

P1=00选择主文件                   

(2)根据应用标识符选择应用 

CLA  INS  P1  P2  Lc  Data 

00   A4   04  0C  07  A0000002471001 

P1=04选择DF(专用文件),此时数据域为DF的文件名(AID应用标识符) 

   

DF包括EF(基本文件)和其他DF 

DF1:

EF.COM、EF.DG1........................EF.DG16、EF.Sod 

2使用SELECT命令选择基本文件 

例:

选择机读取区 

CLA  INS  P1  P2  Lc  Data 

00   A4   02  0C  02  0101 

3读二进制 

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的整数,表示待读取数据块的起始位置在文件中的偏移量,可以用于超过256Byte文件的读取。

 

简单apdu指令返回局分析

 (2014-01-0609:

52:

12)

转载▼

分类:

 simcard

SELECT

A0A40000023F00

9F17

//A0A4000002 是命令头,CLA= A0表示GSM应用,INS= A4 表示SELECT,P1P2= 0000 是参数,P3= 02 是数据的长度(或返回数据的长度)表示( 2 )

//选择文件,选中文件为3F00 代表MF

//9F17 是返回状态,表示---成功,有23 个字节的信息等待GETRESPONSE

 

//SELECT

A0A40000027F10

9F17

//A0A4000002 是命令头,CLA= A0表示GSM应用,INS= A4 表示SELECT,P1P2= 0000 是参数,P3= 02 是数据的长度(或返回数据的长度)表示( 2 )

//选择文件,选中文件为7F10 代表TELECOM

//9F17 是返回状态,表示---成功,有23 个字节的信息等待GETRESPONSE

 

//GETRESPONSE

A0C0000017

0000A2CB7F100200000000000A9108180600838A838A00

9000

//A0C0000017 是命令头,CLA= A0表示GSM应用,INS= C0 表示GETRESPONSE,P1P2= 0000 是参数,P3=17 是数据的长度(或返回数据的长度)表示( 23 )

//返回数据见上,其中

//--0000 保留

//--A2CB 占用的空间大小,表示41675字节

//--7F10 选中File的ID

//--02 文件类型,见11.119.3

//----'00':

保留'01':

MF'02':

DF'04':

EF

//----此文件类型 DF

//--0000000000 保留

//--0A 后面跟随数据的长度,表示10

//----91 二进制 10010001 文件详细情况,见11.119.2.1detail1

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

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

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

//------ |||||||+--Clockstop(seebelow)(时钟停止)

//------ ||||||| Forrunningtheauthenticationalgorithm,(为了运行鉴权算法)

//------ ||||||| ortheENVELOPEcommandforSIMDataDownload,(或者执行SIM卡数据下载)

//------ ||||||| afrequencyisrequiredofatleast(至少要用一个频率)

//------ ||||||+-----13/8MHzifb1=0and13/4MHzifb1=1(若b1=0为13/8MHZ,若b1=1为13/4MHZ)

//------ ||||+--+--------Clockstop(seebelow)(时钟停止)

//------ |||+--------------forcoding(seeTS11.12[28])

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

//------ +-----------------------b8=0:

CHV1enabled;b8=1:

CHV1disabled

//--------时钟停止规则

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

//--------|b0|b2|b3|意义|

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

//--------|1|0|0|允许时钟停止,没有优先级|

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

//--------|1|1|0|允许时钟停止,首选高优先级|

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

//--------|1|0|1|允许时钟停止,首选低优先级|

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

//--------|0|0|0|不允许时钟停止|

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

//--------|0|1|0|不允许时钟停止,除非在高优先级上|

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

//--------|0|0|1|不允许时钟停止,除非在低优先级上|

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

//----------本字节所示时钟规则:

相关值为 100 允许时钟停止,没有优先级

//----------本字节所示时钟频率:

13/8MHZ

//----------本字节所示CHV1状态:

Disabled

//----08 DF的个数,表示8

//----18 EF的个数,表示24

//----06 NumberofCHVs,UNBLOCKCHVsandadministrativecodes

//----00 保留

//----83 CHV1状态,见11.119.2.1detail2

//------低4位是可用重试次数,当前剩余 3 次(0表示被锁),最高位是 1 表示secretcodeinitialised,其他位保留

//----8A unblockCHV1状态,见11.119.2.1detail2

//------低4位是可用重试次数,当前剩余 10 次(0表示被锁),最高位是 1 表示secretcodeinitialised,其他位保留

//----83 CHV2状态,见11.119.2.1detail2

//------低4位是可用重试次数,当前剩余 3 次(0表示被锁),最高位是 1 表示secretcodeinitialised,其他位保留

//----8A unblockCHV2状态,见11.119.2.1detail2

//------低4位是可用重试次数,当前剩余 10 次(0表示被锁),最高位是 1 表示secretcodeinitialised,其他位保留

//----00 保留

//9000 是返回状态,表示---成功

 

//SELECT

A0A40000026F3A

9F0F

//A0A4000002 是命令头,CLA= A0表示GSM应用,INS= A4 表示SELECT,P1P2= 0000 是参数,P3= 02 是数据的长度(或返回数据的长度)表示( 2 )

//选择文件,选中文件为6F3A 代表ADN[CDMA-PL]

//9F0F 是返回状态,表示---成功,有15 个字节的信息等待GETRESPONSE

 

//GETRESPONSE

A0C000000F

00001B586F3A040011FF220102011C

9000

//A0C000000F 是命令头,CLA= A0表示GSM应用,INS= C0 表示GETRESPONSE,P1P2= 0000 是参数,P3=0F 是数据的长度(或返回数据的长度)表示( 15 )

//返回数据见上,其中

//--0000 保留

//--1B58 占用的空间大小,表示7000字节

//--6F3A 选中File的ID

//--04 文件类型,见11.119.3

//----'00':

保留'01':

MF'02':

DF'04':

EF

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

//--00 见11.119.2.1detail3

//----对于二进制和记录文件,该字节为保留字节。

对于循环文件,除b6(0based)外所有的bit都是保留的,b6=1表示当前所选择的循环文件可以执行INCREASE命令

//--11FF22 访问权限

//--01 文件状态,见11.119.3

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

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

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

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

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

//---- |||||| b2=0:

当文件无效时不允许读和写

//---- |||||+-------b2=1:

当文件无效时允许读和写

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

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

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

//----01 文件结构,见11.119.3

//------'00':

二进制文件(透明文件)'01':

记录文件(线性定长)'03':

循环文件

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

//----1C 记录长度,见11.119.2.1detail4

//------对于二进制,该字节为保留字节。

对于记录文件和循环文件,该字节为记录长度

//9000 是返回状态,表示---成功

以下apdu指令我在现有的uim卡中未找到相应的路径:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1