Lazy loaded image
言之有物
M1卡笔记① - 原理与数据
字数 3261阅读时长 9 分钟
2025-6-16
2026-6-22
类型
文章
状态
发布
日期
Jun 16, 2025
链接
11
描述
介绍相关卡片与技术,M1卡工作原理和数据使用
图标
密码
分类
言之有物
标签
无线电
NFC
⚠️
警告与免责声明:本文仅用于技术与知识分享,请遵守当地相关法律法规。作者及本站不会为任何人或其它生物造成的一切形式的损失或任何违法违规行为负责
💡

卡片分类

卡片有很多种分类方式,不同分类又有各式组合,不存在严格的树形或包含关系。本文章的主角是Mifare卡,其它信息均不细讲。

卡片通信方式

卡片从读取方式上包含 接触式、非接触式(如射频)、混合式
  • 手机 Sim 卡是接触式卡
  • 校园卡、公交卡等是非接触式射频卡
  • 银行卡是混合式卡 —— 接触、磁条、射频
卡片通信方式可以从外观上轻松区分,设计上也都是取决于各自使用场景
Mifare 卡都属于 非接触式射频卡

非接触式射频卡的通信频率

超高频 UHF 卡 (865-995mHZ),不常见,常用于停车场的闸机系统,能隔数米远传输数据
低频 ID 卡 (125kHZ),存储只读数据,出厂写死卡号。常见于物流识别、宠物皮下芯片等
高频卡 (13.56mHz),又称 IC 卡,智能卡。它是目前最为常见,应用最广的射频卡片
Mifare 卡都属于 高频IC卡

非接触式高频射频卡的内置芯片

继续按照 高频射频式IC卡 的内置芯片分类,主要包含
  • NTAG 系列:同样由恩智浦推出,常用于存储WIFI、联系人、链接等信息,方便操作与共享。
  • CPU 卡:例如 银行卡、MifareDESFire 等。用于高安全性场景中,目前不可破解。
  • 其它 :FeliCa 、 HID iClass 等,不常见。
高安全需求中,CPU卡更加常见。但因制造和管理成本低,Mifare Classic 卡仍在被大量应用。
可通过卡片的 SAK 值判断卡芯片类型,具体见后文

射频通信

标准与协议

RFID(射频识别):
  • 包含低频到超高频
  • 工作距离几厘米到几十米
  • 读写器和标签是独立的两个实体
  • 不支持P2P,设备间为主从关系
NFC(近场通信):
  • 特指高频(13.56mHz)
  • 工作距离 0-10 厘米
  • 既支持读写操作模式也支持卡模式
  • 支持P2P,设备对等可交换数据
NFC 在 RFID 的基础上发展而来,也兼容 RFID 高频的通信标准,但两者不是包含关系

ISO 14443-A/B

ISO 14443 标准定义了 13.56 MHz 卡和读卡器之间的各种特性。分为两种载波调制和二进制编码方式不同且互不兼容的类型:Type-A 和 Type-B ,其对应的呼叫请求命令分别为 REQA 和 REQB,读卡器需要专门支持才能处理对应类型的卡。
硬件设计上,Type-B 比 Type-A 成本更高,更复杂,在高安全性需求的读卡系统中更常见。
  • Type-A 常见于:所有 Mifare 卡片,遵循 ISO14443A 标准
  • Type-B 常见于:银行卡、大多数国家(包括中国)的电子身份证

Mifare Classic 卡通信

读卡器,又称读头、PCD

确认卡片

读卡器工作时持续发射 13.56mHz 射频电磁波,包含呼叫请求命令,同时为卡片提供电能。
  • 卡片响应:
    • 一旦卡收到此请求,它就会响应读卡器,回应卡类型,让读卡器知道如何进行通信。
  • 防碰撞:
    • 收到卡的响应后,读卡器会再发送几个请求来检测附近是否有其他卡,从而避免干扰与所需卡的通信。如果只有一张卡响应信号,则读取器选择该卡并继续通信。

通信

读卡器配套系统的会存储对应密钥或密钥算法。选中卡片后可以执行:
  • 解卡
    • 读卡器使用密钥认证,以访问加密的数据。读和写加密数据的前提都是通过对应权限的密钥解卡
      Nonce 在计算机术语中的意思是“使用一次的数字”,翻译后的一种简称为“随机数”。
      Nonce in computer terminology means "Number used once"
      解卡三次握手
      1. 读卡器发送认证请求
      1. 卡片返回 Nonce:卡片生成nT发送给读卡器
      1. 读卡器加密 Nonce 并响应:读卡器用密钥加密nT得密文a,发送a及自身生成的nR
      1. 卡片验证并响应:卡片解密a验证nT匹配后,加密nR返回给读卡器完成认证
  • 读取
    • 卡片的0块包含 UID,厂商码,卡片类型,等信息,不加密可被直接读取。
      对于加密扇区,需要读取权限的密钥才能读取数据
  • 写入
    • 为了防复制、防破坏等安全需求,卡片的0块不可被写入
      对于加密扇区,需要写入权限的密钥才能写入数据
      写入操作还可根据密钥权限细分为:任意写入、增值、减值,由控制位决定

卡片状态:

  • Power-off:卡片不在/离开射频场,处于断电状态
  1. Idle:卡片在射频场附近,进入空闲状态
  1. Ready:卡片收到读卡器REQA/B轮询,进入准备状态
  1. Active:卡片收到读卡器选择,进入激活状态
  1. Halt:卡片收到休眠命令,进入休眠状态(可被唤醒回到2)

MIFARE卡片系列

MIFARE卡遵守ISO14443A标准,是该标准的最有力代表,甚至同标准其它卡也会被称为MIFARE卡

MIFARE

MIFARE 卡系列目前分为
  • MIFARE Ultralight - 无加密,简称 M0 卡,用于一次性或有限次数使用,如地铁单程票
  • MIFARE Classic - 传统 Crypto-1 加密,广泛用于交通卡、会员卡、酒店门禁卡等
  • MIFARE Plus - 迭代安全升级版,可用 AES 加密,也兼容 Classic 的 Crypto-1 加密
  • MIFARE DESFire - 迭代安全升级版,支持 AES、TDES 加密、
目前知名度最高应用最广的就是 MIFARE Classic 卡型

MIFARE Classic

  • MIFARE Classic 1K(S50):总容量1KB
  • MIFARE Classic 4K(S70):总容量4KB
  • MIFARE Classic Mini(S20):总容量320Byte
这些卡型仅数据存储量不同,其中 MIFARE Classic 1K 卡 最最常见
“M1卡”既可以特指“MIFARE Classic 1K卡”,也可以指整个 MIFARE Classic 系列卡
由于 MIFARE Classic 1K 卡非常普及,影响力过大,有观点认为简称中的 ”1“ 特指 1K 卡;另有观点认为 ”1“ 特指MIFARE Classic系列的 Crypto-1 加密。简称本就是不严谨的,也没必要过于纠结。只是在少数情况需要明确区分 MIFARE Classic 系列内某卡型时,不要用简称。
IC 卡/智能卡 包含 M1 卡,不可将 M1 卡与 MIFARE Classic 外的卡型混为一谈。

为什么 M1 卡如此主流

M1 卡的使用寿命约为 10年,非常可靠。
M1 卡主要用于存储姓名、编号、电话、日期、金额等数据。虽然有更大容量的卡型,但 1K卡已经能满足大多数使用需求。此外 M1卡的各种软硬件系统(读卡系统、管理后台、数据库等)已相当成熟,被广泛应用。CPU 卡通常需要定制的软硬件系统,生产、发行、更换、维护各环节成本都相对较高,在很多场景中暂时不能替换 M1 卡。
notion image
MIFARE Classic 自1994年左右推出,关键技术的专利保护大致在2010年以后已经过期。任何组织或厂商都可以基于 MIFARE Classic 技术生产发行兼容卡,还能自行技术升级、魔改等(如2K卡、魔术卡),而无需支付授权费用。这注定了 M1卡的使用成本低,且更容易推广。
中国及多数国家专利保护期为20年,MIFARE DESFire 系列卡由于多次技术迭代,其专利到期大约于 2026–2040 年。或许在那之后它们会更快的替代 MIFARE Classic。

M1卡片数据

包含关系:卡片/Card > 扇区/Sector > 区块/Block > 字节/Byte

💡
所有计数序号均从 0 开始

卡型容量

Classic 1K卡:
扇区:每张卡含 0-15 共16扇区
区块:每扇区含 0-3 共4个区块
字节:每区块含 16 Bytes
Classic 4K卡:
扇区:每张卡含 0-39 共40扇区
区块:前32个扇区含 0-3 共4个区块,后8个扇区包含区块 0-15 共16个区块
字节:每区块含 16 Bytes
Classic Mini卡:
扇区:每张卡含 0-4 共5扇区
区块:每扇区含 0-3 共4个区块
字节:每区块含 16 Bytes

数据结构

