射频识别技术漫谈(13)——Mifare S50与S70【worldisng笔记】

摘要:
MifareS70将4K字节的容量划分为40个扇区(扇区0-扇区39)。前32个扇区(扇区0-扇区31)的结构与MifareS50完全相同。每个数据块包含16个字节(Byte0-Byte15)。例如,新交付的卡控制块的内容如下:访问控制用于设置扇区中每个块(包括控制块本身)的访问条件。

Mifare S50和Mifare S70又常被称为Mifare Standard、Mifare Classic、MF1,是遵守ISO14443A标准的卡片中应用最为广泛、影响力最大的的一员。而Mifare S70的容量是S50的4倍,S50的容量是1K字节,S70的容量为4K字节。读写器对卡片的操作时序和操作命令,二者完全一致。

Mifare S50和Mifare S70的每张卡片都有一个4字节的全球唯一序列号,卡上数据保存期为10年,可改写10万次,读无限次。一般的应用中,不用考虑卡片是否会被读坏写坏的问题,当然暴力硬损坏除外。

Mifare S50和Mifare S70的区别主要有两个方面。一是读写器对卡片发出请求命令,二者应答返回的卡类型(ATQA)字节不同。Mifare S50的卡类型(ATQA)是0004H,Mifare S70的卡类型(ATQA)是0002H。另一个区别就是二者的容量和内存结构不同。

Mifare S50把1K字节的容量分为16个扇区(Sector0-Sector15),每个扇区包括4个数据块(Block0-Block3,我们也将16个扇区的64个块按绝对地址编号为0~63),每个数据块包含16个字节(Byte0-Byte15),64*16=1024。

如下表所示:

image

Mifare S70把4K字节的容量分为40个扇区(Sector0-Sector39),其中前32个扇区(Sector0-Sector31)的结构和Mifare S50完全一样,每个扇区包括4个数据块(Block0-Block3),后8个扇区每个扇区包括16个数据块(Block0-Block15)。我们也将40个扇区的256个块按绝对地址编号为0~255),每个数据块包含16个字节(Byte0-Byte15),256*16=4096。如下表所示:

image

每个扇区都有一组独立的密码及访问控制,放在每个扇区的最后一个Block,这个Block又被称为区尾块,S50是每个扇区的Block3,S70的前32个扇区也是Block3,后8个扇区是Block15。

S50和S70的0扇区0块(即绝对地址0块)用于存放厂商代码,已经固化,不可更改,卡片序列号就存放在这里。除了厂商块和控制块,卡片中其余的块都是数据块,可用于存贮数据。数据块可作两种应用:

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

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

数据块和值块有什么区别呢?无论块中的内容是什么,你都可以把他看成普通数据,即使它是一个值块。但是并不是任何数据都可以看成是值,因为值块有一个比较严格的格式要求。值块中值的长度为4个字节的补码,其表示的范围(-2147483648~2147483647),值块的存储格式如下:

image

带下划线表示取反。VALUE是值的补码,addr是块号(0-63).只有具有上述格式,才被认为是值块,否则就是普通的数据块。

每个扇区的区尾块为控制块,包括了6字节密码A、4字节存取控制、6字节密码B。例如一张新出厂的卡片控制块内容如下:

A0 A1 A2 A3 A4 A5   FF 07 80 69  B0 B1 B2 B3 B4 B5

密码A  存取控制  密码B

新卡的出厂密码一般是密码A为A0A1A2A3A4A5,密码B为B0B1B2B3B4B5,或者密码A和密码B都是6个FF。存取控制用以设定扇区中各个块(包括控制块本身)的存取条件,这部分有点复杂,后面将专文介绍。

读写器与S50和S70的通讯流程如下图所示:

image
卡片选择三次相互认证在前面已经介绍过。其他操作如下:

(1) (Read):读取一个块的内容,包括普通数据块和值块;

(2)(Write):写数据到一个块,包括普通数据块和值块,值块中写入了非法格式的数据,值块就变成了普通数据块;

(3)(Increment):对值块进行加值,只能对值块操作;

(4)(Decrement):对值块进行减值,只能对值块操作;

(5)中止(Halt):将卡置于睡眠工作状态,只有使用WAKE-UP命令才能唤醒。

事实上加值和减值操作并不是直接在Mifare的块中进行的。这两个命令先把Block中的值读出来,然后进行加或减,加减后的结果暂时存放在卡上的易失性数据寄存器(RAM)中,然后再利用另一个命令传输(Transfer)将数据寄存器中的内容写入块中。与传输(Transfer)相对应的命令是存储(Restore),作用是将块中的内容存到数据寄存器中,不过这个命令很少用到。

本文来自新浪网

免责声明:文章转载自《射频识别技术漫谈(13)——Mifare S50与S70【worldisng笔记】》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇机器学习:R语言中如何使用最小二乘法SQL Server 2005/2008 导入导出数据常见报错下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

sql注入100种姿势过waf(二):过安全狗

仅供学习交流如果你有更好的思路可以一起分享,想一起学习的进我主页  先去安全狗网站下载最新的安全狗版本 从官网下载 windwos apache版 v4.0.2395  最新版   数据库是mysql 5.6  1.首先判断是否有注入点包括是字符型还是数字型注入 我们假设他是数字型注入 构造 id=0=0 在数据库中执行   获取了全部数据  从返回的...

TCP 的那些事儿(下)

本文转载自TCP 的那些事儿(下) 导语 这篇文章是下篇,所以如果你对TCP不熟悉的话,还请你先看看上篇《TCP的那些事儿(上)》 上篇中,我们介绍了TCP的协议头、状态机、数据重传中的东西。但是TCP要解决一个很大的事,那就是要在一个网络根据不同的情况来动态调整自己的发包的速度,小则让自己的连接更稳定,大则让整个网络更稳定。在你阅读下篇之前,你需要做好准...

蓝牙协议体系结构

蓝牙协议体系结构   整个蓝牙协议体系结构可分为底层硬件模块、中间协议层和高端应用层三大部分。   链路管理层(LMP,Link Management Protocol)、基带层(BB)和射频(RF)构成蓝牙的底层模块。RF通过2.4GHz无需授权的ISM频段,实现数据位流的过滤和传输,它主要定义了蓝牙收发器应该满足的要求。BB层负责跳频和蓝牙数据及信息帧...

中间件集群的3大策略

中间件集群的3大策略 1)动态负载均衡策略,一般会搜集多个进程的服务状态,然后挑选一个负载最轻的进程来分发服务,这种策略对于比较同质化的进程是比较合适的。 2)读写分离策略则是关注对持久化数据的性能,比如对数据库的操作,我们会提供一批进程专门用于提供读数据的服务,而另外一个(或多个)进程用于写数据的服务,这些写数据的进程都会每次写多份拷贝到“读服务进程”的...

KML添加自定义数据

KML--添加自定义数据        kml提供三种方法向一个KML要素中添加自定义数据。你选择的方法依赖于你的数据还有你计划怎样在你的KML表现中来使用。特别地,<ExtendData>元素提供以下机制: l         <Data>元素允许你向与用户数据相关联的Feature(NetworkLink,Placemark,...

金融系列7《动态数据认证》

1)  标准的动态数据认证,卡片行为分析前执行. 2)  复合动态数据认证/应用密文生成,在GENERATEAC命令发出后执行。 3)  由终端恢复认证中心公钥。 4)  由终端恢复发卡行公钥。 5)  由终端恢复IC卡公钥。 6)  RSA A.   N=P*Q//N公开,的模数,IC卡公钥 B.   Φ(N)=(P-1)* (Q-1) //欧拉函...