射频识别技术漫谈(11)——Mifare系列卡的共性
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系列卡的共性的更多相关文章
- 射频识别技术漫谈(11)——Mifare系列卡的共性【worldsing笔记】
Mifare是NXP公司生产的一系列遵守ISO14443A标准的射频卡,包Mifare S50.Mifare S70.Mifare UltraLight.Mifare Pro.Mifare Desfi ...
- 射频识别技术漫谈(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 ...
- 射频识别技术漫谈(13)——Mifare S50与S70【worldisng笔记】
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协议的芯片 ...
- 射频识别技术漫谈(22)——RC系列射频芯片的寄存器操作
前面提到,RC系列内部64个寄存器的正确操作是软件编写的关键.正确设置寄存器首先要做到与寄存器正确通信,其次是要对寄存器写入正确的值. RC系列射频芯片与微控制器的接口有并口和SPI接口两种类型.显然 ...
- 射频识别技术漫谈(14)——Mifare S50与S70的存取控制
存取控制指符合什么条件才能对卡片进行操作. S50和S70的块分为数据块和控制块,对数据块的操作有“读”.“写”.“加值”.“减值(含传输和存储)”四种,对控制块的操作只有“读”和“写”两种. S50 ...
随机推荐
- Nodejs解析HTML网页模块 jsdom
工作需要抓取某些网页,所以今天试用下了node下的jsdom模块.同样功能的还有jquery jsdom https://npmjs.org/package/jsdom API很简单. jsdom.e ...
- 利用jquery写的一个TAB页切换效果
函数如下 /** *切换效果 */ function switab(tab,con,tab_c_css,tab_n_css,no) { $(tab).each(function(i){ if(i == ...
- 关于使用由CA机构(EJBCA)颁发的证书实现SLLSocket双向认证服务端报null cert chain的解决方案
在 SSLSocket实现服务端和客户端双向认证的例子 文章中最后提到使用keytool.exe的自签证书实现双向认证可以,但是使用ejbca生成证书实现SLL Socket的双向认证是服务端老是报错 ...
- 在win7下装ubuntu(硬盘版安装)及遇到的问题
都怪自己弄什么Ubuntu下的Android Studio,因为GFW,gradle总下载不了,用命令行下载一半关机了,然后Ubuntu就这样被我搞残废了.又张罗着重装. 其实就是参照网上的帖子,算是 ...
- iOS内购的订单对应和补单
内购的关键类: 1.SKPayment(SKMutablePayment可将自己的参数一对一与苹果产生的payment对应起来) 2.TransactionObserver:交易状态更新时执行此方法, ...
- 理解ROS的节点(NODE)
经过前面的学习,我们已经知道了如何构建一个ROS的包,这篇博客将介绍ROS中的节点的概念. 在继续之前,请按ctrl+alt+t打开一个终端,在里面输入: sudo apt-get install r ...
- MarkDown使用 (三)表格
MarkDown表格的用法 MarkDown表格的用法 例如: $$ \begin{array}{c|lcr} n & \text{Left} & \text{Center} & ...
- Making your first driver - complete walkthrough(使用VisualDDK)
This article describes how to create, build and debug your first driver using Visual Studio and Visu ...
- liunx 同步时间
ntpdate stdtime.gov.hk (美国) time.nist.gov (复旦)(国内用户推荐) ntp.fudan.edu.cn 微软公司授时主机(美国) time.windows.co ...
- c++实现将表达式转换为逆波兰表达式
https://github.com/Lanying0/lintcode 所属: 数据结构->线性结构->栈 问题: 给定一个表达式字符串数组,返回该表达式的逆波兰表达式(即去掉括号). ...