MIFARE UltraLight卡(M0卡)是什么卡
Ultralight即Mifare Ultralight是一种512位非接触式IC卡, 是一款采用精简应用模式设计的 Mifare 射频芯片。在精简芯片存储量的基础上,此芯片可以压制在更薄尺寸的卡片中,成本上也更适合应用于短途多站点的交通系统。芯片符合IEC/ISO 14443A 接口协议。
MIFARE UltraLight卡也被称为M0卡、MF0卡,是一种高频低成本卡,同时容量小,但是比M1卡轻薄。
其容量只有512bit,也就是64B。被划分为了16个page,每个page包含4个字节。M0卡的UID有7个字节长,普通的M1卡只有四个。而且M0卡没有加密,所以M0卡只能用在一些身份识别的地方,比如地铁票,园区票之类。
Δ芯片类型:Mifare Ultralight
Δ工作频率:13.56 MHz
Δ存储容量:512 bit,是一种512位非接触式IC卡。
Δ读写距离:2.5-10cm
Δ擦写寿命:可循环改写1000次。
Δ数据保存时间:5年
Δ封装材料:PVC、ABS、PET
Δ线 圈:超声波自动绕线
Δ焊接工艺:自动碰焊
Δ执行标准:ISO 14443A
Δ标准卡尺寸:85.5× 54× 0.84(+/-0.02)mm、 超薄卡 85.6x 54x 0.60mm、各种异形卡
存储结构
UltraLight卡共512位,分为16页,每页为4个字节。存储结构如下:
页号 | 字节0 | 字节1 | 字节2 | 字节3 | 说明 |
0 | SN0 | SN1 | SN2 | BCC0 | Serial Number |
1 | SN3 | SN4 | SN5 | SN6 | Serial Number |
2 | BCC1 | 保留 | Lock0 | Lock1 | 保留/Lock |
3 | OTP0 | OTP1 | OTP2 | OTP3 | OTP |
4 | Data0 | Data1 | Data2 | Data3 | Data read/write |
5 | Data4 | Data5 | Data6 | Data7 | Data read/write |
6 | Data8 | Data9 | Data10 | Data11 | Data read/write |
7 | Data12 | Data13 | Data14 | Data15 | Data read/write |
8 | Data16 | Data17 | Data18 | Data19 | Data read/write |
9 | Data20 | Data21 | Data22 | Data23 | Data read/write |
10 | Data24 | Data25 | Data26 | Data27 | Data read/write |
11 | Data28 | Data29 | Data30 | Data31 | Data read/write |
12 | Data32 | Data33 | Data34 | Data35 | Data read/write |
13 | Data36 | Data37 | Data38 | Data39 | Data read/write |
14 | Data40 | Data41 | Data42 | Data43 | Data read/write |
15 | Data44 | Data45 | Data46 | Data47 | Data read/write |
(1) (1) 第0、1页存放着卡的序列号等信息,只可读。依据ISO/IEC14443-3 校验位计算如下:
BCC0=CT⊕SN0⊕SN1⊕SN2
BCC1=SN3⊕SN4⊕SN5⊕SN6
(2) (2) 第2页为LOCK BYTES, 设置字节2和字节3对应的位可以将从第3页到15页单独地锁定为只读区域。
Lock0
L 7 | L 6 | L 5 | L 4 | L OTP | BL 15-10 | BL 9-4 | BL OTP |
Lock1
L 15 | L 14 | L 13 | L 12 | L 11 | L 10 | L 9 | L 8 |
Lx 锁定X页为只读
BLX 锁定对应的Lx位
² ² 注意:一旦block-locking(BLX)位被设置为锁定配置,对应的内存区域将被冻结。如:BL15-10 设置为1,则L15到L10再也不能改变。Lock0和Lock1可以通过写命令来设置,写入的内容与当前内容进行位或操作得到新的内容,初始值为0。该过程是不可逆转的。如果有一个位被置为1,就再也不能置为0。
(3) (3) 第3页为OTP,即一次性编程,初始值为0。可以通过写命令来改变它的值,写入的值和当前值进行位或操作得到新的值。这个过程是不可逆转的。如果一个位被置为1,将再也不能置回0。
注意:该内存区域可以用作最大值为32的一次性计数器。
(4) (4) 第4到15页为用户读/写区域,初始值为0。
功能描述
UltraLight卡是一种单程票非接触式IC卡。
1、 1、 卡片指令
reset--->request--->anticoll--->select--->read、write--->halt
2、 2、 函数特别说明
UltraLight卡操作函数同Mifare One,有以下几点需要说明:
u u 由于UltraLight卡的序列号为7个字节,所以防冲突函数不能够返回全部的卡片序列号,如要取得全部的卡片序列号请调用rf_get_snr函数,该函数为UltraLight卡专用函数。
u u UltraLight卡没有密码,故不需要装载密码,也不存在认证指令。
u u Rf_read函数返回16个字节的数据(即4个page),故用户给的缓冲区必须大于16个字节。
u u Rf_write函数写入16个字节的数据,实际只有前面4个字节的数据写入指定的地址,其余字节可以补零。
u u UltraLight卡不存在增值、减值指令。
u u 不支持高级函数。
Page0和Page1以及Page2的第1个字节是卡片的7字节序列号及其校验字节,其中BCC0=0x88⊕SN0⊕SN1⊕SN2,BCC1=SN3⊕SN4⊕SN5⊕SN6,SN0是制造商代码,由于Mifare UltraLight是NXP公司出品,因而SN0固定为04H。Page2的第2个字节Internal作为内部数据保留。以上共10个字节出厂时固化在存储区内,用户无法更改。
Page3是一次性烧录(One Time Programmable,OTP)页,该页的内容在卡片出厂时全部被写为“0”,用户使用时只能把某一位的内容写为“1”,而永远也不能把“1”写为0,也就是说,新写入的4字节内容与卡内原来的内容进行异或,异或后的结果存储在卡片中。
Page4-Page15是可读写的用户数据区,出厂时其内容初始化为0,用户可以任意读写。
Page2的第3和第4个字节用于将存储区锁定为只读。如下图所示,L4-L15的某一位设置为1,则对应序号的Page内容锁定为只读,每一个Page都可以单独设置。Lotp用于锁定Page3为只读。“螳螂捕蝉,黄雀在后”,Lotp-L15可以锁定别人,这些位本身又被三个BL位锁定,BL15-10用于锁定L15-L10,BL9-4用于锁定L9-L4,BLotp用于锁定Lotp。所有的这16个锁定位也具有OTP特性,通俗的讲就是这些“锁”没有“钥匙”,一旦锁死就再也改不回来了,所以锁定时一定要小心。
###############################################
Mifare UltraLight的读写操作和 Mifare S50是完全兼容的,这里的“兼容”是指二者可以使用同一个读卡器硬件,同一套软件。当然若软硬件完全相同就不是两种卡了,二者的区别主要体现在软件操作上,包括以下4个方面:
一是Mifare UltraLight的卡序列号有7个字节,而Mifare S50的卡序列号只有4个字节,因此在卡片防冲突选择阶段需要两层(Cascade,93H和95H)操作;
二是Mifare UltraLight没有密码,不需要验证;
三是Mifare UltraLight的Page相当于Mifare S50的BLOCK,因此Mifare UltraLight有16个BLOCK,且每个BLOCK只有4个字节,而Mifare S50有64个BLOCK,每个BLOCK有16个字节;
四是Mifare UltraLight没有电子钱包功能。
基于以上四点,在Mifare S50的程序中在卡请求命令成功执行后,如果判断卡类型字节为Mifare UltraLight(0044H),则在之后的操作中增加第二层防冲突选择,卡选择成功后直接对卡片的0-15块进行读写操作,每次读写只关注前4个字节,不使用电子钱包功能,这样就可以两种卡片完全兼容了。
Mifare UltraLight适合一次性、不需要回收的低成本的电子票证、景区门票等场合的解决方案,据说推出Mifare UltraLight的本来目的是想与125KHz的ID卡竞争,并作为磁条卡的替代方案。从目前的情况看,Mifare UltraLight与ID卡的竞争情况并不乐观,而磁条卡的替代品也大多是ID卡。