首页 > 技术文章 > 实训二飞利浦S50卡控制位和密钥修改实训

wxb293 2020-07-12 10:07 原文

实训二飞利浦S50卡控制位和密钥修改实训

一、实训目的

1、理解S50卡数据存取安全机制。

2、掌握S50卡存取控制位的修改方法,以及对数据存取的影响。

3、掌握S50卡密钥的修改方法,以及对数据存取的影响。

二、实训设备

1、笔记本电脑,Windows 7或Win10操作系统,VS2012软件开发环境。

2、BC750AS RFID读写器,MF1 S50空白卡2张。

三、实训内容和步骤

1、修改存取控制位

(1)修改控制字前进行数据读写测试(针对第8扇区块号0)

修改第8扇区块号0的数据(总块号32),由默认的“000000000000 00000000000000000000”(32个0),修改为“12345678000000000000000000000000”,然后再次读取数据,测试操作是否可行。

(2)修改第8扇区块0的控制字。

①设计控制字

要求第8扇区块0:可以通过验证密钥A或密钥B读取数据,但不能写入数据。查教材P34表2-7,得出控制字中的C10C20C30应该为010

②使用控制字演算表得出控制字

控制字演算表(表中初值为出厂默认值)

字节

块3

块2

块1

块0

Byte6F

b3  b2  b1  b0

/C13  (1 )

/C12   (1 )

/C11  (1 )

/C10   (1 )

b7  b6  b5  b4

/C23  (1 )

/C22   (1 )

/C21  (1 )

/C20   (0 )

Byte7

b3  b2  b1  b0

/C33  (0 )

/C32   (1 )

/C31  (1 )

/C30   (1 )

b7  b6  b5  b4

C13   (0 )

C12    (0 )

C11   (0 )

C10    (0 )

Byte8

b3  b2  b1  b0

C23   (0 )

C22    (0 )

C21   (0 )

C20    (0 )

b7  b6  b5  b4

C33   (1 )

C32    (0 )

C31   (0 )

C30    (0 )

将下表中C10C20C30的默认值000改为010,推算出修改后的控制字为:

          

③ 修改控制字

在“扇区功能”区中,选择扇区号:8,块号:3,修改块3中间4字节的值为上述推算出的控制字,然后单击“写块”按钮。

④ 修改控制字后,分别用密钥A和密钥B进行读、写操作,确认存取控制位修改后对数据读写的影响。操作结果记录如下(记录成功或失败):

通过密钥A读扇区8块号0的数据:     

通过密钥A写扇区8块号0的数据:      

通过密钥B读扇区8块号0的数据:      

通过密钥B写扇区8块号0的数据:      

上述结果说明:                           

(3)再次修改第8扇区块0的控制字,由C10C20C30=010,改为C10C20C30=011,表示第8扇区块0可以通过验证密钥B读取数据和写入数据。

① 在控制字的演算表中,按要求填写各位的值,推算出控制字为__________。

字节

块3

块2

块1

块0

Byte6F

b3  b2  b1  b0

/C13  ( )

/C12   ( )

/C11  ( )

/C10   ( )

b7  b6  b5  b4

/C23  ( )

/C22   ( )

/C21  ( )

/C20   ( )

Byte7

b3  b2  b1  b0

/C33  ( )

/C32   ( )

/C31  ( )

/C30   ( )

b7  b6  b5  b4

C13   ( )

C12    ( )

C11   ( )

C10    ( )

Byte8

b3  b2  b1  b0

C23   ( )

C22    ( )

C21   ( )

C20    ( )

b7  b6  b5  b4

C33   ( )

C32    ( )

C31   ( )

C30    ( )

② 修改控制字

在“扇区功能”区中,选择扇区号:8,块号:3,修改块3中间4字节的值为上述推算出的控制字,然后单击“写块”按钮。

③ 分别用密钥A和密钥B进行读、写操作,确认存取控制位修改后对数据读写的影响。操作结果纪录如下:(写成功或失败)

通过密钥A读第8扇区块0的数据:      

通过密钥A写第8扇区块0的数据:      

通过密钥B读第8扇区块0的数据:      

通过密钥B写第8扇区块0的数据:      

上述结果说明:                           

(6)恢复第8扇区块号3中的控制字为默认值FF078069,恢复第8扇区块号0中的数据为默认值“00000000000000000000000000000000”。

2、修改密钥B

(1)通过密钥B对第8扇区块号0中的数据进行读写操作,由默认的“00000000000000000000000000000000”(32个0),修改为“12345678000000000000000000000000”,然后再次读取数据,测试操作是否可行。

(2)修改第8扇区块号3(控制块)中的密钥B,将密钥B由“FFFFFFFFFFFF”修改为“FFFFFFFFFF00”。

(3)利用密钥B来读取和写入数据,验证密钥B的作用。操作结果记录如下:

通过密钥B(FFFFFFFFFFFF)读和写扇区8数据:

通过密钥B(FFFFFFFFFFFF)读和写扇区8数据:

通过密钥B(FFFFFFFFFF00)读和写扇区8数据:

通过密钥B(FFFFFFFFFF00)读和写扇区8数据:

上述结果说明:                           

(4)恢复修改的第8扇区的密钥B为出厂原默认值(FFFFFFFFFFFF),恢复第8扇区块号0的数据为出厂默认值“00000000000000000000000000000000”。

四、实训总结

1、回答问题:

(1)S50卡默认的存取控制字是什么?有什么操作权限?

(2)简要总结设置控制字的步骤。

(3)每个扇区都有专属于该扇区的存取控制字和密钥,扇区中每个块的读写权限是分别控制的吗?每个块的密钥是分别设置的吗?

2、简述本次实训的收获

(通过实训学到的知识,必须要写,并且要尽量写的具体一些)

推荐阅读