1.启动读写器
启动电脑,打开RFID实验箱,取出高频读写器用USB连接线连接电脑。在电脑上打开读写器演示软件YX7036DemoCN.exe,进入主界面,打开端口。
2.读取lSO14443A协议卡片信息
1)将读写器演示软件选项切换到lSO14443A协议(图2-1中1),点击“切换到lSO14443A模式”(图2-1中2),点击“打开射频”(图2-1中3),此时高频读写器正式进入lSO14443A读写准备状态。
2)点击“Request”(图2-1中4),此时卡类型即显示在右边(图2-1中12),执行Request命令后,若射频场中有ISO14443A标签存在,“塌衡卡类型”文本框将会显示该标签的类型代码;否则,状态栏提示“无ISO14443A电子标签可 *** 作”。由于该命虚念令执行的是Request(All),处于任何状态的标签均会应答;如果调用Request(Idle),则只有处于Halt状态之外的标签才能应答。
3)点击“Anticoll”(图2-1中5),Mifare One 防冲突获取射频场中一张Mifare One标签的UID,如果防冲突执行成功,“卡号”文本框将会显示获取到的4字节标签UID(图2-1中13);否则状态栏显示“防冲突失败”。ULAnticoll: UltraLight 防冲突:获取射频场中一张UltraLight标签的UID,如果防冲突执行成功,“卡号”文本框将会显示获取到的7字节标签UID;否则状态栏显示防冲突失败。
4)点击“Select”(图2-1中6),选择指定UID的标签,以后的所有 *** 作均针对该标签。如果选择成功,“卡容量大小”文本框会显示标签存储区的大小(图2-1中14)。注意:UltraLight标签无需执行该命令,在ULAnticoll过程中已经进行了Select *** 作。
图2-1
3.读写lSO14443A协议卡片数据
对lSO14443A协议卡片数据进行读写之前先要对电子标签进行证实 *** 作,点击“AuthKey”(图2-1中8) *** 作会读取“读写”框中的密钥,用指定的密钥类型证实所选的扇区。如果填写的密钥与标签扇区上的密钥匹配,则证实成功,状态栏显示“AuthKey:执行成功”。认证成功后,就可以对数据区的内容进行读取或修改了。选择扇区号(图2-1中15),选择块号(图2-1中16),点击“Read”(图2-1中17),成功则在数控块中看到所 *** 作的数据块数据(图2-1中19)。在数据块框中(图2-1中19)输入需要写入数据块的数据,点击“Write”(图2-1中18),成功即在左下角显示“Write执行成功”。
注意:
1. Mifare one S50(共16个扇区)
块0~块2为数据块块3为密钥块.
Mifare one S70(共40个扇区)
当扇区号<=31时,块0~块2为数据块块3为密钥块
当扇区号>31时,块0~块14为数据块块15为密钥块.
2.要写入数据时,数据的长度必须为16个字节.
3.读UltraLight标签时,请将扇区号设为0,块号即为UltraLight标签对应的页号.读取的内容是从选择的页号开始的连续4个页.
4.写UltraLight标签时,只有低四个字节能被写入标签,余下的12个字节为0
另外,有专用于UltraLight标签的写命令ULWrite,
知识学习
S50卡有lk bytes共16个扇区,每个扇区有4个块,其中第1扇区第块是卡序列号,是只读的,不能写。密钥存放在每个扇区的块3。算存储密钥块的算法是:x=s*4+3:其中s表示扇区号(0-15)。
1、Ml卡分为16个扇区,每个扇区由4块(块O、块l、块2、块3)组成,(也将16个扇区的64个块按绝对地址编号为0-63)。
2、第0扇区的块0(即绝对地址0块),它用于存放厂商代码,已经固化,不可更改。
3、每个扇区的块0、块1、块2为数据块,可用于存贮数据。
数据块可作两种应用:
★用作一般的数据保存,可以进行读、写 *** 作。差衫困
★用作数据值,可以进行初始化值、加值、减值、读值 *** 作。
4、每个扇区的块3为控制块,包括了密钥A、存取控制、密钥B。具体结构为:密钥A(6字节) 存取控制(4字节)密钥B(6字节)
1.启动读写器
启动电脑,打开RFID实验箱,取出高频读写器用USB连接线连接电脑。在电脑上打开读写器演示软件YX7036DemoCN.exe,进入主界面,打开端口。
2.读取lSO14443A协议卡片密匙
依次点击图3-1中1-7(具体见实验二),选择块号3(图3-1中8),点击“Read”(图3-1中9),就会看见下面密匙块显示框中显示密匙为:000000000000 FF078069 FFFFFFFFFFFF(图3-1中10)。其中密码A(6字节) 存取控制(4字节) 密码B(6字节)。密匙相关知识见后资料。
图3-1
3.修改lSO14443A协议卡片密匙
依次点击图3-1中1-7(具体见实验二),选择块号3(图3-1中8),点击“Read”(图3-1中9),就会看见下面密匙块显示框中显示密匙为:000000000000 FF078069 FFFFFFFFFFFF(图3-1中10)。在修改密匙中选择新密匙B(图3-2中1),在新密匙输入框中输入新密匙“222222222222”(图3-2中2),点击“修改密匙”(图3-2中3),修改成功可以在左下角看到“修改密匙”执行成功,选择密匙所在的块号3(图3-2中4),点击“Read”(图3-2中5)。可以看到新密匙已经修改成功(图3- 3)
4.MF1卡修改各区块控制位值和数据
(一),以常用设置"08 77 8F 69"控制条件为例,先搞清楚它――具有的访问权限。
1、对"08 77 8F 69"值进行计算,该值定位于各区块3的6,7,8,9四个字节内,字节6=08,字节7=77,
字节8=8F,字节9=69(默认值,不予计算)。
2、例如:字节6=08,对应其二进制值=00001000, 则对6,7,8这三个字节进行二进制转换结果见下表:
4、对以上6,7,8字节的存取/控制二进制已取反值,依照表2,表4块位转换为各块控制值,如下表:
注意: 高4位的各块值=低4位的各块值时,其值可用。高4位值≠低4位值时,其值不可用!
5、查对访问权限(数据存取控制依照表3,块3存取控制依照表5),该例"08 77 8F 69"的访问权限为:
◆ 块3 = 011:权限为:KeyA,KeyB均不可读,验证KeyB正确后可改写KeyA和KeyB,验证KeyA或KeyB正确后可读"控制位"。在此可见密钥KeyB的重要性,KeyB不正确是无法看到块3控制值,更无法修改密钥。
◆ 块2 = 块1 = 块0 = 110:权限为:验证KeyA或KeyB后可读该块数据,减值以及初始化值,只有验证KeyB 正确后才可改写该块数据,在此可以看到密钥KeyB对改写数据块也起着关键性作用。
(二)、"08 77 8F 69" 控制条件设置步骤:
由(一)可知:KeyB设置后为不可读,并且改写数据和改写控制位都需要正确验证它,故KeyB设置后程序
*** 作员必须妥善保管KeyB值,否则以后改写数据和控制位时,不正确的KeyB值将无法实现卡的任何 *** 作!!!
1、修改块3控制位的值:最初的各区块3内的KeyA,KeyB都是厂商12个"F"默认值(KeyA在任何条件下均为不可读,大部分读写机程序表现KeyA为未知的12个"0" ),在修改控制值时,先不要修改默认密码KeyA和KeyB,在控制位修改成功后,再去更改新密码值。即先对块3的控制位进行修改(默认值FF 07 80 69改为新值08 77 8F69)并执行写 *** 作。控制位写成功后,KeyB亦为12个"0"不可读了,但仍是隐藏的12个"f"默认值。
2、修改块3的KeyA和KeyB值:控制位08 77 8F 69值写成功后,验证KeyB正确后方可改写KeyA和KeyB新密码。在密码 *** 作模式键入要改写区块之先前密码B(先前密码为默认值时,则不需改动和加载),加载后反回数据 *** 作模式,再进行读值,KeyA和KeyB值的改写。
3、修改块0~块2中数据:由新的控制条件08778F69可知,要修改数据,必须先验证KeyB,故先设置密码 *** 作为KeyB认证方式,加载后再返回数据 *** 作模式,对要修改的数据块进行值的改写 *** 作。
4、上例中分析了"08 77 8F 69"的访问条件及其改写步骤,对用户的其它控制条件亦可参照应用。
MF1卡常见问题及处理建议
① 盲目 *** 作:造成某些区块误 *** 作被锁死不能再使用。应当仔细参考表3表5的控制权限后,予先得出 *** 作后的结果是否适合使用要求,并且列出 *** 作顺序表单再 *** 作。最好授权程序员对块3的设置作专人 *** 作。
② 丢失密码:再读写时造成密码认证出错而不能访问卡。特别要求在对MF卡进行块3编程 *** 作时,必须及时记录相关卡号的控制值,KeyA,KeyB等,而且应当有专人管理密码档案。
③错误设置:对MF1卡的块3控制块了解不透彻,错误的理解造成设置造成错误的设置。依照表2可知,目前Mf1卡的控制块仅只有8种数据块访问控制权限和8种控制块设置权限,超出这16种权限的其他代码组合,将直接引起错误设置而使卡片报废!
④ 极端权限:当块3的存取控制位C13C23 C33 = 110或者111时,称为极端权限。除特殊应用外一般不被使用!启用前认真权衡对密码读写,存取控制的锁死是否必要,否则,数据加密后即使有密码也无法读取被锁死的数据区块(看不见)!
⑤ 设备低劣:低劣的设备将直接影响卡的读写性能。对MF卡进行块3编程 *** 作的设备,特别要求其性能必须十分可靠,运行十分稳定!建议选用由飞利浦公司原装读写模块构建的知名读写机具!
⑥编程干扰:在对块3进行编程 *** 作时,不可以有任何的"IO"中断或打扰!包括同时运行两个以上程序干扰甚至PC机不良的开关电源纹波干扰等,否则,不成功的写 *** 作将造成某个扇区被锁死的现象,致使该扇区再次访问时出错而报废。
⑦ 数据出错:在临界距离点上读卡和写卡造成的。通常的读卡,特别是写卡,应该避免在临界状态(刚能读卡的距离)读卡。因为临界状态下的数据传送是很不稳定的!容易引起读写出错!
⑧ 人为失误:例如,密码加载 *** 作失误,误将KeyA加载为KeyB;或者是误将其他制卡厂约定的初始密码值如a0a1a2a3a4a5,b0b1b2b3b4b5加载到本公司生产的MF1卡内;或者在初始状态下(密码A=000000000000【隐藏状态,实际为ffffffffffff】,控制位=FF 07 80 69,密码B=ffffffffffff【可见】)若不经意地将KeyA=000000000000 删除后又重新输入12个"0",并加载了它!这时无意中已将KeyA原来12个隐藏的"f",修改成了12个"0",其后果可想而知!
⑨ 卡片失效:读写均无数据传送,读写器报告"寻卡错误"!卡片被超标扭曲,弯曲而造成内电路断裂。
⑩ 读写距离过近:与用户使用的读写器性能有关。标准型MF1卡的读写距离可达250px(在飞利浦公司的标准读写机具上测试的最大距离),国产知名品牌读写器一般可达5-250px。尺寸较小的匙扣卡,其读写距离当然比标准卡近许多,但只要可靠的读写距离≥5~10mm以上,一般不会影响正常使用!
>>>>要完整的实在太多了 还不明白找我
关于RFID简单 *** 作说明
读卡器寻卡完毕后,将读出卡的ID和卡的类型,04为S50卡,02为S70卡,两种卡的内部存储空间划分不同。以下实验内容RFID为S50卡。
针对于白卡(即空白卡、出厂后没有使用过的卡片),该卡默认的控制字为FF 07 80 69,其中69为备用字节,默认为69即可。对照下表
注:关于C3X0、C3X1、稿信凳C3X2、C3X3,目前猜测0、1、2、3对应这不同的控制字选项,比如存储控制?可以确定3可以更改密码,更改控制字。表中KEYA/B表示验证KEYA或KEYB后可获取的权限。
从上表可以看到默认控制字所开放的权限最全。我们要将该卡作为自己的产品去匹配时,就需要更改KEY,并且将KEY隐藏,即出厂初始化。
初始化:
控制字选用表中倒数第二个即0xF7 0x87 0x80 0x69,这样KEYA和KEYB会被键旅隐藏,也就是说在不知道更改后密码的情况下,其他用户通过简单手段无法读出密码。
出厂初始化-修改密码KEYB:
将新密码填充到下边数据的后6位,前6位可忽略。寻卡-防冲撞-选卡-校验完以后,直接向扇区的控制块写入该数坦亮据即可。
u8 datKeyAfter[16] = {0x01,0x02,0x03,0x04,0x05,0x06,\
0xF7,0x87,0x80,0x69,\
0x0B,0x0C,0x0D,0x0E,0x0F,0x10}
扇区图:
点击查看更多RFID应用详情
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)