最近公司的一个小项目,使用的M1卡,这里是对这几天的一个总结!
首先根绝项目提供的手册,简单介绍一下M1卡的构成:
1 :分为16个扇区,每个扇区为4块,每块16个字节,以块为存取单位
2 :每个扇区有独立的一组密码及访问控制
3 :每张卡有唯一序列号,为32位
4 :第0扇区的块0(即绝对地址0块),它用于存放厂商代码,已经固化,不可更改。
5:每个扇区的块0、块1、块2为数据块,可用于存贮数据
6:块号的排序为0~31
1、每个扇区的块0、块1、块2为数据块,可用于存贮数据。
数据块可作两种应用:
★ 用作一般的数据保存,可以进行读、写操作。
★ 用作数据值,可以进行初始化值、加值、减值、读值操作。
2、每个扇区的块3为控制块,包括了密码A、存取控制、密码B。具体结构如下:
|
3、每个扇区的密码和存取控制都是独立的,可以根据实际需要设定各自的密码及存取控制。存取控制为4个字节,共32位,扇区中的每个块(包括数据块和控制块)的存取条件是由密码和存取控制共同决定的,在存取控制中每个块都有相应的三个控制位,定义如下:
块0: C10 C20 C30
块1: C11 C21 C31
块2: C12 C22 C32
块3: C13 C23 C33
三个控制位以正和反两种形式存在于存取控制字节中,决定了该块的访问权限(如
进行减值操作必须验证KEY A,进行加值操作必须验证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 |
|
|
|
|
|
|
|