存取控制指符合什么条件才能对卡片进行操作。

S50和S70的块分为数据块和控制块,对数据块的操作有“读”、“写”、“加值”、“减值(含传输和存储)”四种,对控制块的操作只有“读”和“写”两种。

S50和S70的每个扇区有两组密码KeyA和KeyB,所谓的“条件”就是针对这两组密码而言,包括“验证密码A可以操作(KeyA)”、“验证密码B可以操作(KeyB)”、“验证密码A或密码B都可以操作(KeyA|B)”、“验证哪个密码都不可以操作(Never)”四种条件。

这些“条件”和“操作”的组合被分成8种情况,正好可以用3位二进制数(C1、C2、C3)来表示。

数据块(每个扇区除区尾块之外的块)的存取控制如下表所示:

从表中可以看出,

C1C2C3=000(出厂默认值)时最宽松,验证密码A或密码B后可以进行任何操作;

C1C2C3=111无论验证哪个密码都不能进行任何操作,相当于把对应的块冻结了;

C1C2C3=010和C1C2C3=101都是只读,如果对应的数据块写入的是一些可以给人看但不能改的基本信息,可以设为这两种模式;

C1C2C3=001时只能读和减值,电子钱包一般设为这种模式,比如用S50做的公交电子车票,用户只能查询或扣钱,不能加钱,充值的时候先改变控制位使卡片可以充值,充完值再改回来。

控制块(每个扇区的区尾块)的存取控制如下表所示:

从表中可以看出,

密码A是永远也读不出来的,如果用户的数据块指定了验证密码A却忘了密码A,也就意味着这个数据块作废了,但本扇区其他数据块和其他扇区的数据块不受影响;

存取控制总是可以读出来的,只要别忘了密码A或密码B;

存取控制的写控制在设置时一定要小心,一旦弄成了“Never”,则整个扇区的存取条件再也无法改变,后悔都找不到地方,只能仰天长叹了;

C1C2C3=001(出厂默认值)时最宽松,除了密码A不能读之外,验证了密码A其他读写操作都可以进行;

还有一个有意思的现象是当C1C2C3=000、C1C2C3=010和C1C2C3=001时,所有的操作都不使用密码B,这时候密码B占据的6个字节可以提供给用户作为普通数据存储用,相当于每个扇区增加了6字节的用户可用存储容量。

由于卡片出厂的默认值C1C2C3=001,所以对于新买来的卡片,不要使用密码B进行认证,否则会导致区尾块和数据块都无法进行任何操作。我测试过不同厂家的新卡片,有的验证密码B后确实扇区内的所有块都无法操作,但有的卡片不能操作区尾块,却可以操作数据块,本文以NXP的原装卡为准。当然用户可以放心,新卡不让你验证密码B而你却验证了,不会对卡照成什么伤害,改回用密码A验证,卡片还是可以正常使用的。

S50的每个扇区有4个块,这四个块的存取控制是相互独立的,每个块需要3个bit,四个块共使用12个bit。在保存的时候,为了防止控制位出错,同时保存了这12个bit的反码,这样一个区的存储控制位在保存时共占用24bit的空间,正好是3个字节。我们前面说存取控制字有四个字节(区尾块的Byte6~Byte9),实际上只使用的Byte6、Byte7和Byte8,Byte9没有用,用户可以把Byte9作为普通存储空间使用。各块控制位存储格式如下:

由于出厂时数据块控制位的默认值是C1C2C3=000,控制块的默认值是C1C2C3=001,而Byte9一般是69H,所以出厂白卡的控制字通常是FF078069H.

S70的前32个数据块结构和S50完全一致。后8个数据块每块有15个普通数据块和一个控制块。显然如果每个数据块块单独控制将需要8字节的控制字,控制块中放不下这么多控制字。解决的办法是这15个数据块分为三组,块0~4为第一组,块5~9为第二组,块10~15为第三组,每组共享三个控制位,也就是说每组控制位C1C2C3控制5个数据块的存取权限,从而与前32个扇区兼容。

转载于:https://www.cnblogs.com/worldsing/p/3300055.html

射频识别技术漫谈(14)——S50与S70存取控制【worldsing笔记】相关推荐

  1. 射频识别技术漫谈(6-10)

    射频识别技术漫谈(6)--通讯协议概述 通讯协议是通讯的双方或多方在交流时遵守的规矩,包括谁先发起通讯,先交流什么,后交流什么,一方如何问,另一方如何答等.在这里通迅的双方指的是读写器和卡片. 首先是 ...

  2. 射频识别技术漫谈(28)——基于MF1射频卡的酒店门锁设计

    [转自]http://blog.sina.com.cn/s/blog_9ed067ad0101dupi.html 电子门锁是现代星级酒店管理电子化.智能化的重要电子设备.相较于传统的机械锁,基于RFI ...

  3. 射频识别技术漫谈(3)——能量、调制

     http://blog.sina.com.cn/s/blog_9ed067ad0100xrss.html 无源和免接触是非接触式IC卡相对于接触式IC卡的两大特点.无源是指卡片上没有电源,免接触 ...

  4. 射频识别技术漫谈(32)——曼侧斯特码与FM0编码的防冲突原理

    [转自]http://blog.sina.com.cn/s/blog_9ed067ad0102vyl6.html 在RFID技术中,从低频的125KHz.134.2KHz到高频的13.56MHz,再到 ...

  5. 射频识别技术漫谈(5)——防冲突【worldsing 笔记】

    正常情况下读写器某一时刻只能对磁场中的一张射频卡进行读写操作.但是当多张卡片同时进入读写器的射频场时,读写器怎么办呢?读写器需要选出唯一的一张卡片进行读写操作,这就是防冲突. 防冲突机制是非接触式智能 ...

  6. 射频识别技术漫谈(27)——CPU卡概述

    [转自]http://blog.sina.com.cn/s/blog_9ed067ad01018h0z.html 智能卡按安全级别可以分为三类:存储器卡.逻辑加密卡和CPU卡,其中CPU卡是安全级别最 ...

  7. 射频识别技术漫谈(29)——射频接口芯片TRF7960

    [转自]http://blog.sina.com.cn/s/blog_9ed067ad0101fdhv.html TRF7960系列是TI推出的载波为13.56MHz.支持ISO15693.ISO14 ...

  8. 射频识别技术漫谈(30)——PN512的寄存器设置

    [转自]http://blog.sina.com.cn/s/blog_9ed067ad0101fz1r.html PN512是NXP推出的一款低功耗.支持多协议的13.56MHz射频接口芯片.在主动模 ...

  9. 技术胖1-4季视频复习— (看视频笔记)

    输入 技术胖视频1-4季 总记不太住的 模板的使用,template component 的注册.传值.父子组件 methods中的 $event nextTick 使用是在 哪一步前,哪一步后? 内 ...

最新文章

  1. php框架打印session,Session组件
  2. 用AWStats分析网站日志
  3. Python 类的特殊成员方法详解
  4. MySQL实现当前数据表的所有时间都增加或减少指定的时间间隔
  5. python实训总结万能版3000字_实训总结万能版2000字范文五篇
  6. Java 多线程(六)——进程间通信与线程间通信
  7. 列表边框column-rule
  8. python自学记录 pydev安装
  9. ARC_xp_20160526
  10. 决定员工发展命运的34条重要行为规范
  11. 邻接矩阵转换为邻接表;邻接表转换为邻接矩阵
  12. DirectX终极游戏开发指南引擎源码分析
  13. kindle看pdf乱码_kindle阅读pdf中文乱码解决
  14. 抖音小程序支付开发流程和实现
  15. webservice 传输加密
  16. win7计算机自动关机设置在哪里设置方法,win7自动关机怎么设置?W7自动关机命令设置方法...
  17. 与苹果一起下坠|深氪Lite
  18. 凌恩生物文献分享|颠覆性的宏基因组新思路,速来get!
  19. 估值指标二把手——市净率
  20. window.print() 文字过多会打印不全_明天开始打印准考证,你需要注意这些!

热门文章

  1. mysql 子分区_MySQL子分区一例
  2. 存储控制器wwn号_正文-新华三集团-H3C
  3. qstring 属于元数据类型吗_2020年退休养老金只有1800元,属于什么水平?还要继续工作吗?...
  4. java高淇_高淇java300集JAVA常用类作业
  5. ibmmq 通道命令_IBM_MQ常用命令的.doc
  6. php头代码,PHP常用header头定义代码示例汇总
  7. cmd运行java文件_Java基础 前传
  8. 9.QML Qt Quick Controls 2中常用的界面形式——并排式界面(SwipeView)
  9. mysql 错误1930xc1_Mysql写入记录出现 Incorrect string value: '\xB4\xE7\xB1\xCA\xBC\xC7‘错误?(写入中文)...
  10. Cocos Creator快速开通联网服务教程