文档章节

APDU指令格式解析

又右耳刀
 又右耳刀
发布于 2014/09/12 11:16
字数 1193
阅读 677
收藏 0



CLA    INS  P1  P2  Lc  Data  Le

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

一 命令分类:

COS命令由具体应用分为4种命令报文结构如下:

① 情形1

CLA INS P1 P2  00

② 情形2

CLA INS P1 P2 Le

③ 情形3

CLA INS P1 P2 Lc Data

④ 情形4

CLA INS P1 P2 Lc Data Le

二 响应报文

1) 响应结构

响应数据  响应状态码

Data      SW1 SW1

DATA: 返回给用户的数据,即命令的执行结果。

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

三 命令集

1) Read Binary

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

CLA  00

INS  B0

P1 见参数说明

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

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

Data 无 / FID

7) Get Challenge

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

CLA  00

INS  84

P1  00

P2  00

Le  04

8) Get Response

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

格式:

CLA  00

INS  C0

P1  00

P2  00

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

9) Internal Authenticate

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

CLA  00

INS  88

P1  00

P2  00 ~ 07 密钥号

Lc  04

Data 外部随机数(4字节)

10) External Authenticate

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

CLA  00

INS  82

P1  00

P2  00  ~ 07 密钥号

Lc  0C

Data 发卡方认证数据

11) Change / Unlock PIN

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

CLA  00

INS  5E

P1  00  修改卡片个人密码

 01  解锁卡片个人密码

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

P2 密码号

Lc

Data

12) Unlock Key

功能:解锁卡片应用密钥。

CLA  00

INS  5C

P1  01  解锁应用密钥

 02  安装卡片应用密钥

P2 密钥号

Lc 无 / 密钥长度

Data 无 / 加密的密钥

13) Create File

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

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   A0 00 00 02 47 10 01

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   01 01

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文件的读取。

© 著作权归作者所有

又右耳刀

又右耳刀

粉丝 7
博文 53
码字总数 30626
作品 0
沈阳
私信 提问
CCID驱动源码--ccid

ccid 提供了普通 USB CCID (Chip/Smart Card Interface Devices) 驱动和 ICCD (Integrated Circuit(s) Card Devices) 的驱动程序源码。 特点: Exchange levels short APDU extended APDU (......

匿名
2011/07/05
5.7K
0
使用qxdm过滤UIM log

1、基本查找方法 打开isf的log文件 Ctrl+A 全选 Alt+R 进行过滤 Alt+M进行字符匹配(如果要匹配包中的内容勾选parsed Text选项) Alt+Y定位log 2、关于UIM模块 包的话需要关注qmi包,apdu包 ...

HouWeiGui
2016/12/26
310
0
高性能消息传输机制--Aeron

Aeron 提供高效可靠的单播和多播消息传输机制。 相关技术术语: 传输介质: 可通过UDP、InfiniBand、共享内存等 介质驱动: Driver for read/writing to/from transmission media for Aeron. 发...

小编辑
2015/03/30
6.1K
1
JSP+Servlet基础一

JSP中的指令: 格式:<%@指令的名称(page,taglib,include...) 属性=属性值%> 指令中的page:用于整个页面,定义与页面相关的属性。page属性一共有13个。 1、常用的import="包列表",多包之间...

Aaron_DMC
2016/10/09
11
0
Tengine新增nginx upstream模块的使用

导读 Tengine是淘宝在Nginx基础之上的二次开发版,Tengine完全兼容Nginx,因此可以参照Nginx的方式来配置Tengine。但Tengine提供了很多比较实用的特性,以及性能的优化。比如针对upstream模块...

问题终结者
01/11
29
0

没有更多内容

加载失败,请刷新页面

加载更多

Gradle 的项目导入到 IntelliJ 后子项目源代码不能导入

在一个 Gradle 项目中,有若干子项目。 当 Gradle 到如后,子项目不能被 IntelliJ 识别代码。 如下图的这个代码就没有被自动识别。 这个有可能是因为你的这个子项目没有被添加到父项目中。 ...

honeymoose
16分钟前
3
0
苹果cms下载地址及模板地址

https://github.com/magicblack/maccms10 程序下载: https://www.lanzous.com/b204882 教程下载: https://www.lanzous.com/b256378 模板下载: https://www.lanzous.com/b355667 插件下载:......

chenhongjiang
16分钟前
3
0
Java中使用HttpPost上传文件以及HttpGet进行API请求(包含HttpPost上传文件)

一、HttpPost上传文件 public static String getSuffix(final MultipartFile file){ if(file == null || file.getSize() == 0){ return null; } String......

codeobj
17分钟前
3
0
在Word中怎样批量删除空行,这些点主要注意

在工作中经常接触的办公软件就是Word了,熟练使用Word中的技能是准时下班的保证。这就要求我们对Word中的各项技能都熟练于心,很多朋友诉苦Word中的排版不熟悉,每次写一篇文章排版都要花费很...

干货趣分享
23分钟前
2
0
终端-Linux命令之非交互SSH密码验证-Sshpass

> Sshpass是使用SSH所谓的“交互式键盘密码身份验证”以非交互方式执行密码身份验证的工具 通俗来说就是 使用ssh密码登录 是需要在连接时手动输入密码的,没办法明文连接,如下图,需要交互的...

极客收藏夹
27分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部