这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 我的NFC学习之旅(3)---M1卡的存储结构及操作指令

共2条 1/1 1 跳转至

我的NFC学习之旅(3)---M1卡的存储结构及操作指令

专家
2026-07-04 17:55:06     打赏

在众多NFC卡中最常见的是M1卡(Mifare Classic S50)。由资料得知,此类NFC卡的UID保存在第0扇区第0块的签四个字节。既然涉及到了扇区、块的知识,我马上想到的是像SD卡以及Flash存储器件的那种扇区、块知识了。常见的M1卡的存储空间是1KB(1024字节),被组织成一个规整的16扇区,每个扇区4块,每个块16字节形式。

一、M1卡的存储结构

1、0扇区的块0在出厂时就被写入了唯一的厂商代码(UID),并且是固化、不可更改的,相当于这张卡的“身份证号

2、在每个扇区中的第3块(物理顺序上的第四个块)存放着访问这个扇区的存取控制锁。其中:

2.1密码A(KeyA):6个字节

2.2存取控制(Access Bits):4个字节

2.3密码B(KeyA):6个字节

密码A和密码B可以由用户自己设置,分别用于读、写的控制。而存取控制的4个字节用于更加精细的读写控制,用来控制所在扇区的每个块的读写、加减值控制时使用哪个密码的控制。

3、每个扇区的前三个块(编号0、1、2)作为数据块使用。

 二、M1卡的操作指令

在操作上,按照以下流程处理:

1、寻找到场内的卡片并选中它。

2、向目标扇区提供正确的Key A或Key B进行认证。

3、如果认证成功,可以对已认证扇区的数据块进行读(Read)、写(Write)等操作

常见的M1卡的APDU指令有:

功能

APDU指令示例(十六进制)

简要说明

获取UID

FF CA 00 00 00

读取卡片的唯一标识符(UID)。

认证扇区

 (Key A)

FF 86 00 00 05 01 00 [块地址] 60 [6字节密钥]

使用Key A认证指定扇区。[块地址]为扇区尾部块地址(如扇区0的尾部块地址是03),[密钥]为6字节密钥。

读取数据块

FF B0 00 [块地址] 10

读取指定[块地址]的16字节数据

写入数据块

FF D6 00 [块地址] 10 [16字节数据]

向指定[块地址]写入16字节数据。

如果数据块被配置为“数值块”(Value Block)格式,M1卡还支持专用的增量(Increment)、减量(Decrement)和恢复(Restore)指令,用于实现电子钱包等场景。

操作码 (Opcode):增量操作为C1,减量为C0,恢复为C2。

操作数 (Operand):一个4字节的有符号整数,用于指定增减的数值。

再次强调,这些操作指令是通过读卡器(例如RC522读卡器)使用射频通讯模式传递给NFC卡的指令,不是外部设备与读卡器之间的通讯指令。另外不同厂家出的读卡器不同,操作指令也会发生变化。

 





关键词: 懒猫的学习笔记     NFC     M1    

院士
2026-07-05 11:25:05     打赏
2楼

谢谢分享NFC的系列资料。


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]