M1卡介绍一、概述M1芯片,是指菲利浦下属子公司恩智浦出品的芯片缩写,全称为NXPMifare1系列。M1卡是非接触式感应卡,数据保存期为10年,可改写10万次,读无限次。无电源,自带天线,工作频率为13.56MHZ.内含加密控制逻辑和通讯逻辑电路。一般主要有两种,S50和S70。二、主要指标1、容量为8K位EEPROM2、分为16个扇区,每个扇区为4块,每块16个字节,以块为存取单位3、每个扇区有独立的一组密码及访问控制4、每张卡有唯一序列号,为32位5、具有防冲突机制,支持多卡操作6、无电源,自带天线,内含加密控制逻辑和通讯逻辑电路7、数据保存期为10年,可改写10万次,读无限次8、工作温度:-20℃~50℃(温度为90%)9、工作频率:13.56MHZ10、通信速率:106KBPS11、读写距离:10mm以内(与读写器有关)二、工作原理卡片的电气部分只由一个天线和ASIC组成。天线:卡片的天线是只有几组绕线的线圈,很适于封装到IS0卡片中。ASIC:卡片的ASIC由一个高速(106KB波特率)的RF接口,一个控制单元和一个8K位EEPROM。工作原理:读写器向M1卡发一组固定频率的电磁波,卡片内有一个LC串联谐振电路,其频率与讯写器发射的频率相同,在电磁波的激励下,LC谐振电路产生共振,从而使电容内有了电荷,在这个电容的另一端,接有一个单向导通的电子泵,将电容内的电荷送到另一个电容内储存,当所积累的电荷达到2V时,此电容可做为电源为其它电路提供工作电压,将卡内数据发射出去或接取读写器的数据。工作原理图三、内部结构一)、整体结构图内部结构图二)、存储结构图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∶∶∶扇区150数据块601数据块612数据块623密码A存取控制密码B控制块631、第0扇区的块0(即绝对地址0块),它用于存放厂商代码,已经固化,不可更改。2、每个扇区的块0、块1、块2为数据块,可用于存贮数据。数据块可作两种应用:★用作一般的数据保存,可以进行读、写操作。★用作数据值,可以进行初始化值、加值、减值、读值操作。数据块的存储方式例如:假设4号扇区的1、2号数据段(编号从0开始)存储了水卡余额,将已知的余额32.31,换算为分为3231,再转为16进制为C9F,即00000C9F,而0C9F取反为FFFFF360,这时比较下4号扇区的值,很容易发现规律:前四个字节不取反倒序(9F0C0000)存储余额,接下来四个字节取反倒序(60F3FFFF)存储余额,再接下来四个字节不取反倒序(9F0C0000)存储余额。其具体如下:具体到每一个变量:如果变量a存储的数据对应的16进制为0A123456,变量b存储的数据对应的16进制为0B445566则其倒序存储如下:3、每个扇区的块3为控制块,包括了密码A、存取控制、密码B。结构为:密码A(6字节)存取控制(4字节)密码B(6字节)4、每个扇区的密码和存取控制都是独立的,可以根据实际需要设定各自的密码及存取控制。存取控制为4个字节,共32位,扇区中的每个块(包括数据块和控制块)的存取条件是由密码和存取控制共同决定的,在存取控制中每个块都有相应的三个控制位,定义如下:块0:C10C20C30块1:C11C21C31块2:C12C22C32块3:C13C23C33三个控制位以正和反两种形式存在于存取控制字节中,决定了该块的访问权限(如进行减值操作必须验证KEYA,进行加值操作必须验证KEYB,等等)。三个控制位在存取控制字节中的位置,以块0为例:对块0的控制:bit76543210字节6C20_bC10_b字节7C10C30_A0A1A2A3A4A5FF078069B0B1B2B3B4B5b字节8C30C20字节9(注:C10_b表示C10取反)存取控制(4字节,其中字节9为备用字节)结构如下所示:bit76543210字节6C23_bC22_bC21_bC20_bC13_bC12_bC11_bC10_b字节7C13C12C11C10C33_bC32_bC31_bC30_b字节8C33C32C31C30C23C22C21C20字节9(注:_b表示取反)6、数据块(块0、块1、块2)的存取控制如下:控制位(X=0..2)访问条件(对数据块0、1、2)C1XC2XC3XReadWriteIncrementDecrement,transfer,Restore000KeyA|BKeyA|BKeyA|BKeyA|B010KeyA|BNeverNeverNever100KeyA|BKeyBNeverNever110KeyA|BKeyBKeyBKeyA|B001KeyA|BNeverNeverKeyA|B011KeyBKeyBNeverNever101KeyBNeverNeverNever111NeverNeverNeverNever(KeyA|B表示密码A或密码B,Never表示任何条件下不能实现)例如:当块0的存取控制位C10C20C30=100时,验证密码A或密码B正确后可读;验证密码B正确后可写;不能进行加值、减值操作。7、控制块块3的存取控制与数据块(块0、1、2)不同,它的存取控制如下:密码A存取控制密码BC13C23C33ReadWriteReadWriteReadWrite000NeverKeyA|BKeyA|BNeverKeyA|BKeyA|B010NeverNeverKeyA|BNeverKeyA|BNever100NeverKeyBKeyA|BNeverNeverKeyB110NeverNeverKeyA|BNeverNeverNever001NeverKeyA|BKeyA|BKeyA|BKeyA|BKeyA|B011NeverKeyBKeyA|BKeyBNeverKeyB101NeverNeverKeyA|BKeyBNeverNever111NeverNeverKeyA|BNeverNeverNever例如:当块3的存取控制位C13C23C33=100时,表示:密码A:不可读,验证KEYA或KEYB正确后,可写(更改)。存取控制:验证KEYA或KEYB正确后,可读、可写。密码B:验证KEYA或KEYB正确后,可读、可写。四、M1卡的功能模式寻卡模式分三种情况:IDLE模式、ALL模式及指定卡模式(0,1,2均是int类型,是方法参数,下同)。0——表示IDLE模式,一次只对一张卡操作;1——表示ALL模式,一次可对多张卡操作;2——表示指定卡模式,只对序列号等于snr的卡操作(高级函数才有,不常用)也就是说,我们一次也可以同时操作多张卡。对于多卡操作,其实际真正执行操作的还是一张卡。读写器能识别多张卡的序列号(识别出的顺序是不定的,并且最多也就能识别4张卡,因为卡叠放的厚度太厚,会超出读写器的识别范围)。五、