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卡中未找到相应的路径: