NFC 标签类型识别:ATQA、SAK、ATS 完全解读
当 NFC 读卡器靠近一张标签时,在读出任何 NDEF 数据之前,标签会先通过反碰撞(Anti-collision)流程上报自己的"身份证"——几个关键字节。读懂这些字节,就能在不读取任何应用数据的情况下判断芯片型号、UID 长度和协议能力。本文以 ISO 14443 Type A 为主线,完整解读 ATQA、SAK、ATS 三个核心字节,并给出常见芯片的对照速查表。
一、反碰撞流程:标签自报家门的过程
读卡器与 Type A 标签的初始交互遵循 ISO 14443-3 定义的四步流程:
- REQA(0x26):读卡器广播"请求",场内所有 Type A 标签回应 ATQA(2 字节);
- 防冲突循环(ANTICOLLISION):如果多张标签同时应答,读卡器通过级联层级逐个分离,获得标签的 UID(4/7/10 字节);
- SELECT(选择):读卡器用 UID 指定唯一标签,标签回应 SAK(1 字节);
- RATS(仅 ISO 14443-4 卡):请求 ATS,进入 APDU 通信阶段。
ATQA 告诉你"这是哪类平台",SAK 告诉你"这张卡遵循什么协议",ATS 则补充"传输参数细节"。三者组合即可唯一定位绝大多数市售芯片。
二、ATQA:请求应答字节
ATQA 共 2 字节 16 位。其中两个最高有效位(bit 8)标识 UID 大小,其余位编码芯片平台。常见 ATQA 值如下:
| ATQA(十六进制) | 芯片家族 | UID 长度 | 说明 |
|---|---|---|---|
| 00 04 / 00 44 | MIFARE Ultralight、NTAG 21x 系列 | 7 字节 | NXP NFC Forum Type 2 平台 |
| 00 08 | MIFARE Classic 1K / Mini | 4 字节 | 最经典的 Classic 1K 组合 |
| 00 18 | MIFARE Classic 4K | 4 字节 | 同家族,容量更大 |
| 03 44 | MIFARE DESFire EV1/EV2/EV3 | 7 字节 | ISO 14443-4(Type 4) |
| 03 04 | MIFARE Plus(SL3 模式) | 7 字节 | 向下兼容 Classic |
| 00 02 | MIFARE Classic(随机 UID) | 7 字节 | 部分防克隆版本 |
注意:同一芯片在不同级联层级的 ATQA 可能不同(如 00 04 与 00 44 属于同一芯片的不同 cascade level),这属于正常现象而非不同型号。
三、SAK:选择确认字节
SAK 只有 1 字节,但信息密度极高。关键位定义如下:
- Bit 6 = 1:卡符合 ISO 14443-4,支持 RATS/ATS 与标准 APDU 命令(DESFire、NTAG 4xx、JCOP 等支付级芯片);
- Bit 6 = 0:私有协议卡(MIFARE Classic 的 Crypto-1、Ultralight 的直接读页);
- Bit 5 = 1:符合 NFC Forum Tag Platform 规范(可判定 Type 2);
- Bit 4 / Bit 3:级联完成与防冲突完成标志。
| SAK | 芯片 | ISO 14443-4 | NFC Forum |
|---|---|---|---|
| 0x08 | MIFARE Classic 1K | 否 | 否 |
| 0x18 | MIFARE Classic 4K | 否 | 否 |
| 0x00 | Ultralight / NTAG 21x | 否 | 是(Type 2) |
| 0x20 | DESFire / NTAG 424 DNA / JCOP | 是 | Type 4 |
| 0x28 | MIFARE Plus(SL1→SL3) | 是 | 否 |
四、ATS:选择应答字节(仅 14443-4 卡)
若 SAK bit 6 = 1,读卡器发送 RATS 后标签回应 ATS,进一步说明传输能力。ATS 结构为:[TL] [T0] [TA(1)] [TB(1)] [TC(1)] [历史字节]。以 DESFire EV3 的 ATS 06 75 77 81 02 80 为例:
- TL = 06:ATS 总长 6 字节;
- T0 = 75:TA1/TB1/TC1 均存在,FSCI = 5(帧大小 64 字节);
- TA1 = 77:DSI/DRI 均为 7,即支持 848 kbps 最高速率;
- TB1 = 81:FWI = 8(帧等待时间),SFGI = 1;
- TC1 = 02:支持 CID,不支持 NAD。
调试支付终端时,ATS 是判断卡片是否达到目标波特率的第一手资料。
五、Type 3(FeliCa)与 Type 5(ISO 15693)的识别
日本交通卡(Suica)、部分国内园区卡使用 FeliCa(Type 3),它不走 ATQA/SAK 流程,而是响应 REQC(0x30)命令,返回 18 字节的 SENSF_RES,前缀 01 01 是 FeliCa 家族的明显标志。而 ICODE SLIX、ST25TV 等仓储/图书馆标签属于 ISO 15693(Type 5),使用 Inventory 命令响应 1 字节 DSFID + 8 字节 UID,读距可达 1 米以上但速率较慢。手机 App(如 NXP TagInfo)会把这三类协议统一展示,自己写底层驱动时则需要分别处理。
六、实用识别流程与技巧
- 先看 ATQA 前半字节:
00开头大概率是 NXP Type 2 平台或 Classic,03开头大概率是 14443-4 支付卡; - 再看 SAK bit 6:为 1 则发 RATS 取 ATS,为 0 则按 Type 2 / Classic 路径处理;
- UID 长度辅助判断:4 字节 UID 的现代标签(ATQA 00 08)多为老版 Classic 或兼容卡,7 字节 UID 是近十年主流;
- 遇到识别不出的组合,用固定模板记录 ATQA+SAK+ATS 全部字节,对照 NXP 产品选型手册即可缩小范围。
七、相关工具与延伸阅读
拿到手上的标签字节后,可以配合本站工具继续分析:TLV 解析器 解析标签返回的数据结构,APDU 状态码速查 解释 14443-4 卡的响应状态字,ATR 解码器 处理接触式双界面卡的复位应答。想继续深入 NFC 主题,推荐阅读本知识库的《NDEF 报文格式详解》、《如何向 NFC 标签写入 NDEF》与《MIFARE Classic 存取控制位详解》。
卡智通