Mifare S50 标准IC卡有1K 字节的EEPROM,主要用来存储数据和控制信息。1K 字节的EEPROM分成16 个区,每区又分成4 段,每1段中有16 个字节。每个区的最后一个段叫“尾部"(trailer),它包括两个密钥和这个区中每一个段的访问条件(可编程)。

存储器组织(Memory Organization)

存储器访问(Memory Access)

在任何存储器操作前,卡需要先被选择,并经过认证(KEYA或KEYB)。对于可寻址的数据块的可能的存储器操作取决于使用的key和存储在相应的区尾的访问条件。

访问位(Access Bits)分析

假设若已知Sector 10的Block 3的数据(Hex 表示),共计16 个字节,如下所示:

00 00 00 00 00 00 FF 07 80 69 0B 0B 0B 0B 0B 0B

根据上面的访问条件(Access Conditions)图表,可知:

1)字节分布

前6个字节(Byte 0 - Byte 5)为密钥Key A,即00 00 00 00 00 00

中间4个字节(Byte 6 - Byte 9)为访问位(Access Bits),即FF 07 80 69

后6个字节(Byte 10 - byte 15)为密钥Key B,即0B 0B 0B 0B 0B 0B

2)访问控制位分布

根据 Byte 6 高4位,C23 C22 C21 C20为0 0 0 0;

根据 Byte 6 低4位,C13 C12 C11 C10为0 0 0 0;

根据 Byte 7 低4位,C33 C32 C31 C30为1 0 0 0。

访问位含义如下图所示:

每个访问位的最后一个数字表示相关的Block(Block 0 - Block 3),按各个块(Block)整理结果如下:

C13 C23 C33 为0 0 1,Block 3,sector trailer

C12 C22 C32为 0 0 0,Block 2,data block

C11 C21 C31为 0 0 0,Block 1,data block

C10 C20 C30为 0 0 0,Block 0,data block

注意:字节序号从0开始升序(从左到右),字节中位的序号从7开始降序(从左到右)。

还有,区尾(sector trailer)和数据段(data block)的访问条件(Access conditions)是不一致的

1)区尾的访问条件(Access conditions for the sector trailer)

注:用灰色标明的行是密钥B 可被读的访问条件,此时密钥B 可以存放数据。

而对于给定的数据,区尾的访问位为0 0 1,可以看到只能使用KEY A,可写入密钥KEYA但不可读,可读写访问控制位和KEYB。

2)数据段的访问条件(Access conditions for data blocks)

1 如果密钥B 可以在相应的区尾被读出,它就不能用于确认(在区尾的访问条件表中所有灰色行)。结果:如果RWD(读写装置Read Write Device)要用这些(带灰色标记的)访问条件的密钥B 确认任何段,卡会在确认后拒绝任何存储器访问操作。

例子中数据段的C1 C2 C3为0 0 0 用于传输配置(transport configuration),此时KEY B不能用来认证。

参考资料:

1、Mifare标准IC卡MF1 IC S50 功能说明书

2、NXP MF1 IC S50 Function specification  Rev.5.2 January 2007

最新文章

  1. OAuth in One Picture
  2. Linux运维初级教程(四)shell简介
  3. hdu 4784 Dinner Coming Soon(spfa + 优先队列)
  4. EF框架中加子类后出现列名 'Discriminator' 无效问题
  5. 简单理解在Mac OS X上运行ASP.NET程序
  6. 用python写makefile
  7. sql中的case when语句
  8. poj 2479 Maximum sum (最大字段和的变形)
  9. order by 自定义排序
  10. javascript 中 "!function(){}() " 是什么意思?
  11. QT 强止杀进程
  12. iOS ,呼叫捕获抛出勉未知方法的障碍
  13. (一个)AngularJS获取贴纸Hello World
  14. HDU 2092 整数解
  15. tcp netstat用法 TIME_WAIT状态解析 MTU以及MSS
  16. springMVC两种方式实现多文件上传及效率比较
  17. win10 uwp 打包第三方字体到应用
  18. Oracle数据库中SCOTT用户下的默认表
  19. 用 PLSQL 创建新用户及导入 dmp
  20. Job集群设计

热门文章

  1. 匈牙利算法(codevs2776)
  2. git --- push到远端
  3. iOS -- 隐藏返回按钮
  4. 探索 SharePoint 2013 Search功能
  5. Bete冲刺第四阶段
  6. 从 Microsoft SQL Server 迁移到 Oracle
  7. ViewPager导航栏TabLayout
  8. 页面打开自动触发onlick事件
  9. nodejs-helloword案例
  10. 【HDU 2063】过山车(二分图匹配)