深圳市兴建博电子有限公司
Shenzhen Super-Jambo Electronics Co.,Ltd

推荐文章
2023-07-22
2023-07-22
2023-02-01
2021-08-20
2021-04-10
2021-04-10
2021-04-10
2021-04-10
2021-04-10
2020-06-09

M1卡片读写资料

发表时间:2021-07-14 12:48
文章附图

所谓的M1芯片,是指菲利浦下属子公司恩智浦出品的芯片缩写,全称为NXP Mifare1系列,常用的有S50及S70两种型号。


M1卡的基本信息:

     容量为8K位EEPROM

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

     每个扇区有独立的一组密码及访问控制 l   每张卡有唯一序列号,为32位

     具有防冲突机制,支持多卡操作

     无电源,自带天线,内含加密控制逻辑和通讯逻辑电路

     数据保存期为10年,可改写10万次,读无限次

     工作温度:-20℃~50℃(湿度为90%) l   工作频率:13.56MHZ

     通信速率:106 KBPS

     读写距离:10 cm以内(与读写器有关)

M1卡的存储结构 :

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

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



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


           数据块可作两种应用:


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

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

       


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


          这个是每个扇区 最后一块的存储控制结构,一共4个字节,例如:(FF 07 80 69) 。 这些数字是16进制的数字,然后一个1byte(字节)=8bits,所以他们的结构如下:



我们知道如果要读取一个扇区的每一块的数据都需要通过KeyA或者KeyB的验证,而厂家生产出来的M1卡默认的控制位为


(FF 07 80 69),默认的KeyA和KeyB为(FFFFFFFFFFFF)。但是这样是非常的不安全的,所以我们需要修改原始密码。原始密码的修改是非常的简单的,因为默认的控制位是(FF 07 80 69),对应的每一块的权限表达为:


首先按照16进制,把控制位解析出来:


16进制转换详解——我们先列出转换表


16进制转换表

0000 =00001=10010=200 11=3


现在我们就对照上面的表就能知道默认的控制位转换后是个什么数:


字节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 :(这个一般不用)


把数据填入到存取控制结构表如下图:



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


         

                     ( 注: _b表示取反 )


三个控制位以正和反两种形式存在于存取控制字节中,决定了该块的访问权限(如: 进行减值操作必须验证KEY A,进行加值操作必须验证KEY B,等等)。因为控制字是由部分控制位取反的来的,由上表C33_b就可知道,所以我们要再取反一次获取原来的控制位,就能得出下面的控制位(_b为取反,比如:C33为1取反后为C33_b为0):



字节6——FF :   0 0 0 0    0 0 0 0                                       


字节7——07 :   0 0 0 0   1 0 0 0                                   


字节8——80 :   1 0 0 0    0 0 0 0     


字节9——69 :(这个一般不用)



在存取控制中每个块都有相应的三个控制位,定义如下:


块0:   C10   C20   C30                                                      0      0      0


块1:   C11   C21   C31                                                       0      0      0


块2:   C12   C22   C32       对应上表数据可得——            0      0      0


块3:   C13   C23   C33                                                       0      0      1



块0,1,2控制位权限参照下面权限表可知:



块0控制位为:0 0 0       权限为: 通过A或者B密码认证后可读,可写,可进行加值和减值操作。


块1控制位为:0 0 0       权限为: 通过A或者B密码认证后可读,可写,可进行加值和减值操作。


块2控制位为:0 0 0       权限为: 通过A或者B密码认证后可读,可写,可进行加值和减值操作。



块3和其他的权限参照表是不一样的,块3对应的权限表为下表:



块3控制位为: 0 0 1      权限为:A密码不可读,验证A或者B密码后可改写A密码。验证A或者B密码后,可读可改写存取控制 。                                                       验证A密码或者B密码后,可读可改写B密码。