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
0扇区0块是特殊的数据块,用于存放制造商代码,包含芯片序列号。此块仅仅读。出于安全和系统需求,此块是制造商在生产过程中编程后写保护的。
普通数据块可通过数据块备份进行数据完整性的管理。
一般每块16个字节中有两个用来存放校验码和备份块的地址。各区均有3个16字节的块用于存储数据(区0仅仅有两个数据块以及一个仅仅读的厂商代码块)。
数据块可作两种应用:
1) 用作一般的数据保存,能够进行读、写操作。比如用于非接触门禁管理。
2) 用作数值块,能够进行加值、减值、转存和恢复。比如用于电子钱包。可直接控制存储值,如增值、减值。在用于非充值卡的一种情况(‘001’)下。仅仅能够读和减值。在还有一种情况(‘110‘)下。能够用key B充值。
数值块具有电子钱包功能(有效命令:read,write, increment,decrement, restore, transfer)。数值块有固定的数据格式。它採用冗余存储方法以保证其数据的正确性。
以便于错误检測、纠错和备份管理。数值块格式例如以下:
字节号
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
存储形式
VALUE
VALUE-1
VALUE
A
A-1
A
A-1
说明
数值
地址
Ø 数值:有符号4字节数值。数值的最低字节存储在最低地址字节。负值以标准的2的补码形式存储。出于数据完整性和安全原因,数值存储三次,两次不取反,一次取反。
Ø 地址(Adr):1字节地址。当进行备份管理时,可用于保存块的地址。地址保存四次。两次取反,两次不取反。在increment、decrement、restore和transfer 操作中,地址保持不变。它仅仅能通过write命令更改。
对密钥和控制位的读写取决于尾块(块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
0 0 0
块1
C11
C21
C31
0 0 0
块2
C12
C22
C32
0 0 0
块3
C13
C23
C33
0 1 1
块3的訪问控制位为011,依据下表查得:
passwordA:不可读。验证KEYB正确后。可写(更改)。
存取控制:验证KEYA或KEYB正确后。可读。验证KEYB正确后。可写。
passwordB:不可读;验证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
禁止
禁止
禁止
訪问控制位
所控制的訪问操作
用途
C1
C2
C3
读
写
加值
减值
转存
恢复
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认证不论什么扇区的不论什么块。卡将在认证后拒绝全部兴许存储器訪问。
文/闫鑫原创 转载请注明出处http://blog.csdn.net/yxstars/article/details/38081521转载于:https://www.cnblogs.com/bhlsheji/p/5145461.html
相关资源:数据结构—成绩单生成器