3.物联网射频识别,(高频)RFID应用ISO14443-2协议,(校园卡)Mifare S50卡
一。ISO14443-2协议简介
1.ISO14443协议组成及部分缩略语
(1)14443协议组成(下面的协议简介会详细介绍)
14443-1 物理特性
14443-2 射频功率和信号接口
14443-3 初始化和防冲突 (分为Type A、Type B两种接口)
14443-4 传输协议 (一般不使用,只有哪些银行卡刷卡等重要领域的器件才需要使用)
(2)针对前两节的名词,对应的英语缩略语
PCD:近场耦合设备(读写器)
PICC:近场卡或物体(标签)
RF:射频
ASK:振幅键控
OOK:二进制振幅键控
BPSK:二进制相移键控
2.ISO14443-1协议简介
(1)物理特性:ID-1,长86mm,宽54mm,厚0.84mm


(2)ISO14443-2功率接口
频率:13.56MHz±7kHz
工作场强度:Hmin=1.5A/m, Hmax=7.5A/m
(3)ISO14443-2信号接口
问题:如何看懂图?
我们看到的图会有很多英文,但是这个英文很可能是缩略英文,并代表一定的含义。所以我们在看图之前,可以找到他的缩略英文标(或者类似手册),边查边看。
例如上面提到的缩略语。我们在下面经常看到这些缩略语。
PCD-PICC信号接口
接口速率:fc/128=13.56M/128≈106kbps
PICC-PCD信号接口
副载波频率:848kHz
二。ISO14443-3 Type A协议简介
1.ISO14443-3部分缩略语
S:通信开始
E:通信结束
P:校验位,Type A
UID:唯一标识符
2.Type A的帧格式
注意:不需要把他记下来,只需要有印象,主要是观察创作者在对待不同的帧如何规定与处理。
1.短帧
2.标准帧
(1)字节低位在先
(2)校验位P为奇校验,仅仅在PICC到PCD 且速率为106k以上时,最后一个字节的P为偶校验
3.基于位的防冲突帧
3.Type A PICC的状态
这是读写器与标签的工作方式,如果仔细分析我们会消耗大量的时间,并没有太大的必要。主要关注的是别人画流程图的方式:各方面都需要思考,并且把应答的数据也标注出来,使用缩略语使图像变得简洁。
4.Type A 的PCD命令及PICC应答
众多周知,这些缩略语只是标识符,关键是对应的二进制数据。所以需要分配数据的使用。这也是一个开发者需要考虑的内容。
请求(REQA )和唤醒(WUPA)
请求应答(ATQA)
5.补充:Type A 的PCD命令及PICC应答
(1)UID介绍
(2)防冲突(Anticollision)流程
面向比特的防冲突方式
(3)防冲突(Anticollision)命令格式
(4)防冲突(Anticollision)命令中的NVB
(5)防冲突(Anticollision)命令举例
(6)选择(SELECT)和选择应答(SAK)
1.SELECT
2.SAK
三。Mifare S50卡的内部存储结构
Mifare S50卡是一种接触式智能卡,也被称为Mifare Classic卡。它是由NXP公司推出的一种RFID(射频识别)技术的智能卡。Mifare S50卡采用13.56MHz的高频射频技术,具有非接触式读写能力。
Mifare S50卡具有存储和处理数据的能力,可以用于实现安全访问控制、身份验证、电子钱包等功能。它采用ISO 14443A标准,具有16个扇区,每个扇区包含4个块,每个块可以存储16个字节的数据。
Mifare S50卡广泛应用于公共交通、门禁系统、学生卡、员工卡等领域。它具有较高的安全性,支持密码验证和加密传输,能够防止数据泄露和非法复制。
然而,Mifare S50卡也存在一些安全漏洞,容易受到破解和攻击。因此,在实际应用中,需要采取一些额外的安全措施来保护卡片和数据的安全。
以下主要是对Mifare S50卡的内部分析。Mifare S50卡存储结构,控制块的使用等。
1.Mifare系列介绍
NXP公司出品的系列遵循ISO14443-A标准的射频卡

2.Mifare S50卡存储结构
(1)Mifare S50卡存储结构

