Mifare系列6-射频卡与读写器的通信(转)
文/闫鑫原创转载请注明出处http://blog.csdn.net/yxstars/article/details/38085415
1. 复位应答(Answer to request)
读写器呼叫磁场内的卡片,卡片对呼叫做出应答。对刚进入磁场得到电复位处于休闲状态的卡片,卡请求(REQA,0x26);对于已进行过读写操作并进入 休眠状态的卡片,卡唤醒(WAKE-UP,0x52)。其中卡请求(REQA)只能呼叫处于休闲(Idle)状态的卡片,卡唤醒(WAKE-UP)可以呼 叫所有卡片,包括处于休眠(Halt)和休闲状态的卡片。
收到卡呼叫命令后,卡片将对命令做出应答(AnswerTo Request,ATQA), 读写器以特定的协议与它通讯,从而确定该卡是否为M1射频卡,即验证卡片的卡型。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。
2. 防冲突机制 (Anticollision Loop)
当
有多张卡进入读写器操作范围时,防冲突机制会从其中选择一张进行操作,未选中的则处于空闲模式等待下一次选卡,该过程会返回被选卡的序列号。该过程返回一
个被选中的卡的序列号。序列号Serial Number存储在卡片的Block
0中,共有5个字节,实际有用的为4个字节,另一个字节为序列号Serial
Number的校验字节,。智能的反冲突功能允许同一工作区域中有不止一张卡同时工作反冲突算法每次只选择一张卡确保对被选中的卡正确执行操作而且同一区
域中的其他卡不会破坏数据。
3. 选择卡片(Select Tag)
选择被选中的卡的序列号,并同时返回卡的容量代码。选择被选中卡的序列号,并同时返回卡的容量代码Tag
Size(前"08",代表容量返回值,现已改"88",无特殊意义)。RWD使用选择卡命令选中其中一张卡进行确认和存储器相关操作卡返回Answer
To Select ATS码=08h, RWD通过ATS可以确定被选中的卡的类型。
4. 三次互相确认(3 Pass Authentication)
Mifare系列产品不仅卡片要认证读写器的身份,读写器也要认证卡片的身份,这种认证称为相互认证。常见的认证方法是使用密码或者叫口令。口令一旦被
听到,就会泄露。而密码没有规律性,而且可通过随机数加密,所以相互认证是利用随机数加密验证的。Mifare系列所采用的相互认证机制被称为“三次相互
认证”,如下图所示。
a) 读写器指定要访问的区,并选择密钥A或B。
b) 卡从位块读区密钥和访问条件。然后,卡向读写器发送随机数B。(第一轮)
c) 读写器利用密钥和随机数计算回应值。回应值A连同读写器的随机数B,发送给卡(第二轮)。
d) 卡通过与自己的随机数比较,验证读写器的回应值A,再计算回应值并发送(第三轮)。
e) 读写器通过比较,验证卡的回应值。
在第一个随机数传送之后,卡与读写器之间的通讯都是加密的。认证的过程中多次提到“事先约定的算法”,到底是什么样的算法呢。这个没有具体规定,但有一
个要求是必须的,就是这个算法一定要有密码和随机数的参与。认证过程中的任何一环出现差错,整个认证将告失败。必须从新开始。
5. 存储器操作
三次相互认证后可执行下列操作:
· 读(Read):读数据块
· 写(Write):写数据块
· 减值(Decrement):减少数据块内的数值,并将结果保存在临时内部数据寄存器中。
· 加值(Increment):增加数据块内的数值,并将结果保存在数据寄存器中。
· 转存(Restore):将临时内部数据寄存器的内容写入数值块。
· 暂停(Halt ):将卡置于暂停上作状态
Mifare系列6-射频卡与读写器的通信(转)的更多相关文章
- MIFARE系列6《射频卡与读写器的通信》
1. ATR(Answer to request) 读写器呼叫磁场内的卡片.卡片对呼叫做出应答. 对刚进入磁场得到电复位处于休闲状态的卡片,卡请求(REQA,0x26):对于已进行过读写操作并进入休眠 ...
- MIFARE系列6《射频卡与读写器的通讯》
1. 复位应答(Answer to request) 读写器呼叫磁场内的卡片,卡片对呼叫做出应答.对刚进入磁场得到电复位处于休闲状态的卡片,卡请求(REQA,0x26):对于已进行过读写操作并进入休眠 ...
- MIFARE系列3《卡能源和数据传递》
在MIFARE卡中,能量和数据通过天线传输,卡中天线为几匝线圈,直接连接到芯片上,不再需要额外的组件.线圈嵌入塑料中,形成了一个无源的非接触卡. 读卡器向IC发一组固定频率的电磁波,卡内有一个IC串联 ...
- Mifare系列2-非接触卡标准(转)
本文转自 文/闫鑫原创转载请注明出处http://blog.csdn.net/yxstars/article/details/380799 根据信号发送和接收方式的不同,ISO/IEC14443-3定 ...
- MIFARE系列2《非接触卡标准》
根据信号发送和接收方式的不同,ISO/IEC14443-3定义了TYPEA.TYPEB两种卡型.它们的不同主要在于载波的调制深度及二进制数的编码方式.从读写机具向卡传送信号时,二者是通过13.56Mh ...
- 射频识别技术漫谈(11)——Mifare系列卡的共性【worldsing笔记】
Mifare是NXP公司生产的一系列遵守ISO14443A标准的射频卡,包Mifare S50.Mifare S70.Mifare UltraLight.Mifare Pro.Mifare Desfi ...
- 射频识别技术漫谈(11)——Mifare系列卡的共性
Mifare是NXP公司生产的一系列遵守ISO14443A标准的射频卡,包Mifare S50.Mifare S70.Mifare UltraLight.Mifare Pro.Mifare Desfi ...
- IC卡接口芯片TDA8007的读写器设计
摘要:阐述T=0传输协议,给出IC卡读写器中使用的IC卡APDU指令流程和原理框图:重点介绍其中的IC卡接口芯片Philips的TDA8007,给出通过TDA8007对CPU IC卡上下电过程.具体程 ...
- RC522射频卡读写模块驱动(仅读取)
目录 说明 测试结果 main RC522.h RC522.c 说明 更改了网上的源代码,仅保留了读取序列号并通过串口回传的功能.版本号:V1 感谢 https://blog.csdn.net/qq_ ...
随机推荐
- MAC使用MAMP构建自签名HTTPS环境
一.生成HTTPS自签名证书 1.下载最新的openssl的安装包,下载地址:https://www.openssl.org/source/ 2.解压最新版openssl,可以直接双击使用MAC自带的 ...
- (转)SVN服务器搭建和使用(二)
上一篇介绍了VisualSVN Server和TortoiseSVN的下载,安装,汉化.这篇介绍一下如何使用VisualSVN Server建立版本库,以及TortoiseSVN的使用. 首先打开Vi ...
- Andorid项目创建AVD时,OK按钮无法点亮
经上网查证,发现原因在于CPU/ABI选项无法选择,并显示“No system images installed for this target”,也就是没有适合的系统镜像,通过与安装好了的ADT-b ...
- 基于Java Mina框架的部标808服务器设计和开发
在开发部标GPS平台中,部标808GPS服务器是系统的核心关键,决定了部标平台的稳定性和行那个.Linux服务器是首选,为了跨平台,开发语言选择Java自不待言. 我们为客户开发的部标服务器基于Min ...
- Android 广播 BroadcastReceiver
Android 系统里定义了各种各样的广播,如电池的使用状态,电话的接收和短信的接收,开机启动都会产生一个广播.当然用户也可以自定义自己的广播. 既然说到广播,那么必定有一个广播发送者,以及广播接收器 ...
- 控制反转Inversion of Control (IoC) 与 依赖注入Dependency Injection (DI)
控制反转和依赖注入 控制反转和依赖注入是两个密不可分的方法用来分离你应用程序中的依赖性.控制反转Inversion of Control (IoC) 意味着一个对象不会新创建一个对象并依赖着它来完成工 ...
- Windows平板优化设置
低于千元的windows平板,和iPad差异主要在于做工方面,以及Modern软件的欠缺,续航约5小时,但其可玩性和扩展性更好. 若将其视为平板附送了桌面电脑的功能,花费一定时间容易定制成适合个人使用 ...
- YbSoftwareFactory 代码生成插件【十四】:通过 DynamicLinq 简单实现 N-Tier 部署下的服务端数据库通用分页
YbSoftwareFactory 的 YbRapidSolution for WinForm 插件使用CSLA.NET作为业务层,CSLA.NET的一个强大的特性是支持 N-Tiers 部署.只需非 ...
- c#控制台調用SSIS包互传值
有时候不仅仅需要在内部执行package包,多数情况下,是需要在外部进行调用,比如,需要一个批处理或者控制台程序进行外部调用SSIS包,而往往这个包所配置的连接字符串是经过加密处理的,所以当外部调用S ...
- gitlab多人协作开发
gitlab多人协同工作 本文为亨利向<Git权威指南>的作者蒋鑫老师的答疑邮件写成. 这里特别感谢蒋鑫老师对我询问gitlab的协同工作流程问题的详细解答. 蒋鑫老师的细致专业的解答让我 ...