该图示例了M1卡的0、1扇区,0扇区未加密(空密钥),1扇区使用相同的A/B密钥加密,且都未存储数据
该图示例了M1卡的0、1扇区,0扇区未加密(空密钥),1扇区使用相同的A/B密钥加密,且都未存储数据
如图所示,第 0 行 0扇区 0区块 存储 M1卡基础数据,该块不会被加密,出厂写死不可修改
第 0 行里,圈中的基础数据从前到后依次为:
  • UID 卡号:卡片唯一标识符,4字节卡号有约42亿种组合,基本不会发生偶然重合。
  • BCC 校验码:BCC = UID0^UID1^UID2^UID3,起辅助验证作用
  • SAK 卡类型:声明卡片类型,如此处 1K卡值为 08,更多例值见后文
  • ATQA 应答:告知卡片 UID 长度和遵循何种防冲突机制,更多信息见后文
  • ATS 厂商码:记录生产厂商和生产日期。该段数据并未标准化,有些卡可能包含自定义数据
所有扇区的最后一个区块称为控制块,由 A密钥-控制位-B密钥 三部分组成:
  • Key A 密钥A:6 字节的密钥,全是FF即为空密钥
  • Access Bits 控制位:规定A/B密钥各自在指定数据部分的读写权限
  • Key B 密钥B:6 字节的密钥,全是FF即为空密钥
0扇区 0区块每扇区控制块以外的所有区块均为数据存储区块

数据转储

MIFARE 卡的 “数据转储(dump)” 就是将卡片内完整数据导出,以文件形式保存于外部设备中。可用于卡片 备份、分析、修改、克隆 等各种需求。
json - 明文带指示数据
json - 明文带指示数据
bin - 16进制编辑
bin - 16进制编辑
eml - 纯明文(兼容性好)
eml - 纯明文(兼容性好)
上图为常见转储文件格式:
  • .json / .nfc(Proxmark / Flipper Zero 等 )
  • .bin / .mfd / .dump(Proxmark3 / libnfc / mfoc)
  • .eml(Proxmark3 模拟内存,不含任何不必要数据的文本形式)
未知数据:若部分扇区的数据或密钥未知或不能读取,转储文件内将用??占位

数据含义


SAK 卡片类型

SAK值用于声明卡片类型,它不只在 MIFARE 卡中被使用。
以下为常见值,“ / ”分隔符表示该 SAK值对应多种卡型,需结合其它信息进一步确认
  • 00 - MIFARE Ultralight / NTAG
  • 08 - MIFARE Classic 1K
  • 09 - MIFARE Mini
  • 18 - MIFARE Classic 4K
  • 20 - MIFARE Plus (Crypto1) / MIFARE DESFire / 其它CPU卡
  • 28 - MIFARE Plus (EV1/EV2) / CPU卡模拟 MIFARE Classic 1K卡
  • 38 - MIFARE Plus (AES) / MIFARE Classic 4K + DESFire 支持
  • 40 - P2P

ATQA 应答

该数据作用是告知卡片UID长度和遵循何种防冲突机制
0x0400 是标准的 MIFARE Classic 卡的应答,显示为 00 0404 00(取决于字节序),意为 4 字节 UID + 标准防冲突协议支持。
  • 若卡片支持 7 字节 UID(部分 MIFARE Plus 卡),ATQA 可能为 02004200
  • 协议扩展:支持 ISO 14443-4 的卡片(如 MIFARE DESFire)可能返回 0344
  • MIFARE Ultralight 系列、NTAG 系列,均为 0x0044( 4400

Access Bits 控制位

控制位包含4字节。前三个字节是真实的控制位,第四个是备用控制位一般用不上
如何配置控制位和使用密钥是管理员和读卡系统的事,和用户关系不大。以下是两个最常见的控制位,其它信息不细讲。如果遇到其它的控制位,可使用 MCT 或其它在线工具进行解析/计算。
 
  • FF 07 80 69 是默认控制位,表示:
    • 数据块:A密钥 / B密钥 均可读可写
      控制块:A密钥:A密钥禁读可写,控制位可读写,B密钥可读写(自身不可读,其它操作允许)
      控制块:B密钥:A密钥禁读禁写,控制位禁读禁写,B密钥禁读禁写(完全禁止)
 
  • 08 77 8F 00 是除默认外最常见的控制位,表示:
    • 数据块:A密钥可读可减值 / B密钥可读可写
      控制块:A密钥:A密钥禁读禁写,控制位可读禁写,B密钥禁读禁写(仅可读控制位)
      控制块:B密钥:A密钥禁读可写,控制位可读可写,B密钥禁读可写(可读写控制位,可写密钥)

参考

维基百科
B站UP-宅人改造家 的系列视频教程,包含详细的信息和经验。
恩智浦 Mifare Classic 官网与文档
 
上一篇
M1卡笔记② - 破解与对抗
下一篇
详解 Play Integrity 完整性认证

评论
Loading...