S50非接触式IC卡性能简介(M1)

  • 主要指标
  1. 容量为8K位EEPROM
  2. 分为16个扇区,每个扇区为4块,每块16个字节,以块为存取单位
  3. 每个扇区有独立的一组密码及访问控制
  4. 每张卡有唯一序列号,为32位
  5. 具有防冲突机制,支持多卡操作
  6. 无电源,自带天线,内含加密控制逻辑和通讯逻辑电路
  7. 数据保存期为10年,可改写10万次,读无限次
  8. 工作温度:-20℃~50℃(湿度为90%)
  9. 工作频率:13.56MHZ
  10. 通信速率:106 KBPS
  11. 读写距离:10 cm以内(与读写器有关)

  • 存储结构
  1. M1卡分为16个扇区,每个扇区由4块(块0、块1、块2、块3)组成,(我们也将16个扇区的64个块按绝对地址编号为0~63,存贮结构如下图所示:

  

块0

     

数据块

0

扇区0  

块1

数据块

1

块2

数据块

2

块3

密码A   存取控制   密码B

控制块

3

  

块0

数据块

4

扇区1

块1

数据块

5

块2

数据块

6

块3

密码A   存取控制   密码B

控制块

7

            ∶

  

  0

数据块

60

扇区15  

  1

数据块

61

  2

数据块

62

  3

密码A    存取控制   密码B

控制块

63

  1. 第0扇区的块0(即绝对地址0块),它用于存放厂商代码,已经固化,不可更改。
  2. 每个扇区的块0、块1、块2为数据块,可用于存贮数据。

   数据块可作两种应用:

  • 用作一般的数据保存,可以进行操作。
  • 用作数据值,可以进行初始化值、加值、减值、读值操作。
  • 每个扇区的块3为控制块,包括了密码A、存取控制、密码B。具体结构如下:
  •          A0 A1 A2 A3 A4 A5   FF 07 80 69     B0 B1 B2 B3 B4 B5

                密码A(6字节)  存取控制(4字节) 密码B(6字节)  

  • 每个扇区的密码和存取控制都是独立的,可以根据实际需要设定各自的密码及存取控制。存取控制为4个字节,共32位,扇区中的每个块(包括数据块和控制块)的存取条件是由密码和存取控制共同决定的,在存取控制中每个块都有相应的三个控制位,定义如下:
  •     

              块0:   C10   C20   C30

              块1:   C11   C21   C31

              块2:   C12   C22   C32

              块3:   C13   C23   C33

      三个控制位以正和反两种形式存在于存取控制字节中,决定了该块的访问权限(如  

      进行减值操作必须验证KEY A,进行加值操作必须验证KEY B,等等)。三个控制

      位在存取控制字节中的位置,以块0为例:

       对块0的控制:

               bit  7    6     5       4     3      2      1      0

    字节6

    C20_b

    C10_b

    字节7

    C10

    C30_b

    字节8

    C30

    C20

    字节9

                    ( 注: C10_b表示C10取反 )

          存取控制(4字节,其中字节9为备用字节)结构如下所示:

              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

                         ( 注: _b表示取反 )

        6、数据块(块0、块1、块2)的存取控制如下:

  •   控制位(X=0..2)

      

             访 问 条 件 (对数据块 0、1、2)

    C1X

    C2X

    C3X

     Read

     Write

    Increment

    Decrement, transfer,

    Restore

    0

    0

    0

    KeyA|B

    KeyA|B

    KeyA|B

    KeyA|B

    0

    1

    0

    KeyA|B

    Never

    Never

    Never

    1

    0

    0

    KeyA|B

    KeyB

    Never

    Never

    1

    1

    0

    KeyA|B

    KeyB

    KeyB

    KeyA|B

    0

    0

    1

    KeyA|B

    Never

    Never

    KeyA|B

    0

    1

    1

    KeyB

    KeyB

    Never

    Never

    1

    0

    1

    KeyB

    Never

    Never

    Never

    1

    1

    1

    Never

    Never

    Never

    Never

         (KeyA|B 表示密码A或密码B,Never表示任何条件下不能实现)

      例如:当块0的存取控制位C10 C20 C30=1 0 0时,验证密码A或密码B正确后可读;

            验证密码B正确后可写;不能进行加值、减值操作。

        7、控制块块3的存取控制与数据块(块0、1、2)不同,它的存取控制如下:

    密码A

    存取控制

    密码B

    C13

    C23

    C33

    Read

    Write

    Read

    Write

    Read

    Write

    0

    0

    0

    Never

    KeyA|B

    KeyA|B

    Never

    KeyA|B

    KeyA|B

    0

    1

    0

    Never

    Never

    KeyA|B

    Never

    KeyA|B

    Never

    1

    0

    0

    Never

    KeyB

    KeyA|B

    Never

    Never

    KeyB

    1

    1

    0

    Never

    Never

    KeyA|B

    Never

    Never

    Never

    0

    0

    1

    Never

    KeyA|B

    KeyA|B

    KeyA|B

    KeyA|B

    KeyA|B

    0

    1

    1

    Never

    KeyB

    KeyA|B

    KeyB

    Never

    KeyB

    1

    0

    1

    Never

    Never

    KeyA|B

    KeyB

    Never

    Never

    1

    1

    1

    Never

    Never

    KeyA|B

    Never

    Never

    Never

       例如:当块3的存取控制位C13 C23 C33=1 0 0时,表示:

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

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

               密码B:验证KEYA或KEYB正确后,可读、可写。

  • 工作原理
  • 卡片的电气部分只由一个天线和ASIC组成。

    天线:卡片的天线是只有几组绕线的线圈,很适于封装到IS0卡片中。

    ASIC:卡片的ASIC由一个高速(106KB波特率)的RF接口,一个控制单元和一个

          8K位EEPROM组成。

    工作原理:读写器向M1卡发一组固定频率的电磁波,卡片内有一个LC串联谐振电路,其频率与读写器发射的频率相同,在电磁波的激励下,LC谐振电路产生共振,从而使电容内有了电荷,在这个电容的另一端,接有一个单向导通的电子泵,将电容内的电荷送到另一个电容内储存,当所积累的电荷达到2V时,此电容可做为电源为其它电路提供工作电压,将卡内数据发射出去或接取读写器的数据。

  • M1射频卡与读写器的通讯
  • 复位应答(Answer to request)

    M1射频卡的通讯协议和通讯波特率是定义好的,当有卡片进入读写器的操作范围时,读写器以特定的协议与它通讯,从而确定该卡是否为M1射频卡,即验证卡片的卡型。

    防冲突机制 (Anticollision Loop)

    当有多张卡进入读写器操作范围时,防冲突机制会从其中选择一张进行操作,未选中的则处于空闲模式等待下一次选卡,该过程会返回被选卡的序列号。

    选择卡片(Select Tag)

    选择被选中的卡的序列号,并同时返回卡的容量代码。

    三次互相确认(3 Pass Authentication)

    选定要处理的卡片之后,读写器就确定要访问的扇区号,并对该扇区密码进行密码校验,在三次相互认证之后就可以通过加密流进行通讯。(在选择另一扇区时,则必须进行另一扇区密码校验。)

    对数据块的操作

     (Read):读一个块;

    (Write):写一个块;

    (Increment):对数值块进行加值;

    (Decrement):对数值块进行减值;

    存储(Restore):将块中的内容存到数据寄存器中;

    传输(Transfer):将数据寄存器中的内容写入块中;

    中止(Halt):将卡置于暂停工作状态;

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
S50卡的密钥A和密钥B可以通过修改卡片的访问控制位(AC)来实现。以下是一个示例代码,可以通过修改卡片的AC来修改密钥A和密钥B。 ```python from smartcard.System import readers from smartcard.util import toHexString, toBytes # S50卡的默认密钥A和密钥B DEFAULT_KEY_A = [0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF] DEFAULT_KEY_B = [0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF] # 修改密钥A和密钥B的AC值 new_key_A = [0x11, 0x22, 0x33, 0x44, 0x55, 0x66] new_key_B = [0x77, 0x88, 0x99, 0xAA, 0xBB, 0xCC] new_AC = [0x78, 0x77, 0x88, 0x11, 0x00] # 获取读卡器 r = readers()[0] # 连接卡片 connection = r.createConnection() connection.connect() # 选择MF目录 resp = connection.transmit(toBytes("00A40004023F00")) # 选择S50卡的目录 resp = connection.transmit(toBytes("00A40004021001")) # 选择要修改的块 block_number = 4 resp = connection.transmit(toBytes("00B00000" + "{:02X}".format(block_number) + "10")) # 读取块的原始数据 old_data = resp.getData() # 修改块的访问控制位(AC)和密钥A和密钥B new_data = old_data[:6] + new_AC + new_key_A + old_data[14:20] + new_key_B + old_data[26:] # 写入修改后的块数据 resp = connection.transmit(toBytes("00D600" + "{:02X}".format(block_number) + "10" + toHexString(new_data))) # 断开连接 connection.disconnect() ``` 需要注意的是,以上代码仅适用于S50卡,并且需要使用正确的块号来选择要修改的块。在实际使用中,需要根据实际情况进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

姜浩鑫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值