卡片分类
卡片有很多种分类方式,不同分类又有各式组合,不存在严格的树形或包含关系。本文章的主角是Mifare卡,其它信息均不细讲。
卡片通信方式
卡片从读取方式上包含 接触式、非接触式(如射频)、混合式
- 手机 Sim 卡是接触式卡
- 校园卡、公交卡等是非接触式射频卡
- 银行卡是混合式卡 —— 接触、磁条、射频
卡片通信方式可以从外观上轻松区分,设计上也都是取决于各自使用场景
Mifare 卡都属于 非接触式射频卡
非接触式射频卡的通信频率
超高频 UHF 卡 (865-995mHZ),不常见,常用于停车场的闸机系统,能隔数米远传输数据
低频 ID 卡 (125kHZ),存储只读数据,出厂写死卡号。常见于物流识别、宠物皮下芯片等
高频卡 (13.56mHz),又称 IC 卡,智能卡。它是目前最为常见,应用最广的射频卡片
Mifare 卡都属于 高频IC卡
非接触式高频射频卡的内置芯片
继续按照 高频射频式IC卡 的内置芯片分类,主要包含
- MIFARE 系列:非常常见,由恩智浦半导体公司(NXP)研发,包含多个系列,成本低用途广。
- 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”
解卡三次握手:
- 读卡器发送认证请求
- **卡片返回 Nonce:**卡片生成
nT发送给读卡器 - 读卡器加密 Nonce 并响应:读卡器用密钥加密
nT得密文a,发送a及自身生成的nR - 卡片验证并响应:卡片解密
a验证nT匹配后,加密nR返回给读卡器完成认证
-
读取
卡片的0块包含 UID,厂商码,卡片类型,等信息,不加密可被直接读取。
对于加密扇区,需要读取权限的密钥才能读取数据
-
写入
为了防复制、防破坏等安全需求,卡片的0块不可被写入
对于加密扇区,需要写入权限的密钥才能写入数据
写入操作还可根据密钥权限细分为:任意写入、增值、减值,由控制位决定
卡片状态:
- Power-off:卡片不在/离开射频场,处于断电状态
- Idle:卡片在射频场附近,进入空闲状态
- Ready:卡片收到读卡器REQA/B轮询,进入准备状态
- Active:卡片收到读卡器选择,进入激活状态
- 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 卡如此主流
Transclude of ../assets/mfcards.avif
M1 卡的使用寿命约为 10年,非常可靠。
M1 卡主要用于存储姓名、编号、电话、日期、金额等数据。虽然有更大容量的卡型,但 1K卡已经能满足大多数使用需求。此外 M1卡的各种软硬件系统(读卡系统、管理后台、数据库等)已相当成熟,被广泛应用。CPU 卡通常需要定制的软硬件系统,生产、发行、更换、维护各环节成本都相对较高,在很多场景中暂时不能替换 M1 卡。
MIFARE Classic 自1994年左右推出,关键技术的专利保护大致在2010年以后已经过期。任何组织或厂商都可以基于 MIFARE Classic 技术生产发行兼容卡,还能自行技术升级、魔改等(如2K卡、魔术卡),而无需支付授权费用。这注定了 M1卡的使用成本低,且更容易推广。
中国及多数国家专利保护期为20年,MIFARE DESFire 系列卡由于多次技术迭代,其专利到期大约于 2026–2040 年。或许在那之后它们会更快的替代 MIFARE Classic。
M1卡片数据
包含关系:卡片/Card > 扇区/Sector > 区块/Block > 字节/Byte
卡型容量
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密钥加密,且都未存储数据
如图所示,第 0 行 0扇区 0区块 存储 M1卡基础数据,该块不会被加密,出厂写死不可修改
第 0 行里,圈中的基础数据从前到后依次为:
- UID 卡号:卡片唯一标识符,4字节卡号有约42亿种组合,基本不会发生偶然重合。
- BCC 校验码:BCC = UID0^UID1^UID2
- 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 - 明文带指示数据

bin - 16进制

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 04 或 04 00(取决于字节序),意为 4 字节 UID + 标准防冲突协议支持。
- 若卡片支持 7 字节 UID(部分 MIFARE Plus 卡),ATQA 可能为
0200或4200 - 协议扩展:支持 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 官网与文档
Mifare Classic Docs En:
Mifare Classic 中文文档: