M1卡简介一、M1卡性能指标二、M1卡存储结构三、M1卡与读卡器的通讯四、M1卡指令一、M1卡性能指标ØMIFARES70卡的容量为4K字节EEPROM,前2K共分32个扇区,每个扇区为4块;后2K共分为8个扇区,每个扇区为16块;以块为存取单位,每块16个字节。ØMIFARES50卡的容量为1K字节EEPROM,分16个扇区,每个扇区为4块,以块为存取单位,每块16个字节。一、M1卡性能指标Ø每个扇区有独立的一组密码和访问控制。Ø每张卡有唯一序列号,为32位(4Bytes)。Ø工作温度:-20℃~50℃(湿度为90%)。Ø工作频率:13.56MHZ,通信速率:106KBPS。遵从ISO/IEC14443A标准的第2部分和第3部分。一、M1卡性能指标三、M1卡与读卡器的通讯四、M1卡指令二、M1卡存储结构(S50)二、M1卡存储结构UID(4)二、M1卡存储结构第0扇区的块0(即绝对地址0块),它用于存放厂商代码,已经固化,不可更改。每个扇区的块0、块1、块2为数据块,可用于存贮数据。每个扇区的块3为控制块,包括了密码A、存取控制、密码B。二、M1卡存储结构数据块可作两种应用:用作一般的数据保存,可以进行读、写操作。用作数值块,可以进行初始化值、加值、减值、读值操作。数值块结构字节号0123456789101112131415描述valuevaluevalueadradradradr注:值:两次正值,一次取反;地址:两次正值,两次取反。二、M1卡存储结构第0扇区的块0(即绝对地址0块),它用于存放厂商代码,已经固化,不可更改。每个扇区的块0、块1、块2为数据块,可用于存贮数据。每个扇区的块3为控制块,包括了密码A、存取控制、密码B。二、M1卡存储结构控制块具体结构如下:密码A(6字节)|存取控制(4字节)|密码B(6字节)二、M1卡存储结构扇区中的每个块(包括数据块和控制块)的存取条件是由密码和存取控制共同决定的,在存取控制中每个块都有相应的三个控制位,定义如下:块0:C10C20C30块1:C11C21C31块2:C12C22C32块3:C13C23C33二、M1卡存储结构bit76543210字节6C23_bC22_bC21_bC20_bC13_bC12_bC11_bC10_b字节7C13C12C11C10C33_bC32_bC31_bC30_b字节8C33C32C31C30C23C22C21C20字节901101001注:_b表示取反例如:FF07806911111111000001111000000001101001块0:000块1:000块2:000块3:001二、M1卡存储结构控制位(X=0,1,2)访问条件(对数据块0、1、2)C1XC2XC3XReadWriteIncrementDecrement,transfer,Restore000KeyA|BKeyA|BKeyA|BKeyA|B010KeyA|BNeverNeverNever100KeyA|BKeyBNeverNever110KeyA|BKeyBKeyBKeyA|B001KeyA|BNeverNeverKeyA|B011KeyBKeyBNeverNever101KeyBNeverNeverNever111NeverNeverNeverNever(KeyA|B表示密码A或密码B,Never表示任何条件下不能实现)数据块二、M1卡存储结构访问控制密码A存取控制密码BC13C23C33ReadWriteReadWriteReadWrite000NeverKeyA|BKeyA|BNeverKeyA|BKeyA|B010NeverNeverKeyA|BNeverKeyA|BNever100NeverKeyBKeyA|BNeverNeverKeyB110NeverNeverKeyA|BNeverNeverNever001NeverKeyA|BKeyA|BKeyA|BKeyA|BKeyA|B011NeverKeyBKeyA|BKeyBNeverKeyB101NeverNeverKeyA|BKeyBNeverNever111NeverNeverKeyA|BNeverNeverNever控制块一、M1卡性能指标二、M1卡存储结构三、M1卡与读卡器的通讯四、M1卡指令三、M1卡与读卡器的通讯三、M1卡与读卡器的通讯M1射频卡的通讯协议和通讯波特率是定义好的,当有卡片进入读写器的操作范围时,读写器以特定的协议与它通讯,从而确定该卡是否为M1射频卡,即验证卡片的卡型。复位应答(AnswerToRequest)防冲突机制(AnticollisionLoop)当有多张卡进入读写器操作范围时,防冲突机制会从其中选择一张进行操作,未选中的则处于空闲模式等待下一次选卡,该过程会返回被选卡的序列号。三、M1卡与读卡器的通讯选择卡片(SelectTag)选择被选中的卡的序列号,并同时返回卡的容量代码。三次互相确认(3PassAuthentication)选定要处理的卡片之后,读写器就确定要访问的扇区号,并对该扇区密码进行密码校验,在三次相互认证之后就可以通过加密流进行通讯。(在选择另一扇区时,则必须进行另一扇区密码校验。)三、M1卡与读卡器的通讯三重认证实际上是卡片与读写器之间的三次通讯,是卡与读写器之间的相互认证。流程如下:PCDPICCAuth(6xxx)----RNG(B)TOKEN(AB)----TOKEN(BA)三、M1卡与读卡器的通讯1)M1卡收到认证指令后,向读卡器发送一个4字节的随机数RNG(B);2)读卡器收到RNG(B)后,向M1卡发送一个令牌数据TOKEN(AB),其中包含了读卡器发出的一个随机数RNG(A);3)M1卡收到TOKEN(AB)后,对TOKEN(AB)中加密的部分进行解密,并校验1)中M1卡发出的RNG(B)是否与2)中接收到的RNG(B)相一致;三、M1卡与读卡器的通讯4)如果校验正确,则M1卡向读卡器发送令牌TOKEN(BA);5)读卡器收到令牌TOKEN(BA)后,对令牌中的RNG(A)进行解密,并校验2)中发送的RNG(A)是否与4)中接收到的RNG(A)相一致。如果上面每一步都为“真”,则整个认证过程将成功。一、M1卡性能指标二、M1卡存储结构三、M1卡与读卡器的通讯四、M1卡指令四、M1卡指令读(Read):读一个块;写(Write):写一个块;加值(Increment):对数值块进行加值;减值(Decrement):对数值块进行减值;传输(Transfer):将数据寄存器中的内容写入块中;中止(Halt):将卡置于暂停工作状态。存储(Restore):将块中的内容存到数据寄存器中;四、M1卡指令命令CodeData(字节数)备注寻卡26/52-REQA(26)/WUPA(52)认证60/61块号(1)60:用KEYA认证;61:用KEYB认证读30块号(1)返回16字节数据写A0块号(1)+数据(16)读卡器发送A0+块号,卡片返回0A确认,读卡器再发送16字节数据,卡片返回0A,写数据完成。加值C1块号(1)+金额(4)读卡器发送C1+块号,卡片返回0A确认,读卡器再发送4字节金额数据,卡片无返回,继续等待接收,读卡器继续发送transfer命令B0+块号,卡片返回0A,加值完成。减值C0块号(1)+金额(4)读卡器发送C0+块号,卡片返回0A确认,读卡器再发送4字节金额数据,卡片无返回,继续等待接收,读卡器继续发送transfer命令B0+块号,卡片返回0A,减值完成。传输B0块号(1)将缓存中的数据写入值块中。重载C2块号(1)+数据(4)读卡器发送C2+块号,卡片返回0A确认,读卡器再发送4字节任意数据,卡片无返回,继续等待接收,重载结束。如何判断卡片属于M1卡还是CPU卡?ATQA编码:0200:M1S704K0400:M1S501K0800:CPU4403:DESFireSAK编码:XXXXX1XX:UID不完整XX1XX0XX:UID完整,PICC遵循ISO/IEC14443-4XX0XX0XX:UID完整,PICC不遵循ISO/IEC14443-4例如:CPU:080020S50:040008S70:020018