Mifare系列6-射频卡与读写器的通信(转)

2023-11-21 15:40

本文主要是介绍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 ):将卡置于暂停上作状态



 

转载于:https://www.cnblogs.com/shuk-notes/p/4790052.html

这篇关于Mifare系列6-射频卡与读写器的通信(转)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/403322

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2

flume系列之:查看flume系统日志、查看统计flume日志类型、查看flume日志

遍历指定目录下多个文件查找指定内容 服务器系统日志会记录flume相关日志 cat /var/log/messages |grep -i oom 查找系统日志中关于flume的指定日志 import osdef search_string_in_files(directory, search_string):count = 0

vue2 组件通信

props + emits props:用于接收父组件传递给子组件的数据。可以定义期望从父组件接收的数据结构和类型。‘子组件不可更改该数据’emits:用于定义组件可以向父组件发出的事件。这允许父组件监听子组件的事件并作出响应。(比如数据更新) props检查属性 属性名类型描述默认值typeFunction指定 prop 应该是什么类型,如 String, Number, Boolean,

GPT系列之:GPT-1,GPT-2,GPT-3详细解读

一、GPT1 论文:Improving Language Understanding by Generative Pre-Training 链接:https://cdn.openai.com/research-covers/languageunsupervised/language_understanding_paper.pdf 启发点:生成loss和微调loss同时作用,让下游任务来适应预训

linux中使用rust语言在不同进程之间通信

第一种:使用mmap映射相同文件 fn main() {let pid = std::process::id();println!(

Java基础回顾系列-第七天-高级编程之IO

Java基础回顾系列-第七天-高级编程之IO 文件操作字节流与字符流OutputStream字节输出流FileOutputStream InputStream字节输入流FileInputStream Writer字符输出流FileWriter Reader字符输入流字节流与字符流的区别转换流InputStreamReaderOutputStreamWriter 文件复制 字符编码内存操作流(