射频识别技术漫谈(11)——Mifare系列卡的共性【worldsing笔记】
Mifare是NXP公司生产的一系列遵守ISO14443A标准的射频卡,包Mifare S50、Mifare S70、Mifare UltraLight、Mifare Pro、Mifare Desfire等,由于Mifare的巨大影响力,业内有时把其它公司生产的遵守ISO14443A标准的射频卡也称为“Mifare”,尤其是Mifare S50卡片,几乎就是ISO14443A标准的代言人。
至于“Mifare”这个名字的由来,据说1998年Philips收购了瑞士的米克朗(Mikron)公司,该公司之前开发了一套收费系统叫作MIkron FARE-collection System,即米克朗收费系统,简写为Mifare。
Mifare系列卡片有时也根据卡内使用芯片的不同,把Mifare UltraLight称为MF0,Mifare S50和S70称为MF1,Mifare Pro称为MF2,Mifare Desfire称为MF3。
Mifare系列的共同特征就是遵守ISO14443A国际标准,这些共同特征描述如下:
1.它们都是接近卡PICC(Proximity ICC),读写距离最大10cm。
2.它们的射频频率都是13.56MHz±7KHz。
3.这些卡片都是无源免接触的,能量由读写器产生的射频场提供。
4.读写器产生的射频场的磁场强度在1.5A/m~7.5A/m之间,卡片在这个场强区间内可以连续的正常工作。
5.卡片首先进入读写器的射频场得电完成初始化,之后等待读写器的命令。读写器与卡片的数据交流总是采用RTF模式,即读写器先发出命令,卡片在规定的时间内对命令作出应答,如果读写器没有命令,卡片无论如何也不能先发言。
6.读写器向卡片发送命令使用100% ASK调制的修正米勒(Modified Miller)码,卡片应答时使用副载波调制的曼侧斯特(Manchester)码。
7.卡片与读写器之间通讯的数据速率有4种:106Kbps,212Kbps,424Kbps,847Kbps。但在读卡选择命令(含)之前,通讯速率只能是106Kbps。读卡选择之后,卡片和读写器可以协商使用什么样的速率。106Kbps是怎么来的,它是载波频率13.56MHz除以128得来的,通俗的说法是“载波128分频”。
8.卡片未进入射频场时称为断电(Power-Off)状态,进入射频场得电复位后进入休闲(Idle)状态,收到读写器的呼叫命令后进入准备(Ready)状态,经过防冲突循环被选中后进入激活(Active)状态,在激活状态收到休眠命令或不认识的命令后进入休眠(Halt)状态。
9.这些卡片都有一个全球唯一的序列号,序列号的长度可能是4字节,7字节或10字节。当多张卡片同时进入读写器的射频场时,卡片们遵守面向比特的防冲突机制,由读卡器选出唯一的一张卡片进行操作。读写器操作完一张卡片后,可以发送休眠命令让这张卡片进入休眠状态,而读卡器继续对其他卡片进行操作。
10.这些卡片在卡选择(含)之前的操作步骤都是一样的,卡选择之后的操作就不一样了,比如有的需要验证密码,有的不需要,而且验证密码的方式也有区别。
11.从卡片进入磁场到卡片被选中要经过两步。
第一步是读写器呼叫磁场内的卡片,卡片对呼叫做出应答。
(1)由于磁场内可能有刚进入磁场并得电复位处于休闲状态的卡片,也可能有已经被读写器操作过,被读写器发送休眠命令进入休眠状态的卡片,对这两类不同的卡片,读写器使用两种不同的命令进行呼叫:卡请求(REQA,0x26)和卡唤醒(WAKE-UP,0x52)。
(2)其中卡请求(REQA)只能呼叫处于休闲(Idle)状态的卡片,卡唤醒(WAKE-UP)可以呼叫所有卡片,包括处于休眠(Halt)和休闲状态的卡片。
(3)收到卡呼叫命令后,卡片将对命令做出应答(Answer To Request,ATQA),告诉读写器自己是否遵守面向比特的防冲突机制,如果不遵守,读写器自然就不会往下操作了,除非双方约好了一种特殊的防冲突协议,不过那就不叫“遵守ISO14443A”了。ATQA有两个字节,第一个字节的值没有规定(RFU),第二个字节的高两位b7b6表示卡序列号长度(“00”为4字节,“01”为7字节,“10”为10字节), b5位的值没有规定(RFU),b4-b0表示是否遵守面向比特的防冲突机制,如果遵守,b4-b0必须有且仅有1位为1。通常情况下,Mifare S50的ATQA是0004H,Mifare S70的ATQA是0002H,Mifare UltraLight的ATQA是0044H,Mifare Light的ATQA是0010H,Mifare Desfire的ATQA是0344H。业内习惯称ATQA为卡类型,并且称“Mifare S50的卡类型是0004H,Mifare S70的卡类型是0002H,Mifare UltraLight的卡类型是0044H,Mifare Desfire的卡类型是0344H……”,这种说法其实是不严谨的。已经出现了ATQA为0044H和0344H的卡片,但这种卡片并不是Mifare UltraLight和Mifare Desfire,而是一种新的7字节的Mifare S50。这很正常,因为ISO14443A中规定,ATQA的作用是卡片表明自己是否遵守面向比特的防冲突机制以及自身卡序列号的长度,并不是表示哪种类型的卡片。
(1)之所以把“防冲突”和“选择”放在一块说,是因为二者的命令码是一样的,区别在于命令码后面包含多少位已经确认的卡序列号。
(2)面向比特的防冲突机制每个防冲突循环需要32bit的卡号参加。读写器向所有参加防冲突的卡片发出一个防冲突命令码,并告诉卡片们已经确定了多少位卡序列号,让卡序列号前面部分与读写器发出的已经确认的序列号相同的卡片做出应答。
(3)如果已确认的卡序列号小于32位,就是防冲突命令,卡片将回送除了已确认卡序列号之外的剩余的卡序列号部分;如果已确认的卡序列号等于32位,就是卡选择命令了,被选中的卡片将作出对选择的应答(Select AcKnowledge,SAK)。
(4)防冲突和卡选择命令还有一个区别就是,卡选择命令有CRC_A校验,而防冲突命令没有CRC_A校验。
(5)如果卡片卡号是4个字节,防冲突选择的命令码是0x93。
(6)如果卡片卡号是7个字节,则要进行两个层次(cascade level)的防冲突选择,第一层(cascade level 1)的命令码是0x93;卡号的前3个字节参加;第二层(cascade level 2)的命令码是0x95,卡号的后4个字节参加。
(7)如果卡片卡号是10个字节,则要进行三个层次(cascade level)的防冲突选择,第一层(cascade level 1)的命令码是0x93,卡号的前3个字节参加;第二层(cascade level 2)的命令码是0x95,卡号的第4、5、6个字节参加;第三层(cascade level 3)的命令码是0x97,卡号的后4个字节参加。
(8)大家可能已经发现,前面说每个防冲突循环需要32bit的卡号参加,后面又说可以3个字节(24bit)参加,是不是前后矛盾?是的,为了凑够32bit,如果只有3个字节的卡号参加防冲突循环,则卡片自动在3个卡号字节之前增加一个字节0x88,这个0x88被称为层标签(cascade tag),从而满足防冲突循环对32bit卡号的要求。
(9)每一层的防冲突选择循环如果卡被选中,卡片都要返回“选择应答”(Select AcKnowledge,SAK),告诉读写器是否需要下一层的防冲突选择循环以及是否遵守ISO14443-4。
12.最后再次强调以上就是“共同遵守ISO14443A”的含义,也就是从卡片进入磁场到卡片被选中,它们的操作流程都是一样的。之后大家便分道扬镳,有的继续遵守ISO14443-4,有的开始验证密码,有的就直接可以进行读写操作了。
本文来自新浪网
射频识别技术漫谈(11)——Mifare系列卡的共性【worldsing笔记】的更多相关文章
- 射频识别技术漫谈(11)——Mifare系列卡的共性
Mifare是NXP公司生产的一系列遵守ISO14443A标准的射频卡,包Mifare S50.Mifare S70.Mifare UltraLight.Mifare Pro.Mifare Desfi ...
- 射频识别技术漫谈(12)——三次相互认证【worldsing笔记】
射频识别系统中由于卡片和读写器并不是固定连接为一个不可分割的整体,二者在进行数据通讯前如何确信对方的合法身份就变得非常重要.根据安全级别的要求不同,有的系统不需认证对方的身份,例如大多数的TTF模式的 ...
- 射频识别技术漫谈(13)——Mifare S50与S70【worldisng笔记】
Mifare S50和Mifare S70又常被称为Mifare Standard.Mifare Classic.MF1,是遵守ISO14443A标准的卡片中应用最为广泛.影响力最大的的一员.而Mif ...
- 射频识别技术漫谈(14)——S50与S70存取控制【worldsing笔记】
存取控制指符合什么条件才能对卡片进行操作. S50和S70的块分为数据块和控制块,对数据块的操作有"读"."写"."加值"."减值 ...
- 射频识别技术漫谈(20)——RC系列射频接口芯片
目前基于13.56MHz的射频识别技术主要有ISO14443A.ISO14443B.ISO15693和FELICA技术.针对13.56MHz的射频识别技术,NXP开发了一系列名字以RC(Radio C ...
- 射频识别技术漫谈(18)——Mifare Desfire
Mifare DESFire(MF3 IC D40/D41,本文以D40为例)遵守14443 TypeA协议,卡内的数据以文件形式存储,所以有人认为它是准CPU卡,主要用于安全性要求较高的非接触式领 ...
- 射频识别技术漫谈(13)——Mifare S50与Mifare S70
Mifare S50和Mifare S70又常被称为Mifare Standard.Mifare Classic.MF1,是遵守ISO14443A标准的卡片中应用最为广泛.影响力最大的的一员.而Mif ...
- 射频识别技术漫谈(21)——RC系列射频芯片的天线设计
个人感觉使用RC系列射频芯片开发卡片读写器,主要的关键点有两个,分别涉及硬件和软件.软件上的关键是如何正确设置RC系列射频芯片内部的64个寄存器,硬件上的关键则是RC系列射频芯片的天线设计.天线提供了 ...
- 射频识别技术漫谈(16)——Mifare UltraLight
Mifare UltraLight又称为MF0,从UltraLight(超轻的)这个名字就可以看出来,它是一个低成本.小容量的卡片.低成本,是指它是目前市场中价格最低的遵守ISO14443A协议的芯片 ...
随机推荐
- thinkphp多表关联并且分页
$db_prefix = C('DB_PREFIX'); $Model = new Model(); $data = $Model->table("{$db_prefix}ordern ...
- 网上图书商城项目学习笔记-014购物车模块页面javascrip
一.流程分析 二.代码 1.view层 (1)list.jsp <%@ page language="java" import="java.util.*" ...
- ANDROID_MARS学习笔记_S01_011ProgressBar
文档是这样来设置样式 <ProgressBar android:layout_width="wrap_content" android:layout_height=" ...
- 关于C的一些理解
关于字符数组和字符指针 关于相互赋值问题一只有疑问,其实是自己搞不清指针和地址的关系.地址可以指向一块内存但是不一定存在于内存,比如字符数组名,数组名是地址,但是不实际存在于内存中,无法修改,而字符指 ...
- Linux下实现C++类的动态链接
1. 背景 在java中,jvm支持类的动态链接(Class.forName(String className)),用起来也很方便.动态链接是实现IOC(Inversion of Control,控制 ...
- 从今天起,正式步入cnblogs,向曾经的脚印说声对不起!
步入这个行业也好多年了,从来没有定居过一个地方. 看过很多前辈们留下的资料,对后者门(其中还有我)留下很多珍贵的东西. 所以,我要向前辈学习,壮大自己,在学习的同时,不要忘记帮助别人. 对曾经我留下的 ...
- 如何从Linux源码获知版本信息
/*************************************************************************** * 如何从Linux源码获知版本信息 * 声明 ...
- Kernel 中的 GPIO 定义和控制
最近要深一步用到GPIO口控制,写个博客记录下Kernel层的GPIO学习过程! 一.概念 General Purpose Input Output (通用输入/输出)简称为GPIO,或 总线扩展器. ...
- CF GYM 100703K Word order
题意:给一个字符串,其中只有F.A.N三种字母,问最少交换多少次能使所有的A在所有F之前. 解法:贪心.先预处理每位的左边有多少F右边有多少A,对于每位A必须至少向左交换的次数为它左面的F个数,而对于 ...
- mina2
远程通信 Mina2 学习笔记 作者:李少华 邮箱:xiaosanshaoli@126.com QQ:305409913 2010-12-23 初稿 引言... 1 一. Mina ...