自己搜索资料总结的关于>>M1卡详细信息介绍<<,希望能提供给在做关于M1卡相关实验的伙伴们一个帮助。
M1卡说明
M1卡的容量:1KB。
每张卡都有唯一的序列号,为 32位。(一般在第 0扇区的第0块开头UID)
工作频率:13.56MHz,通信速率:106KBPS。
M1卡分为16个数据存储区,通常称为”扇区“,编号是”0“到”15“。
每个扇区又分为 4 个存储单元,我们称为”块“,在 M1 卡中数据存储的最小单位就是”块“,
每一块有16字节(16B),用来存放数据。
M1卡存储结构:
第0扇区的块0:用于存放厂商代码,已经固化,不可更改。
在全扇区加密时,通常用前三个”块“(0,1,2 号块)存放数据,用最后一个”块“(3 号块)存放密码。
其中,密码分为 A 密码和 B 密码:前 6 个字节存放 A 密码,中间 4 字节为控制字段,后 6字节存放B密码。
例如:
A0 A1 A2 A3 A4 A5 FF 07 80 69 B0 B1 B2 B3 B4 B5
密码A(6字节) |存取控制(4字节) |密码B(6字节)
注意:!!!!!!!!!!每个扇区的密码都是独立的。也就是说可以为 16 个扇区设置 16 个不同
(相同)的密码。
数据块可作两种应用:
1.用作一般的数据保存,可以进行读,写操作。
2. 用 作 数 值 块 , 可 以 进 行 初 始 化 值 , 加 值 , 减 值 , 读 值(INCREMENT/DECREMENT/TRANSFER/RESTORE)操作。
【重点】
扇区中的每个块(包括数据块和控制块)的存取条件是由密码和存取控制共同决定的,在存
取控制中每个块都有相应的三个控制位,用以决定某数据块或控制块的读写条件,定义为CX
x y 如下:
块0: C10 C20 C30
块1: C11 C21 C31
块2: C12 C22 C32
块3: C13 C23 C33
三个控制位以正和反两种形式存在于存取控制字节(6,7,8,9 字节)中,决定了该块的访问权限(如 进行减值及初始化操作必须验证 KEY A,进行加值操作必须验证 KEY B,等等)。
其中:CX 代表每块控制位号(C1~C3),x代表某块所属扇区号(0~15),y代表该扇区内某块号。例如C1 x 2 即为x扇区内块2的第1控制位。
【重点】主要需要了解的表有:
数据块(0块,1块,2块)的存储控制权限表:
(KeyA|B表示密码A 或密码B,Never表示任何条件下不能实现)。
控制块(块3)的存取控制权限表:
例如:以常用设置"08 77 8F 69"控制条件为例,先搞清楚它――具有的访问权限。
1、对"08 77 8F 69"值进行计算,该值定位于各区块 3 的 6, 7, 8, 9 四个字节内,字节 6=08,
字节 7=77, 字节 8=8F, 字节 9=69(默认值,不予计算)。
2、例如:字节 6=08,对应其二进制值=00001000, 则对 6,7,8 这三个字节进行二进制转换结果见下表:
② 、高位和低位的顺序是不一样的。高位从上向下是 C2,C1,C3。低位是 C1,C3,C2
5.查对访问权限(数据存取控制依照“数据块(0块,1块,2块)的存储控制权限表“,块 3 存取控制依照表控制块(块3)的存取控制权限表),该例"08 77 8F 69"的访问权限为:
◆ 块 3 = 011:权限为:KeyA,KeyB 均不可读,验证 KeyB 正确后可改写 KeyA 和KeyB,验证 KeyA 或 KeyB 正确后可读"控制位"。在此可见密钥 KeyB 的重要性,KeyB 不正确是无法看到块 3 控制值,更无法修改密钥。
◆ 块 2 = 块 1 = 块 0 = 110:权限为:验证 KeyA 或 KeyB 后可读该块数据,减值以及初始化值,只有验证 KeyB 正确后才可改写该块数据,在此可以看到密钥 KeyB 对改写数据块也起着关键性作用。
总结:各块(包括数据块 0,1,2或者控制块 3)具有的访问权限是通过块 3的存取控制字节按照表2和表4的算法,然后算出各块的3个控制位的值,然后通过查询“数据块(0 块,1 块,2 块)的存储控制权限表”和“控制块(块 3)的存取控制权限表”来得出各块对应的访问权限。
完整的pdf格式文档51黑下载地址:
M1卡说明.pdf
(433.49 KB, 下载次数: 52)
|