• Mifare系列5-存储结构(转)


      文/闫鑫原创   转载请注明出处http://blog.csdn.net/yxstars/article/details/38081521

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

         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。

    型号

    扇区号

    名称

    绝对块

    Mifare S50

     

                  sector0                   

    厂商代码                      

    B0                                                                       

    数据块

    B1

    B2

    扇区尾块

    B3

    -

    -

    -

    Sector15

     

    数据块

    B60

    B61

    B62

    扇区尾块

    B63

                 Mifare S70                

    -

    -

    -

    Sector31

     

    数据块

    B124

    B125

    B126

    扇区尾块

    B127

    -

    -

    -

    -

    -

    -

    -

    -

    -

    Sector39

     

     

     

     

     

     

    数据块

    B240

    B241

    B242

    B243

    B244

    B245

    B246

    B247

    B248

    B249

    B250

    B251

    B252

    B253

    B254

    扇区尾块

    B255




    1. 制造商块

    0扇区0块是特殊的数据块,用于存放制造商代码,包括芯片序列号,此块只读。出于安全和系统需求,此块是制造商在生产过程中编程后写保护的。



    2. 普通数据块

         普通数据块可通过数据块备份进行数据完整性的管理。一般每块16个字节中有两个用来存放校验码和备份块的地址。各区均有3个16字节的块用于存储数据(区0只有两个数据块以及一个只读的厂商代码块)。


    数据块可作两种应用:

    1)  用作一般的数据保存,可以进行读、写操作。例如用于非接触门禁管理。

    2)  用作数值块,可以进行加值、减值、转存和恢复。例如用于电子钱包,可直接控制存储值,如增值、减值。在用于非充值卡的一种情况(‘001’)下,只能够读和减值。在另一种情况(‘110‘)下,可以用key B充值。

    数值块具有电子钱包功能(有效命令:read,write, increment,decrement, restore, transfer)。数值块有固定的数据格式,它采用冗余存储方法以保证其数据的正确性。以便于错误检测、纠错和备份管理。数值块格式如下:

              字节号           

    15  

    14  

    13  

    12  

    11

    10

    9  

    7

    6

    5

    4

    3   

    1   

    0

    存储形式

    VALUE              

     VALUE-1

    VALUE

    A

    A-1

    A

      A-1

                   说明                  

    数值  

    地址 



    Ø  数值:有符号4字节数值。数值的最低字节存储在最低地址字节。负值以标准的2的补码形式存储。出于数据完整性和安全原因,数值存储三次,两次不取反,一次取反。

    Ø  地址(Adr):1字节地址,当进行备份管理时,可用于保存块的地址。地址保存四次。两次取反,两次不取反。在increment、decrement、restore和transfer 操作中,地址保持不变。它只能通过write命令更改。



    3. 尾块的读写条件

         对密钥和控制位的读写取决于尾块(块3)的访问控制位,分为“禁止”、“KEYA”、“KEY B”和“KEY A|B”( KEY A或KEY B)。


    字节号

    0

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

             说明          

      密钥A  

    读写控制

    密钥B(可选)


          在每个扇区最后一个块即区尾中存放有密钥A、访问条件、密钥B等内容,它们用于控制对该扇区的操作。其中第0-5字节为48位的密钥A;第6-8字节为访 问控制条件;第9字节为备用区可用于存放特殊的应用数据,如存放数据备份区的地址;剩下的6个字节存放密钥B,如用户不需要密钥B,则可用于存放一般的应 用数据。由于区尾中访问条件的数据很重要,因此使用了冗余存储的方法。

      

     控制位字节具体说明如下:

           bit           

           7        

           6           

           5            

           4          

           3             

           2           

           1          

           0            

    字节6

    C23_b

    C22_b

    C21_b

    C20_b

    C13_b

    C12_b

    C11_b

    C10_b

    字节7

    C13

    C12

    C11

    C10

    C33_b

    C32_b

    C31_b

    C30_b

    字节8

    C33

    C32

    C31

    C30

    C23

    C22

    C21

    C20

    字节9

     

     

     

     

     

     

     

     


    例如:M1的卡片初始控制字为:7F078800,我们对它分析如下:

    字节6-7F:01111111

    字节7-07:00000111

    字节8-88:10001000

    字节9-00:0000 0000  

    那么我们可以得出:

                      块0                    

                     C10                   

                  C20              

                C30             

                

    块1

    C11

    C21

    C31

    0 0 0

    块2

    C12

    C22

    C32

    0 0 0

    块3

    C13

    C23

    C33

    0 1 1

     

    块3的访问控制位为011,根据下表查得:

    密码A:不可读;验证KEYB正确后,可写(更改)。

    存取控制:验证KEYA或KEYB正确后,可读;验证KEYB正确后,可写。

    密码B:不可读;验证KEYB正确后,可写。


     访问控制位                            

    所控制的访问对象

    注释

    KEY A

    访问控制位

    KEY B

          C1        

          C2  

              C3     

                读            

                

           读         

              

           读         

           

     

    0

    0

    0

    禁止

    Key A

    Key A

    Key B

    Key A

    Key A

    Key B可读                 

    0

    1

    0

    禁止

    禁止

    Key A

    禁止

    Key A

    禁止

    Key B可读

    1

    0

    0

    禁止

    Key B

    Key A|B

    禁止

    禁止

    Key B

     

    1

    1

    0

    禁止

    禁止

    Key A|B

    禁止

    禁止

    禁止

     

    0

    0

    1

    禁止

    Key A

    Key A

    Key A

    Key A

    Key A

    Key B可读

    传输配置状态

    0

    1

    1

    禁止

    Key B

    Key A|B

    Key B

    禁止

    Key B

     

    1

    0

    1

    禁止

    禁止

    Key A|B

    Key B

    禁止

    禁止

     

    1

    1

    1

    禁止

    禁止

    Key A|B

    禁止

    禁止

    禁止

     



    4. 数据块的访问控制条件


    访问控制位

    所控制的访问操作

    用途

        

            

             

                   读              

               写           

               加值           

               减值           

    转存

    恢复

     

    0

    0

    0

    key A|B1

    key A|B1

    key A|B1

    key A|B1

        传输配置状态    

    0

    1

    0

    key A|B1

    key B1

    禁止

    禁止

    读写块

    1

    0

    0

    key A|B1

    key B1

    禁止

    禁止

    读写块

    1

    1

    0

    key A|B1

    key B1

    key B1

    key A|B1

    数值块

    0

    0

    1

    key A|B1

    禁止

    禁止

    key A|B1

    数值块

    0

    1

    1

    key B1

    key B1

    禁止

    禁止

    读写块

    1

    0

    1

    key B1

    禁止

    禁止

    禁止

    读写块

    1

    1

    1

    禁止

    禁止

    禁止

    禁止

    读写块


    注:在传输配置状态下,必须用key A认证。

          如果相应扇区尾块Key B可读,则不得用作认证。如果读写器试图用灰色行的访问控制条件以Key B认证任何扇区的任何块,卡将在认证后拒绝所有后续存储器访问。



     
    wsksec@gmail.com Pressing on Toward the Goal
  • 相关阅读:
    Macbook Catalina安装n2n问题汇总
    pyspider macbook安装问题汇总
    Windows——如何在文件资源管理器地址栏快速打开Vscode
    Tauri——如何创建一个tauri项目
    Electron——如何使用nodejs工作线程
    JavaScript——一个简单的队列Demo
    美国美元如何充值抖音、快手等直播平台
    怎么取消苹果手机自动续费_知乎会员怎样取消自动续费
    封装OCX
    Zabbix监控——Zabbix建立模板(templates)及监控项(item)
  • 原文地址:https://www.cnblogs.com/shuk-notes/p/4790046.html
Copyright © 2020-2023  润新知