射频识别技术漫谈(16)——Mifare UltraLight
Mifare UltraLight又称为MF0,从UltraLight(超轻的)这个名字就可以看出来,它是一个低成本、小容量的卡片。低成本,是指它是目前市场中价格最低的遵守ISO14443A协议的芯片之一;小容量,是指其存储容量只有512bit(Mifare S50有8192bit)。
Mifare UltraLight的512bit存储容量分成16个Page,每个Page包含4个字节,如下图所示:

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卡。
射频识别技术漫谈(16)——Mifare UltraLight的更多相关文章
- 射频识别技术漫谈(11)——Mifare系列卡的共性【worldsing笔记】
Mifare是NXP公司生产的一系列遵守ISO14443A标准的射频卡,包Mifare S50.Mifare S70.Mifare UltraLight.Mifare Pro.Mifare Desfi ...
- 射频识别技术漫谈(11)——Mifare系列卡的共性
Mifare是NXP公司生产的一系列遵守ISO14443A标准的射频卡,包Mifare S50.Mifare S70.Mifare UltraLight.Mifare Pro.Mifare Desfi ...
- 射频识别技术漫谈(13)——Mifare S50与S70【worldisng笔记】
Mifare S50和Mifare S70又常被称为Mifare Standard.Mifare Classic.MF1,是遵守ISO14443A标准的卡片中应用最为广泛.影响力最大的的一员.而Mif ...
- 射频识别技术漫谈(18)——Mifare Desfire
Mifare DESFire(MF3 IC D40/D41,本文以D40为例)遵守14443 TypeA协议,卡内的数据以文件形式存储,所以有人认为它是准CPU卡,主要用于安全性要求较高的非接触式领 ...
- 射频识别技术漫谈(13)——Mifare S50与Mifare S70
Mifare S50和Mifare S70又常被称为Mifare Standard.Mifare Classic.MF1,是遵守ISO14443A标准的卡片中应用最为广泛.影响力最大的的一员.而Mif ...
- 射频识别技术漫谈(14)——Mifare S50与S70的存取控制
存取控制指符合什么条件才能对卡片进行操作. S50和S70的块分为数据块和控制块,对数据块的操作有“读”.“写”.“加值”.“减值(含传输和存储)”四种,对控制块的操作只有“读”和“写”两种. S50 ...
- 射频识别技术漫谈(10)——识别号的格式变化【worldsing笔记】
从事RDID行业的朋友经常会遇到这样的情况,同一张ID卡,在不同厂家生产的读卡器上读出的识别号完全不一样,有时甚至差之千里.ID卡的识别号一般是在出厂时被固化在卡片的ROM里,本身是不会改变的,问题出 ...
- 射频识别技术漫谈(6)——通讯协议概述【worldsing笔记】
通讯协议是通讯的双方或多方在交流时遵守的规矩,包括谁先发起通讯,先交流什么,后交流什么,一方如何问,另一方如何答等.在这里通迅的双方指的是读写器和卡片. 首先是谁先发起通讯,很显然有两种,读写器先发言 ...
- 射频识别技术漫谈(4)——数据编码【worldsing 笔记】
前已述及,射频识别技术中的调制方法一般使用调幅(AM),也就是将有用信号调制在载波的幅度上传送出去.这里的"有用信号"指用高低电平表示的数据"0"或" ...
随机推荐
- Android开源资料大集合_架构&UI
1. Anroid开源框架架 https://github.com/kymjs/KJFrameForAndroidhttp://www.oschina.net/p/thinkandroid http: ...
- 错误:类Byte是公共的,应在名为Byte.java 的文件中声明public class Byte{}一个错误
解决:文件名是xyz,那你的这个类名也应该是xyz.
- DataGridView插入一行数据和用DataTable绑定数据2种方式
以前不会用DataGridView的时候一直使用DataTable绑定的方式,如下: DataTable table = new DataTable(); //给表添加一列Name,此名字和 tabl ...
- 【转】Eclipse自动补全的设置方法
转自:http://blog.csdn.net/xiadasong007/archive/2009/11/11/4799715.aspx 打开 Eclipse -> Window -> P ...
- codeforces 603C. Lieges of Legendre sg函数
题目链接 n堆石子, 可以拿走一堆中的一颗, 或者将一堆数量为2*x的石子分为k堆x个的石子.k由题目给出. k分奇偶讨论. k为偶数时,k堆x个的石子异或结果为0: k为奇数时, k堆x个石子异或结 ...
- jQuery入门第三
jQuery入门第三 1.HTML 2.CSS 衣服 3.javascript 可以动的人 4.DOM 编程 对html文档的节点操作 5.jQuery 对 javascript的封装 简练的语法 复 ...
- 用rsync从Linux到Windows远程备份
论 rsync是Linux系统下的数据镜像备份工具,从软件的命名上就可以看出来 了——remote sync.rsync支持大多数的类Unix系统,无论是Linux.Solaris还是BSD上都经过了 ...
- 常见iis错误之一
1.win7配置iis 出现:HTTP 错误 403.14 - Forbidden 打开 IIS 管理器. 在“功能”视图中,双击“目录浏览”. 在“目录浏览”页上,在“操作”窗格中单击“启用”. 确 ...
- lombk在IDEA中报ClassNotFoundException错误
今天接手了一个项目,用到了lombk,第一次用到,做为纯JAVA来说,确实不错. 不过在使用中碰到了一个问题,就是在IDEA中,可以在结构中看到getter和setter等都已经正确的生成了,但是运行 ...
- bootstrap 更改container 的width
参考:http://stackoverflow.com/questions/15884102/bootstrap-how-do-i-change-the-width-of-the-container ...