(2)Mifare S50卡数据块的值结构
1. 值(Value):一个带符号的4 字节值,小端模式(低地址存最低值)。
2.值按2次正常和1次取反(~表示)存储了3次。
3.地址(Addr)表示1字节的块编号,分2次正常和2次取反值存储。
4.可以执行Decrement、Increment、Transfer、Restore命令。
(3)Mifare S50卡每个扇区的控制块(块3)
一扇一密,便于一卡多用
每个扇区有独立的控制字,每块由3位组合C1x C2x C3x控制
(4)Mifare S50卡扇区数据块(块0~2) 访问权限
例如:当块0的存取控制位C10 C20 C30=100时,验证密钥A或密钥B后可读;验证密钥B后可写;不能进行值类操作。
(5)Mifare S50卡扇区控制块(块3) 访问权限
例如:当块3的控制位——C13 C23 C33 = 0 0 1时,表示:密钥A:不可读,验证KEYA正确后,可写 ; 控制字段:验证KEYA后,可读、可写;密钥B:验证KEYA正确后,可读、可写。
四。Mifare S50卡的访问流程
1.Mifare S50卡的访问流程

Mifare S50卡三次认证流程
1.挑战值:RB, B产生的随机数;RA A产生的随机数。
2.TokenAB, A对随机数RB使用认证的密钥进行加密计算后的应答值。
3.TokenBA, B对随机数RA使用认证的密钥进行加密计算后的应答值。
4.加密算法为Mifare未公开的“crypto1”,后两步的通信数据是加密的。
2.Mifare S50卡的命令
Mifare S50卡的命令
Mifare S50卡的ACK及NAK应答
S50Authentication命令流程
Addr指块的顺序编号0~63
不切换扇区,同一个扇区只需要认证一次
Read命令流程
Write命令流程
Increment Decrement Restore 命令流程
Transfer命令流程
相关文章:
3.物联网射频识别,(高频)RFID应用ISO14443-2协议,(校园卡)Mifare S50卡
一。ISO14443-2协议简介 1.ISO14443协议组成及部分缩略语 (1)14443协议组成(下面的协议简介会详细介绍) 14443-1 物理特性 14443-2 射频功率和信号接口 14443-3 初始化和防冲突 (分为Type A、Type B两种接口&…...
【IDEA】IDEA 单行注释开头添加空格
操作 打开 IDEA 的 Settings 对话框(快捷键为CtrlAltS);在左侧面板中选择Editor -> Code Style -> Java;在右侧面板中选择Code Generation选项卡;将Line comment at first column选项设置为false使注释加在行开…...
三等分功分器[波导]设计详细教程
想必大家通过阅读相关文献可以发现三等分实现可以有很多不同的方法,这里采用的是先不等分再等分的方式,仅供参考。 主要指标 中心频率为280GHz,采用WR-3频段的标准波导,将2:1不等功率分配耦合器与3dB等功率分配耦合器级联&#…...
Mysql分库分表
1.原理 2.Sharding JDBC 官网https://shardingsphere.apache.org/ 2.1 水平拆分 创建一个新的springboot项目 导入依赖,直接将原本的dependencies给覆盖掉 <dependencies><!-- ShardingJDBC依赖 --><dependency><groupId>org.apache.shardings…...
【算法学习】-【双指针】-【复写零】
LeetCode原题链接:1089. 复写零 下面是题目描述: 给你一个长度固定的整数数组 arr ,请你将该数组中出现的每个零都复写一遍,并将其余的元素向右平移。 注意:请不要在超过该数组长度的位置写入元素。请对输入的数组 …...
【算法优选】双指针专题——叁
文章目录 😎前言🌳[两数之和](https://leetcode.cn/problems/he-wei-sde-liang-ge-shu-zi-lcof/)🚩题目描述:🚩算法思路:🚩算法流程:🚩代码实现 🎄[三数之和]…...
Java栈的压入、弹出序列(详解)
目录 1.题目描述 2.题解 方法1 方法2 1.题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序…...
RabbitMQ学习笔记(消息发布确认,死信队列,集群,交换机,持久化,生产者、消费者)
MQ(message queue):本质上是个队列,遵循FIFO原则,队列中存放的是message,是一种跨进程的通信机制,用于上下游传递消息。MQ提供“逻辑解耦物理解耦”的消息通信服务。使用了MQ之后消息发送上游只…...
PyTorch - 模型训练损失 (Loss) NaN 问题的解决方案
欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/133378367 在模型训练中,如果出现 NaN 的问题,严重影响 Loss 的反传过程,因此,需要加入一些微小值…...
8、Nacos服务注册服务端源码分析(七)
本文收录于专栏 Nacos 中 。 文章目录 前言确定前端路由CatalogController.listDetail()ServiceManager总结 前言 前文我们分析了Nacos中客户端注册时数据分发的设计链路,本文根据Nacos前端页面请求,看下前端页面中的服务列表的数据源于哪里。 确定前端…...
MySQL使用Xtrabackup在线做主从
1、主库上操作 1.1前提 172.16.11.2(主库) 172.16.11.4(从库) 在执行备份之前,确保数据库没有锁定,以避免备份期间的任何写操作。 确保主库上的 MySQL 服务器正在运行,以便备份数据的一致性。…...
scala基础入门
一、Scala安装 下载网址:Install | The Scala Programming Language ideal安装 (1)下载安装Scala plugins (2)统一JDK环境,统一为8 (3)加载Scala (4)创建工…...
【Java-LangChain:面向开发者的提示工程-5】推断
第五章 推断 推断任务可以看作是模型接收文本作为输入,并执行某种分析的过程。其中涉及提取标签、提取实体、理解文本情感等等。如果你想要从一段文本中提取正面或负面情感,在传统的机器学习工作流程中,需要收集标签数据集、训练模型、确定如…...
【C++】手撕vector(vector的模拟实现)
手撕vector目录: 一、基本实现思路方针 二、vector的构造函数剖析(构造歧义拷贝构造) 2.1构造函数使用的歧义问题 2.2 vector的拷贝构造和赋值重载(赋值重载不是构造哦,为了方便写在一起) 三、vector的…...
智能指针那些事
《Effective Modern C》学习笔记之条款二十一:优先选用std::make_unique和std::make_shared,而非直接new - 知乎...
Fiddler抓取手机https包的步骤
做接口测试时,有时我们需要使用fiddler进行抓包分析,那么如何抓取https包。主要分为以下七步: 1.设置fiddler选项:Tools->Options,按如下图勾选 2.下载并安装Fiddler证书生成器 下载地址:http://www.telerik.com/…...
idea没有maven工具栏解决方法
背景:接手的一些旧项目,有pom文件,但是用idea打开的时候,没有认为是maven文件,所以没有maven工具栏,不能进行重新加载pom文件中的依赖。 解决方法:选中pom.xml文件,右键 选择添加为…...
levelDB引擎
一、背景 1.1、影响磁盘性能的因素: 主要受限于磁盘的寻道时间,优化磁盘数据访问的方法是尽量减少磁盘的IO次数。磁盘数据访问效率取决于磁盘IO次数,而磁盘IO次数又取决于数据在磁盘上的组织方式。磁盘数据存储大多采用B树类型数据结构&…...
IM同步服务
设计概述 后台同步方案的设计就是数据存储结构的设计,如何快速体现“信息变化”,如何快速计算出“变化信息”。后台数据存储结构是由同步协议中同步契约决定的。 设计方案 该方案的同步是按照业务粒度来划分,只需要同步sdk要求同步的数据。…...
MySQL 运维常用脚本
常用功能脚本 1.导出整个数据库 mysqldump -u 用户名 -p –default-character-setlatin1 数据库名 > 导出的文件名(数据库默认编码是latin1) mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql 2.导出一个表 mysqldump -u 用户名 -p 数据库名 表名> 导出的文件…...
(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...
如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...
uniapp手机号一键登录保姆级教程(包含前端和后端)
目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号(第三种)后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...
JavaScript 数据类型详解
JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型(Primitive) 和 对象类型(Object) 两大类,共 8 种(ES11): 一、原始类型(7种) 1. undefined 定…...
AI语音助手的Python实现
引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...
深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏
一、引言 在深度学习中,我们训练出的神经网络往往非常庞大(比如像 ResNet、YOLOv8、Vision Transformer),虽然精度很高,但“太重”了,运行起来很慢,占用内存大,不适合部署到手机、摄…...
pycharm 设置环境出错
pycharm 设置环境出错 pycharm 新建项目,设置虚拟环境,出错 pycharm 出错 Cannot open Local Failed to start [powershell.exe, -NoExit, -ExecutionPolicy, Bypass, -File, C:\Program Files\JetBrains\PyCharm 2024.1.3\plugins\terminal\shell-int…...
C++实现分布式网络通信框架RPC(2)——rpc发布端
有了上篇文章的项目的基本知识的了解,现在我们就开始构建项目。 目录 一、构建工程目录 二、本地服务发布成RPC服务 2.1理解RPC发布 2.2实现 三、Mprpc框架的基础类设计 3.1框架的初始化类 MprpcApplication 代码实现 3.2读取配置文件类 MprpcConfig 代码实现…...






































