Midfare one(M1卡)

Midfare one(M1卡)

参考: [https://blog.csdn.net/xingyuan1hao/article/details/50879617]

一、M1卡

​ 可读写的非接触IC卡,市面上绝大部分产品选用的是Philips的Mifare One芯片(有人简称M1),所以,我们叫他Mifare one卡,或者Mifare卡,或者叫M1卡。

​ Mifare One 卡有两种格式,其中ISO1443 TYPE A 格式应用最为普及,广泛用于 门禁 考勤 消费 等一卡通场合。TYPE B格式用于身份证 地铁公交卡等一些场合。

​ ISO14443 TPYEA类卡,没有CPU,安全性也不高。CPU卡,是ISO1443 TPYE B,有CPU,安全性高.

​ ISO14443 TPYEA类卡又分为S50和S70两种。这里主要介绍S50卡。

二、S50卡

1. 主要指标

分为16(S50)个扇区,每个扇区为4块,每块16个字节,以块为存取单位

每个扇区有独立的一组密码及访问控制

每张卡有唯一序列号,为32位

2. 存储结构

​ (1) M1卡分为16个扇区,每个扇区由4块(块0、块1、块2、块3)组成,(我们也将16个扇区的64个块按绝对地址编号为0~63,存贮结构如下图所示:

扇区0

块0

数据块

0

块1

数据块

1

块2

数据块

2

块3

密码A 存取控制 密码B

控制块

3

扇区1

块0

数据块

4

块1

数据块

5

块2

数据块

6

块3

密码A 存取控制 密码B

控制块

7

∶ ∶ ∶

扇区15

0

数据块

60

1

数据块

61

2

数据块

62

3

密码A 存取控制 密码B

控制块

63

​ (2)第0扇区的块0(即绝对地址0块),它用于存放厂商代码,已经固化,不可更改。

​ (3)每个扇区的块0、块1、块2为数据块,可用于存贮数据。

​ 数据块可作两种应用:

​ ★ 用作一般的数据保存,可以进行读、写操作。

​ ★ 用作数据值,可以进行初始化值、加值、减值、读值操作。

​ (4)每个扇区的块3为控制块,包括了密码A、存取控制、密码B。具体结构如下:

​ 密码A(6字节) 存取控制(4字节) 密码B(6字节)

​ (5)每个扇区的密码和存取控制都是独立的,可以根据实际需要设定各自的密码及存取控制。存取控制为4个字节,共32位,扇区中的每个块(包括数据块和控制块)的存取条件是由密码和存取控制共同决定的,在存取控制中每个块都有相应的三个控制位,定义如下:

​ 块0: C10 C20 C30

​ 块1: C11 C21 C31

​ 块2: C12 C22 C32

​ 块3: C13 C23 C33

​ 三个控制位以正和反两种形式存在于存取控制字节中,决定了该块的访问权限(如进行减值操作必须验证KEYA,进行加值操作必须验证KEY B,等等)。三个控制位在存取控制字节中的位置,以块0为例:

​ 对块0的控制:

bit

7

6

5

4

3

2

1

0

字节6

C20_b

C10_b

字节7

C10

C30_b

字节8

C30

C20

字节9

​ ( 注: C10_b表示C10取反 )

存取控制(4字节,其中字节9为备用字节)结构如下所示:

bit

7

6

5

4

3

2

1

0

字节6

C23_b

C22_b

C21_b

C20_b

C13_b

C12_b

C11_b

C10_b

字节7

C13

C12

C11

C10

C33_b

C32_b

C31_b

C30_b

字节8

C33

C32

C31

C30

C23

C22

C21

C20

字节9

​ ( 注: _b表示取反 )

(6)数据块(块0、块1、块2)的存取控制如下:

控制位(X=0..2)

访 问 条 件 (对数据块 0、1、2)

C1X

C2X

C3X

Read

Write

Increment

Decrement, transfer,Restore

0

0

0

KeyA|B

KeyA|B

KeyA|B

KeyA|B

0

1

0

KeyA|B

Never

Never

Never

1

0

0

KeyA|B

KeyB

Never

Never

1

1

0

KeyA|B

KeyB

KeyB

KeyA|B

0

0

1

KeyA|B

Never

Never

KeyA|B

0

1

1

KeyB

KeyB

Never

Never

1

0

1

KeyB

Never

Never

Never

1

1

1

Never

Never

Never

Never

(KeyA|B 表示密码A或密码B,Never表示任何条件下不能实现)

例如:当块0的存取控制位C10 C20 C30=1 0 0时,验证密码A或密码B正确后可读;验证密码B正确后可写;不能进行加值、减值操作。

(7)控制块块3的存取控制与数据块(块0、1、2)不同,它的存取控制如下:

密码A

存取控制

密码B

C13

C23

C33

Read

Write

Read

Write

Read

Write

0

0

0

Never

KeyA|B

KeyA|B

Never

KeyA|B

KeyA|B

0

1

0

Never

Never

KeyA|B

Never

KeyA|B

Never

1

0

0

Never

KeyB

KeyA|B

Never

Never

KeyB

1

1

0

Never

Never

KeyA|B

Never

Never

Never

0

0

1

Never

KeyA|B

KeyA|B

KeyA|B

KeyA|B

KeyA|B

0

1

1

Never

KeyB

KeyA|B

KeyB

Never

KeyB

1

0

1

Never

Never

KeyA|B

KeyB

Never

Never

1

1

1

Never

Never

KeyA|B

Never

Never

Never

例如:当块3的存取控制位C13 C23 C33=1 0 0时,表示:

​ 密码A:不可读,验证KEYA或KEYB正确后,可写(更改)。

​ 存取控制:验证KEYA或KEYB正确后,可读、可写。

​ 密码B:验证KEYA或KEYB正确后,可读、可写。

三、S70

1. 存储结构

Mifare one S70(共40个扇区)

当扇区号<=31时,块0~块2为数据块;块3为密钥块;

当扇区号>31时,块0~块14为数据块;块15为密钥块.

相关推荐