射频识别技术漫谈(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协议的芯片 ...
随机推荐
- Android:使用ViewPager实现左右滑动切换图片(图上有点点)
在以下实例的基础上加上点点 Android:使用ViewPager实现左右滑动切换图片 (简单版) 效果预览: 因为要把点点放图片上,所以修改布局为相对布局: <?xml version=&qu ...
- classpath、path、JAVA_HOME的作用及JAVA环境变量配置
CLASSPATH是什么?它的作用是什么? 它是javac编译器的一个环境变量.它的作用与import.package关键字有关.当你写下improt java.util.*时,编译器面对import ...
- Android 对话框用法
来自:http://www.cnblogs.com/salam/archive/2010/11/15/1877512.html Activities提供了一种方便管理的创建.保存.回复的对话框机制,例 ...
- Python生成器与yield
列表推导与生成器表达式 当我们创建了一个列表的时候,就创建了一个可以迭代的对象: >>> squares=[n*n for n in range(3)] >>> f ...
- 浩顺AC671指纹考勤机二次开发(demo)
关于考勤机 AC671,是新换的机器,以前的那部机器,通过网络死活连接不上,换了AC671网络连接是好用了.但是,我要吐槽 浩顺的考勤机应该是卖了很多了吧,可是自带的软件太不给力,最后分析出来的数据一 ...
- Android开发之点击两次Back键退出App
Back按键的方法是onKeyDown()方法,重写该方法就可以改变back按键的作用. 实现点击两次Back按键退出app,有两种方法: 方法1. private static boolean is ...
- 函数buf_LRU_get_free_block
/******************************************************************//** Returns a free block from th ...
- 让Windows Server 2008 + IIS 7+ ASP.NET 支持10万个同时请求
具体设置如下: 1. 调整IIS 7应用程序池队列长度 由原来的默认1000改为65535. IIS Manager > ApplicationPools > Advanced Setti ...
- 对于requirejs AMD模块加载的理解
个人人为使用模块化加载的优点有三: 1,以我的项目为例:90%为图表展示,使用的是echarts,此文件较大,requirejs可以在同一个版本号(urlArgs)之下缓存文件,那么我就可以在访问登陆 ...
- linux watchdog demo hacking
/********************************************************************** * linux watchdog demo hackin ...