M1卡区块控制位详解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
M1卡区块控制位详解
M1卡区块控制位详解
Mifare 1S50/Mifare 1S70
每个扇区的密码和存取控制都是独⽴的,可以根据实际需要设定各⾃的密码及存取 控制。
存取控制为4个字节,共32位,扇区中的每个块(包括数据块和控制块)的存取条件是由密码和存取控制共同决定的,在存取控制中每个块都有相应的三个控制位,定义如下:块0: C10 C20 C30
块1: C11 C21 C31
块2: C12 C22 C32
块3: C13 C23 C33
三个控制位以正和反两种形式存在于存取控制字节中,决定了该块的访问权限(如 进⾏减值操作必须验证KEY A ,进⾏加值操作必须验证KEY B ,等等)。
三个控制 位在存取控制字节中的位置,以块0
为例:
注意⾼字节和低字节顺序不同。
(⼀),以常⽤设置"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这三个字节进⾏⼆进制转换结果见下表:
字节6 = 0 0 0 0 1 0 0 0字节7 = 0 1 1 1 0 1 1 1字节8 = 1 0 0 0 1 1 1 1
3、参照表2及表4算法,字节6的全部⼆进制值取反,字节7的低四位⼆进制值取反,字节8不变
,
得到:
字节号对应⼆进制值位置⾼4位位置低4位
字节6字节7字节80 0 0 0 1 0 0 00 1 1 1 0 1 1 11 0 0 0 1 1 1 1C2Y C1Y C3Y 1 1 1 10 1 1 11 0 0 0C1Y C3Y C2Y 0 1 1 1
1 0 0 0
1 1 1 1
所属块位 块3块2块1块0 块3块2块1块0
4、对以上6,7,8字节的存取/控制⼆进制已取反值,依照表2,表4块位转换为各块控制值,如下表:
块3位字节7,字节6,字节8 = C13,C23,C33 = C1Y ,C2Y ,C3Y = 0 1 1
块2位块1位块0位字节7,字节6,字节8 = C12,C22,C32 = C1Y ,C2Y ,C3Y = 1 1 0
字节7,字节6,字节8 = C11,C21,C31 = C1Y ,C2Y ,C3Y = 1 1 0
字节7,字节6,字节8 = C10,C20,C30 = C1Y ,C2Y ,C3Y = 1 1 0
注意:
1、⾼4位的各块值=低4位的各块值时,其值可⽤。
⾼4位值≠低4位值时,其值不可⽤!
2、⾼位和低位的顺序是不⼀样的。
⾼位从上向下是C2,C1,C3。
低位是C1,C3,C2
76543210
6c23_b c22_b c21_b c20_b c13_b c12_b c11_b c10_b
7c13c12c11c10c33_b c32_b c31_b c30_b
8c33c32c31c30c23c22c21c20
9
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 8F 69)并执⾏写操作。
控制位写成功后,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"的访问条件及其改写步骤,对⽤户的其它控制条件亦可参照应⽤。
块012权限说明:
块3权限说明:
复旦微电⼦⽂档中说明如下:
⽐较常见的控制位
FF 07 80 69
默认值
字节6 FF= 1 1 1 1 1 1 1 1字节7 07= 0 0 0 0 0 1 1 1字节8 80= 1 0 0 0 0 0 0 0字节号对应⼆进制值位置⾼4位位置低4位
字节6字节7字节81 1 1 1 1 1 1 1
0 0 0 0 0 1 1 1
1 0 0 0 0 0 0 0
C2Y
C1Y
C3Y
0 0 0 0
0 0 0 0
1 0 0 0
C1Y
C3Y
C2Y
0 0 0 0
1 0 0 0
0 0 0 0
所属块位块3块2块1块0块3块2块1块0
块3位字节7,字节6,字节8 = C13,C23,C33 = C1Y,C2Y,C3Y = 0 0 1
块2位块1位块0位字节7,字节6,字节8 = C12,C22,C32 = C1Y,C2Y,C3Y = 0 0 0字节7,字节6,字节8 = C11,C21,C31 = C1Y,C2Y,C3Y = 0 0 0字节7,字节6,字节8 = C10,C20,C30 = C1Y,C2Y,C3Y = 0 0 0
权限解释:数据块012的权限为000,表⽰keyA和keyB
都可读可写。
权限最⾼。
块3为001,密码A为任何时候不可读出,可以通过AB写。
密码B可以通过AB读写。
控制字节可以通过AB读写。
-------------------------------------------------------------------------------------------------------------08 77 8F 69【适合实际使⽤,权限控制相对较好】
字节6 = 0 0 0 0 1 0 0 0字节7 = 0 1 1 1 0 1 1 1字节8 = 1 0 0 0 1 1 1 1
字节号对应⼆进制值位置⾼4位位置低4位
字节6字节7字节80 0 0 0 1 0 0 0
0 1 1 1 0 1 1 1
1 0 0 0 1 1 1 1
C2Y
C1Y
C3Y
1 1 1 1
0 1 1 1
1 0 0 0
C1Y
C3Y
C2Y
0 1 1 1
1 0 0 0
1 1 1 1
所属块位块3块2块1块0块3块2块1块0
块3位字节7,字节6,字节8 = C13,C23,C33 = C1Y,C2Y,C3Y = 0 1 1
块2位块1位块0位字节7,字节6,字节8 = C12,C22,C32 = C1Y,C2Y,C3Y = 1 1 0字节7,字节6,字节8 = C11,C21,C31 = C1Y,C2Y,C3Y = 1 1 0字节7,字节6,字节8 = C10,C20,C30 = C1Y,C2Y,C3Y = 1 1 0
权限解释:数据块012的权限为110,密码AB都可读,只有密码B可写。
密码B可增减。
⽐如,可在实际业务中密码A⽤于消费,密码B⽤于充值。
块3
011,密码A和密码B任何时间不允许读,只能⽤密码B写。
控制字节AB都可读,只有B可写。
07 8F 0F 69【冰冻,永远只可读不可写】
00 F0 FF 69【⾃杀,永远不可读不可写】⾃杀模式还有很多,把控制字写的不认识也⽆法使⽤,在实际中新⼿经常⼲的事,所以⼀定要控制好。
对数据块的操作
读 (Read):读⼀个块;
写 (Write):写⼀个块;
加(Increment):对数值块进⾏加值;
减(Decrement):对数值块进⾏减值;
存储(Restore):将块中的内容存到数据寄存器中;
传输(Transfer):将数据寄存器中的内容写⼊块中;
中⽌(Halt):将卡置于暂停⼯作状态;。