ISO/IEC 14443 Type A 的 SAK (Select Acknowledge) 說明
SAK 是什麼?
「SAK 是什麼?」章節SAK(Select Acknowledge)是 ISO/IEC 14443 Type A 防碰撞(Anti-collision)流程中的回應值。
當讀卡機完成一個 SELECT 指令後,卡片會回傳一個 1 Byte 的 SAK,用來告知讀卡機:
- UID 是否還有下一個 Cascade Level。
- 是否支援 ISO/IEC 14443-4(ISO-DEP)。
- 其他由標準或廠商定義的能力位元。
SAK 的目的不是辨識卡片型號。
SAK 的位元定義
「SAK 的位元定義」章節SAK 為 1 Byte:
Bit: 7 6 5 4 3 2 1 0其中最重要的是:
| Bit | Mask | 意義 |
|---|---|---|
| Bit 2 | 0x04 | Cascade Bit,表示 UID 還有下一層 |
| Bit 5 | 0x20 | 支援 ISO/IEC 14443-4(ISO-DEP) |
Cascade Bit(0x04)
「Cascade Bit(0x04)」章節如果:
SAK & 0x04 != 0表示:
UID 尚未完整,還有下一個 Cascade Level。
例如:
CL1SAK = 04代表:
還有 CL2若第二層完成後:
SAK = 20則表示 UID 已完整。
ISO14443-4 Bit(0x20)
「ISO14443-4 Bit(0x20)」章節如果:
SAK & 0x20 != 0表示:
卡片支援 ISO/IEC 14443-4(ISO-DEP)。
通常代表:
- DESFire
- JCOP
- CPU Card
- EMV Card
- Type 4 Tag
常見 SAK
「常見 SAK」章節| SAK | 常見卡片 |
|---|---|
0x00 | Ultralight、NTAG |
0x08 | MIFARE Classic 1K(NXP 版,以及大部分 M1 相容卡) |
0x88 | MIFARE Classic 1K(Infineon 版) |
0x18 | MIFARE Classic 4K |
0x20 | DESFire、JCOP、CPU Card |
0x28 | ISO14443-4 + 其他能力 |
0x04 | UID 尚未完成(不是最終 SAK 例如 M1 7 bytes 卡) |
注意:SAK 並不能唯一辨識卡片種類。
相同的 SAK 可能出現在不同廠商或不同產品上,因此判斷卡片類型通常需要搭配 ATQA、UID 長度、SAK、ATS 等資訊。
WUP-SAK 與 Vanity SAK
「WUP-SAK 與 Vanity SAK」章節實務上你會看到「同一張卡有兩個 SAK」的說法,這兩個值來源不同,不要混為一談:
| 俗稱 | 是什麼 | 怎麼看 |
|---|---|---|
| WUP-SAK | 卡片在 SELECT 之後、由晶片協定層即時回傳的 SAK | MCT 的「Display Tag Info」 |
| Vanity SAK | Block 0(第 0 區)記憶體裡存的那個 byte | dump 出來的第 11~12 個十六進位數字 |
本頁前面所講的 SAK 位元定義,指的都是 WUP-SAK。
需要特別說明的是:
WUP-SAK、Vanity SAK不是 ISO/IEC 14443 或 NXP 的官方術語,而是 RFID 社群(Proxmark3、magic card 圈)為了區分這兩者所用的俗稱。- ISO/IEC 14443 只定義「
SELECT之後回傳的 SAK」這一個概念。NXP 的MF1S50YYX_V1資料表把 Block 0 描述為「IC manufacturer data」,內容是 UID/NUID + BCC + manufacturer data,並未把其中任何 byte 定義為 SAK 或 ATQA。把那幾個 byte 稱為 SAK / ATQA 是 MCT、MifareOneTool 這類工具的慣例命名。 - 因此規範上這兩個值之間沒有任何必然關係。正品 MIFARE Classic 1K 目前已知就有
08/08(NXP 版)、88/88(Infineon 版)、08/88(部分系統配發的卡)等多種組合。
有些門禁會同時比對這兩個值來偵測複製卡。原理、各代複製卡的實測行為與選卡建議,請見 👉 WUP-SAK 是什麼?門禁靠它抓出 MIFARE 複製卡的原理與應對。
7 Bytes UID 的 SAK
「7 Bytes UID 的 SAK」章節7 Bytes UID 一定會經過 兩個 Cascade Level。
流程如下:
REQA ↓ATQA
Anti-collision CL1 ↓SELECT CL1 ↓SAK = 04
Anti-collision CL2 ↓SELECT CL2 ↓SAK = 最終 SAK因此:
- 第一個 SAK 固定為
0x04 - 第二個 SAK 才是真正代表卡片能力的 最終 SAK
常見的最終 SAK
「常見的最終 SAK」章節| CL1 SAK | CL2 SAK | 常見卡片 |
|---|---|---|
0x04 | 0x00 | NTAG、Ultralight |
0x04 | 0x20 | DESFire、JCOP、CPU Card |
0x04 | 0x08 | 某些 Memory Card、Clone Card |
0x04 | 0x28 | 支援 ISO14443-4 的部分卡片 |
範例
「範例」章節NTAG213
「NTAG213」章節UID = 7 Bytes
CL1 SAK = 04CL2 SAK = 00表示:
- UID 已完成
- 不支援 ISO14443-4
DESFire EV1
「DESFire EV1」章節UID = 7 Bytes
CL1 SAK = 04CL2 SAK = 20表示:
- UID 已完成
- 支援 ISO14443-4
某些 Clone Card
「某些 Clone Card」章節UID = 7 Bytes
CL1 SAK = 04CL2 SAK = 08表示:
- UID 已完成
- 不支援 ISO14443-4
10 Bytes UID
「10 Bytes UID」章節10 Bytes UID 共有三個 Cascade Level:
CL1 SAK = 04CL2 SAK = 04CL3 SAK = 最終 SAK因此:
- 4 Bytes UID:1 個 SAK
- 7 Bytes UID:2 個 SAK
- 10 Bytes UID:3 個 SAK
重點整理
「重點整理」章節- SAK(Select Acknowledge)是卡片在完成
SELECT後回傳的 1 Byte 回應。 0x04(Bit 2)表示 UID 尚未完成,還有下一個 Cascade Level。0x20(Bit 5)表示支援 ISO/IEC 14443-4(ISO-DEP)。- SAK 不是卡片型號,不能單獨用來辨識卡片。
- 判斷卡片類型通常需要搭配 ATQA、UID 長度、SAK、ATS 等資訊。
- 對於 7 Bytes UID:
- 第一個 SAK 固定為
0x04。 - 第二個(最終)SAK 才具有實際參考價值。
- 第一個 SAK 固定為
版權 © 2026 和峰智造資訊工作室 | Green-Mochi.com 授權與使用規範