【笔记】M1卡学习笔记
前言
MIFARE包括一系列依循ISO/IEC 14443-A规格,利用无线射频识别(频率为13.56MHz)的多种非接触式智能卡专有解决方案。(维基百科)
分区表
- M1卡共有16个扇区(Sector),每个扇区共有4个块(Block),每个块可以存放16字节的数据
| 扇区编号 | 第1块(数据块) | 第2块(数据块) | 第3块(数据块) | 第4块(密钥控制块) |
|---|---|---|---|---|
| Sector0 | Block0 | Block1 | Block2 | Block3 |
| Sector1 | Block4 | Block5 | Block6 | Block7 |
| Sector2 | Block8 | Block9 | Block10 | Block11 |
| Sector3 | Block12 | Block13 | Block14 | Block15 |
| Sector4 | Block16 | Block17 | Block18 | Block19 |
| Sector5 | Block20 | Block21 | Block22 | Block23 |
| Sector6 | Block24 | Block25 | Block26 | Block27 |
| Sector7 | Block28 | Block29 | Block30 | Block31 |
| Sector8 | Block32 | Block33 | Block34 | Block35 |
| Sector9 | Block36 | Block37 | Block38 | Block39 |
| Sector10 | Block40 | Block41 | Block42 | Block43 |
| Sector11 | Block44 | Block45 | Block46 | Block47 |
| Sector12 | Block48 | Block49 | Block50 | Block51 |
| Sector13 | Block52 | Block53 | Block54 | Block55 |
| Sector14 | Block56 | Block57 | Block58 | Block59 |
| Sector15 | Block60 | Block61 | Block62 | Block63 |
0扇区(Block0)
- Sector0的的第1块(Block0)为厂商块,M1卡(原装卡)厂商块为只读的,M1-UID卡(兼容原装卡的仿制卡)厂商块为可写的
- Byte0~3:序列号(UID)
- Byte4:BCC校验位
- Byte5:芯片容量和卡类型
- Byte6~15:原厂固化厂商、批次、芯片信息
密钥控制块
每个扇区的第3块为本扇区密钥控制块,每个扇区的密钥可以不相同
- Byte0~5:密钥A,出厂默认值为
FF FF FF FF FF FF - Byte6~9:存取控制位,出厂默认值为
FF 07 80 69 - Byte10~15:密钥B,出厂默认值为
FF FF FF FF FF FF - 密码出厂默认为
FF FF FF FF FF FF
- Byte0~5:密钥A,出厂默认值为
任何密钥鉴权读取Block3时,密钥A一定返回
00 00 00 00 00 00,永远读不到密钥A的明文,仅权限配置合适时可读出密钥B明文
1 | FF FF FF FF FF FF FF 07 80 69 FF FF FF FF FF FF |
权限
| C1C2C3 | 读权限 | 写权限 | 加值 | 减值/转移 |
|---|---|---|---|---|
| 000 | 需KeyA或KeyB认证 | 需KeyA或KeyB认证 | 需KeyA或KeyB认证 | 需KeyA或KeyB认证 |
| 001 | 需KeyA或KeyB认证 | 禁止 | 禁止 | 禁止 |
| 010 | 需KeyA或KeyB认证 | 禁止 | 禁止 | 禁止 |
| 011 | 需KeyA或KeyB认证 | 需KeyB认证 | 禁止 | 禁止 |
| 100 | 需KeyB认证 | 需KeyB认证 | 需KeyB认证 | 需KeyB认证 |
| 101 | 需KeyB认证 | 禁止 | 禁止 | 禁止 |
| 110 | 需KeyB认证 | 禁止 | 禁止 | 禁止 |
| 111 | 禁止 | 禁止 | 禁止 | 禁止 |
每个字节的各个位含义
- Byte6
8共同存储Block03的权限正码和补码 - Byte9无意义,可自定义存储数据
C23′
C2:权限位3:Block3的权限′:补码
| bit7 | bit6 | bit5 | bit4 | bit3 | bit2 | bit1 | bit0 | |
|---|---|---|---|---|---|---|---|---|
| Byte6 | C23′ | C22′ | C21′ | C20′ | C13′ | C12′ | C11′ | C10′ |
| Byte7 | C13 | C12 | C11 | C10 | C33′ | C32′ | C31′ | C30′ |
| Byte8 | C33 | C32 | C31 | C30 | C23 | C22 | C21 | C20 |