Android MIFARE读写器协议详解1

本文详细探讨了Android环境下MIFARE读写器的数据块存取控制,强调了必须在校验KEY A和KEY B后才能进行读写操作。其中,KEY A针对减操作,KEY B对应加操作,并介绍了三步相互确认的过程。
摘要由CSDN通过智能技术生成

M1 主要指标 
1:容量为8K位EEPROM 
2:分为16个扇区,每个扇区为4块,每块16个字节,以块为存取单位 
3:每个扇区有独立的一组密码及访问控制 
4:每张卡有唯一序列号,为32位 
5:具有防冲突机制,支持多卡操作 
6:无电源,自带天线,内含加密控制逻辑和通讯逻辑电路 
7: 数据保存期为10年,可改写10万次,读无限次 
8:工作温度:-20℃~50℃(温度为90%), PET材料封装得M1卡,温度可达100℃。
9:工作频率:13.56MHZ 
10:通信速率:106KBPS 
11: 读写距离:10mm以内(与读写器有关) 

M1 存储结构
Mifare1S50非接触式智能卡片有着16个Sector(扇区);每个Sector包含4个Block(块);每个Block具有16个byte的存储容量。
Sector被定义为Sector0至Sector15;Block被分为Block0至Block3;整个Mifare1S50非接触式智能卡共有64个Block。




Sector0中的Block0记录了该张智能卡的序列号以及生产厂商的标志信息等,这些信息已在卡片出厂时固化,不能更改,因此该Block不能再复用为应用数据块。
每个Sector中的Block3被特别用来存放对该Sector中应用块Block0,1,2及其本身Block3进行数据存取的密码及存取权限。
整个Mifare1S50非接触式智能卡共有16个Block3。根据绝对地址编址,他们可被编为Block3(在Sector0中),Block7(在Sector1中),Block11(在Sector2中),以及Block63(在Sector15中)等。
 对于某一Sector中的Block3的绝对地址编址可以由下列公式计算得到:
 Block X=(N+1)*4-1  其中:X:绝对地址编址的Block块号
 N:Sector扇号,0至15


通常每个扇区的Block0,1,2都存放着非常保密的数据,例如坐公交车/出租车前在公交公司指定地点已购买的车资钱款,智能大厦/智能小区进出时所需的控制信息,
股票交易时持有股票交易智能卡片者必须对已存放在智能卡中的交易密码数据(例如帐户、存款信息、已买进股票数量/品种等等)进行确认,才能得以股票交易等。
数据块可作两种应用:
用作一般的数据保存,可以进行读、写操作。
用作数据值,可以进行初始化值、加值、减值、读值操作。

由于每一个Block3中包含了该扇区的密码字节以及对该扇区中其余Block0,1,2进行数据处理的存取控制权限字节,因此如何操作处理Block3将是很重要的内容。以下将展开对每个扇区的Block3进行研究。
Block3有16个byte组成。前6个字节是密码A(KEYA),KEYA的缺省值可能为“A0A1A2A3A4A5”;
最后6个字节是密码B(KEYB),KEYB的缺省值可能为“B0B1B2B3B4B5”;
中间4个字节是控制字节,缺省值可能为“FFH07H80H69H”;
利用KEYA或KEYB并遵守早已定义在4个控制字节中的存取条件,我们便能对该密码(KEYA或KEYB)所对应的Sector内的应用块Block0,1,2进行数据读/写/更新等操作。




每个扇区的密码和存取控制都是独立的,可以根据实际需要设定各自的密码及存取控制。
存取控制为4个字节,共32位,扇区中的每个块(包括数据块和控制块)的存取条件是由密码和存取控制共同决定的,
在存取控制中每个块都有相应的三个控制位,定义如下:
块0:   C10   C20   C30           
块1:   C11   C21   C31          
块2:   C12   C22   C32          
块3:   C13   C23   C33 


三个控制位以正和反两种形式存在于存取控制字节中,决定了该块的访问权限(如     进行减值操作必须验证KEY A,进行加值操作必须验证KEY B,等等)。三个控制   位在存取控制字节中的位置,以块0为例:



<

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值