【STC32G应用】RC522读卡模块操作CPU卡及RATS协议

2024-02-07 05:40

本文主要是介绍【STC32G应用】RC522读卡模块操作CPU卡及RATS协议,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 Python 机器学习入门之pandas的使用


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 系列文章目录
  • 前言
  • 一、STC32G对RC522的驱动程序
  • 二、RATS操作
    • 1.操作顺序
    • 2.PcdRats代码
    • 3.Rats响应数据
  • 总结


前言

提示:这里可以添加本文要记录的大概内容:

最近的一个小项目,通过读卡IC读取CPU卡,当然CPU加密卡是不可能被破解的,所以没有什么好办法,只能通过RATS的方式来读取一些CPU卡的特征,做一些判别。
关于RATS协议借鉴了网上的资料,比较详细:https://www.lmlphp.com/user/83786/article/item/880503/
下面把跟STC32G相关的一些操作分享一下吧。


提示:以下是本篇文章正文内容,下面案例可供参考

一、STC32G对RC522的驱动程序

首先是IO的定义及操作。

//
// IO定义
//
sbit  MCU_SDA   = P0^6;
sbit  MCU_SCK   = P0^7;
sbit  MCU_MOSI  = P1^0;
sbit  MCU_MISO  = P1^1;
sbit  MCU_ISR   = P2^3;
sbit  MCU_RST   = P2^4;#define NSS522_1        MCU_SDA = 1
#define NSS522_0        MCU_SDA = 0#define SCK522_1        MCU_SCK = 1
#define SCK522_0        MCU_SCK = 0#define SI522_1         MCU_MOSI = 1
#define SI522_0         MCU_MOSI = 0#define SO522           MCU_MISO#define RST522_1        MCU_RST = 1
#define RST522_0        MCU_RST = 0

定义好了I/O之后,通过程序初始化I/O口的模式即可。

    P1_MODE_IN_HIZ(GPIO_Pin_1);         //P4.1设置为高阻输入P1_PULL_UP_ENABLE(GPIO_Pin_1);      //P4.1 开启内部上拉P2_MODE_IN_HIZ(GPIO_Pin_3);         //P2.3设置为高阻输入P2_PULL_UP_ENABLE(GPIO_Pin_3);      //P2.3 开启内部上拉P0_MODE_OUT_PP(GPIO_Pin_6|GPIO_Pin_7);  //P0.6 P0.7 设置推挽模式P1_MODE_OUT_PP(GPIO_Pin_0);         //P1.0 设置为准双向口P2_MODE_OUT_PP(GPIO_Pin_4);   //P2.3 P2.4 设置推挽模式MCU_SDA = 1;MCU_SCK = 1;MCU_MOSI = 1;MCU_RST = 1;

这样I/O口的定义就完成,整个的RC522的SPI部分是用I/O口模拟的,这样比较方便,而且可移植性强。

二、RATS操作

1.操作顺序

读卡的操作跟以往的方式相同,首先配置好RC522芯片,之后对线圈上电,之后 PcdRequest,PcdAnticoll,PcdSelect。获取到卡的ID之后,再调用PcdRats获取RATS响应的数据。

2.PcdRats代码

代码如下(示例):

//*************************************************************************
// 函数名	:PcdRats
// 描述		:转入APDU命令格式
// 入口		: 无
// 出口		: DataOut 输出的数据,	Len 输出数据的长度
// 返回		:成功返回MI_OK
//*************************************************************************char PcdRats(unsigned char * DataOut,unsigned char * Len)
{char status = MI_ERR;unsigned int unLen;unsigned char ucComMF522Buf[MAXRLEN];ClearBitMask(Status2Reg,0x08);	// 清空校验成功标志,清除MFCrypto1On位memset(ucComMF522Buf, 0x00, MAXRLEN);ucComMF522Buf[0] = 0xE0;ucComMF522Buf[1] = 0x51;CalulateCRC(ucComMF522Buf,2,&ucComMF522Buf[2]);	// 生成发送内容的CRC校验,保存到最后两个字节status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,4,DataOut,&unLen);// 将收到的卡片类型号保存if (status == MI_OK){Len[0]= unLen/8-2;status = MI_OK;}elsestatus = MI_ERR;return status;          //返回结果
}

3.Rats响应数据

在这里插入图片描述

反馈的数据TL是指数据长度,T0指示了后面数据的格式,TA-TC包含了一些卡的属性特征,例如 位速率 位能力 及通信的一些特征。之后的历史字节,历史字节中包含了之前传输的卡ID。

如果读取不到CPU卡的信息,也可以通过RATS响应的数据做一个简单的筛选。


总结

提示:这里对文章进行总结:

这篇关于【STC32G应用】RC522读卡模块操作CPU卡及RATS协议的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

hdu1394(线段树点更新的应用)

题意:求一个序列经过一定的操作得到的序列的最小逆序数 这题会用到逆序数的一个性质,在0到n-1这些数字组成的乱序排列,将第一个数字A移到最后一位,得到的逆序数为res-a+(n-a-1) 知道上面的知识点后,可以用暴力来解 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#in

zoj3820(树的直径的应用)

题意:在一颗树上找两个点,使得所有点到选择与其更近的一个点的距离的最大值最小。 思路:如果是选择一个点的话,那么点就是直径的中点。现在考虑两个点的情况,先求树的直径,再把直径最中间的边去掉,再求剩下的两个子树中直径的中点。 代码如下: #include <stdio.h>#include <string.h>#include <algorithm>#include <map>#

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

AI行业应用(不定期更新)

ChatPDF 可以让你上传一个 PDF 文件,然后针对这个 PDF 进行小结和提问。你可以把各种各样你要研究的分析报告交给它,快速获取到想要知道的信息。https://www.chatpdf.com/

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。