这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 我的NFC学习之旅(5)---M1卡中控制位的知识

共1条 1/1 1 跳转至

我的NFC学习之旅(5)---M1卡中控制位的知识

专家
2026-07-14 12:39:09     打赏

前面我们已经学习M1卡的存储方面的知识,M1卡的存储空间是1KB(1024字节),被组织成一个规整的16扇区,每个扇区4块,每个块16字节的形式。对于0号扇区,第0块已经被固化为UID,不能被修改。而每个块的3号块内保存的是存取锁,用来决定存取这个扇区的所有块的控制信息,只有前三个块是作为数据块使用的。

图片1.png

存取控制为4个字节,扇区中的每个块(包括数据块和控制块)的存取条件是由密码和存取控制共同决定的,在存取控制中每个块都有相应的三个控制位(C1、C2、C3),定义如下:

0: C10 C20 C30

1: C11 C21 C31

2: C12 C22 C32

3: C13 C23 C33

 

以最常见的默认存取控制字节 FF 07 80 69 为例

字节位置

十六进制

二进制 (Bit 7-0)

说明

字节6

FF

1 1 1 1 1 1 1 1

部分控制位的反码

字节7

07

0 0 0 0 0 1 1 1

包含正码与反码

字节8

80

1 0 0 0 0 0 0 0

部分控制位的正码

字节9

69


(通常为备用,不参与控制位计算)

因此:

C10 = 0000,C10_b = 1111:C1_0=0C1_1=0C1_2=0C1_3=0

C20 = 0000,C20_b = 1111:C2_0=0C2_1=0C2_2=0C2_3=0

C30 = 1000,C30_b =0111:C3_0=0C3_1=0C3_2=0C3_3=1

将关键位提取并还原后,就能得到每个块真实的控制位组合:

0 (数据块): C1_0=0, C2_0=0, C3_0=0

1 (数据块): C1_1=0, C2_1=0, C3_1=0

2 (数据块): C1_2=0, C2_2=0, C3_2=0

3 (控制块): C1_3=0, C2_3=0, C3_3=1

可以看到,块0、1、2的控制位都是0 0 0,而块3(尾块)是0 0 1,它的权限规则完全不同。

接下来看下权限的设置。权限的设置上,对于数据块(0、1、2)和控制块(3),是不同的。

图片4.png

操作说明:

(Read):读一个块;

(Write):写一个块;

加(Increment):对数值块进行加值;

减(decr):对数值块进行减值;

存储(restore):将块中的内容存到数据寄存器中;

传输(transfer):将数据寄存器中的内容写入块中;

图片5.png

这样的话,

1)对于前面的块0、1、2的权限均为000,表示使用KeyA或KeyB可以进行读写,可以进行加减等处理。

2)对于前面的块3的权限为001,表示禁止读取KeyA,可以使用KeyA或KeyB进行写;可以使用KeyA或KeyB对keyB进行读写。

这个控制字很重要,一旦写错了,可能会造成后续再也无法操作这个扇区。





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

共1条 1/1 1 跳转至

回复

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