分析智能卡的ATR格式【转】
本文转载自:http://blog.csdn.net/michaelcao1980/article/details/8215135
一些例子
NXP 080
=========
3b
f8 T0 Y1 = 0xF(TA1, TB1, TC1, TD1), K = 8
13 TA1 F = 0x1(Fi = 372, Fmax = 5MHz), D = 0x3(Di = 4)
00 TB1 deprecated
00 TC1 N = 0, extra guard time integer
81 TD1 Y2 = 0x8(TD2), T=1
31 TD2 Y3 = 0x3(TA3, TB3), T=1
fe TA3
45 TB3
4a 43 4f 50 76 32 34 31 History bytes
b7 TCK
JCOP white card
==================
3B
68 T0 Y1 = 6(TB1, TC1) , K = 8
TA1 = default 0x11, F = 0x1 (Fi = 372, Fmax = 5), D = 0x1(Di = 1)
00 TB1 deprecated
00 TC1 N = 0, extra guard time integer
00 73 C8 40 00 00 90 00 History bytes
Samsung withe card
====================
3B
9F T0 Y1 = 0x9(TA1,TD1), K = 0xF
95 TA1 F = 0x9(Fi = 512, Fmax = 5), D = 0x5(Di = 16)
80 TD1 Y2 = 0x8(TD2), T = 0
1F TD2 Y3 = 0x1(TA3), T= 15
C3 TA3
80 31 A0 73 BE 21 13 67
03 12 00 22 00 11 28
D5 TCK
从http://hi.baidu.com/fengling1234567/blog/item/00ab014f98538433aec3ab1d.html看到一篇文章:
ATR的基本结构与意义(无历史字符部分) [转载 for sim ic卡 atr pps]
Reset
3B FA 13 00 00 81 31 FE 45 4A 43 4F 50 34 31 56 32 32 31 96
复位应答 ATR
Reset
3B FA 13 00 00 81 31 FE 45 4A 43 4F 50 34 31 56 32 32 31 96
复位应答 ATR
TS( The Initial character ) = 3B
--表示正向约定,高电平为1,低电平为0,传输时先传输LSB,最后传输MSB
T0( The Format character ) = FA
--表示接口字符的个数和历史字节的数量
----其高4位有几个bit为1,则表示后续有几个历史字符(Historical bytes)
高4位 = f( 1 1 1 1 )表示后续字符中存在TA1 TB1 TC1 TD1
--------------------( TA1, TB1, TC1, TA2, TB2 是全局接口字符,TC2是专用接口字符 )
TA1 = 13
--表示有增强的波特率,公式 3571200 / ( Fi / Di )
--------其中Fi由TA1的高4位(F)查表得出,Di由TA1的低4位(D)查表得出
----F = 01 ,查下表,则Fi = 372
+-------------+--------+--------+--------+--------+--------+--------+--------+--------+
| F | 0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 |
+-------------+--------+--------+--------+--------+--------+--------+--------+--------+
| Fi | 372 | 372 | 558 | 744 | 1116 | 1488 | 1860 | RFU |
+-------------+--------+--------+--------+--------+--------+--------+--------+--------+
| 最高时钟MHZ | 4 | 5 | 6 | 8 | 12 | 16 | 20 | -- |
+-------------+--------+--------+--------+--------+--------+--------+--------+--------+
| F | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
+-------------+--------+--------+--------+--------+--------+--------+--------+--------+
| Fi | RFU | 512 | 768 | 1024 | 1536 | 2048 | RFU | RFU |
+-------------+--------+--------+--------+--------+--------+--------+--------+--------+
| 最高时钟MHZ | -- | 5 | 7.5 | 10 | 15 | 20 | -- | -- |
+-------------+--------+--------+--------+--------+--------+--------+--------+--------+
----D = 03 ,查下表,则Di = 4
+-------------+--------+--------+--------+--------+--------+--------+--------+--------+
| D | 0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 |
+-------------+--------+--------+--------+--------+--------+--------+--------+--------+
| Di | RFU | 1 | 2 | 4 | 8 | 16 | 1860 | RFU |
+-------------+--------+--------+--------+--------+--------+--------+--------+--------+
| D | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
+-------------+--------+--------+--------+--------+--------+--------+--------+--------+
| Di | RFU | 512 | 768 | 1024 | 1536 | 2048 | RFU | RFU |
+-------------+--------+--------+--------+--------+--------+--------+--------+--------+
--------实际波特率为 38400
TB1 = 00
----表示编程电流 I /电压 P,高2位表示电流I,低6位表示电压P
----高2位 = 00 ,则编程电流 I 如下
+-------+--------+--------+--------+--------+
| 高2位 | 00 | 01 | 10 | 11 |
+-------+--------+--------+--------+--------+
| 电流I | 25 | 50 | RFU | RFU |
+-------+--------+--------+--------+--------+
----低6位 = 00 ,则编程 P 电压为0
TC1 = 00
----额外保护时间N = 0
TD1 = 81
----通讯协议 T = 1
--------------------
没有TA2
没有TB2
没有TC2
TD2 = 31
--------------------
TA3 = FE
TB3 = 45
没有TC3
没有TD3
4A 43 4F 50 34 31 56 32 32 31
----是历史字节
TCK ( XOR T0 - TCK ) = 96 校验成功
分析智能卡的ATR格式【转】的更多相关文章
- 分析智能卡的ATR格式
一些例子 NXP 080=========3b f8 T0 Y1 = 0xF(TA1, TB1, TC1, TD1), K = 813 TA1 F = 0x1(Fi = 372, Fmax = 5 ...
- Linux网络编程--wireshark分析TCP包头的格式
摘要: 本文简介了TCP面向连接理论知识,具体讲述了TCP报文各个字段含义.并从Wireshark俘获分组中选取TCP连接建立相关报文段进行分析. 一.概述 TCP是面向连接的可靠传输 ...
- mysql协议分析1---报文的格式和基本类型
navicat 和 mysql 是一对好基友,每天都有非常频繁的交流,主人在navicat上写下每条sql语句,轻轻的点了下执行按钮,navicat就飞快的把主人的指令传送到mysql那里,mysql ...
- elk 入门 - 分析nginx日志 + json格式 + 有调试的意识 + elk7.2.0
1.本次采用的一台主机,将所有的软件安装一台上进行测试工作. 2.安装部署:https://blog.51cto.com/hwg1227/2299995 3.简单调试 输出rubydebug inpu ...
- v4l2驱动编写篇【转】
转自:http://blog.csdn.net/michaelcao1980/article/details/53008418 大部分所需的信息都在这里.作为一个驱动作者,当挖掘头文件的时候,你可能也 ...
- mach-o格式分析
0x00 摘要 人生无根蒂,飘如陌上尘. 分散逐风转,此已非常身. — 陶渊明 <杂诗> mach-o格式是OS X系统上的可执行文件格式,类似于windows的PE与linux的ELF, ...
- ZIP压缩算法详细分析及解压实例解释
最近自己实现了一个ZIP压缩数据的解压程序,觉得有必要把ZIP压缩格式进行一下详细总结,数据压缩是一门通信原理和计算机科学都会涉及到的学科,在通信原理中,一般称为信源编码,在计算机科学里,一般称为数据 ...
- 【NLP】Tika 文本预处理:抽取各种格式文件内容
Tika常见格式文件抽取内容并做预处理 作者 白宁超 2016年3月30日18:57:08 摘要:本文主要针对自然语言处理(NLP)过程中,重要基础部分抽取文本内容的预处理.首先我们要意识到预处理的重 ...
- 使用winpcap多线程抓包,以及简单的分析数据包
刚开始使用winpcap数据包的时候,我在抓包的时候使用了 pcap_loop(adhandle, 0, packet_handler, NULL); 这个回调函数进行抓包.同时在回调函数中分析IP地 ...
随机推荐
- 链表相关的leetcode重要题目
Leetcode 92:反转链表II 解决这道题需要三个步骤: 找到需要反转的第一个节点.可以通过头节点前进m-1步,找到反转开始的位置. 将需要反转的部分进行反转.参考Leetcode 206:反转 ...
- JS数组——冒泡、插入、快速排序
前言:因为要对后端返回来的数据进行处理,之前之后冒泡,不够用,去看了插入跟快速,写下这篇笔记. 使用背景: 1.冒泡排序 数据比较少,小于1000 2.插入排序 数据比较少,大于1000不推荐 3.快 ...
- 用Java写一个生产者-消费者队列
生产者消费者的模型作用 通过平衡生产者的生产能力和消费者的消费能力来提升整个系统的运行效率,这是生产者消费者模型最重要的作用. 解耦,这是生产者消费者模型附带的作用,解耦意味着生产者和消费者之间的联系 ...
- Luogu P3802 小魔女帕琪
P3802 小魔女帕琪 题目背景 从前有一个聪明的小魔女帕琪,兴趣是狩猎吸血鬼. 帕琪能熟练使用七种属性(金.木.水.火.土.日.月)的魔法,除了能使用这么多种属性魔法外,她还能将两种以上属性组合,从 ...
- CentOS 6磁盘配额
可以指定用户能超过其配额限制.如果不想拒绝用户对卷的访问但想跟踪每个用户的磁盘空间使用情况,启用配额而且不限制磁盘空间的使用是非常有用的.也可指定不管用户超过配额警告级别还是超过配额限制时是否要记录事 ...
- CCF201609-2 火车购票 java(100分)
试题编号: 201609-2 试题名称: 火车购票 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配. 假设一 ...
- python3中整数和小数的转换
在整数除法中,除法(/)总是返回一个浮点数,如果只想得到整数的结果,丢弃可能的分数部分,可以使用运算符 // : >>> 17 / 3 # 整数除法返回浮点型 5.666666666 ...
- LINUX-RPM 包 - (Fedora, Redhat及类似系统)
rpm -ivh package.rpm 安装一个rpm包 rpm -ivh --nodeeps package.rpm 安装一个rpm包而忽略依赖关系警告 rpm -U package.rpm 更新 ...
- graph.h
#ifndef _GRAPH_#define _GRAPH_#include<stdio.h>#include<stdlib.h>#include<string.h> ...
- 威纶通 与 信捷XC\XD系列PLC 通讯
第一次使用信捷XD系列PLC正式做个项目,用的触摸屏为威纶通的 MT6071iP (注意:下面内容同样适用于 信捷XC系列PLC ,除信捷XC与XD系列编程软件不一样,其余接线设置实测均一样 ) 目前 ...