WUP-SAK 與 Vanity SAK 技術參考(含複製卡實測)
本頁是 WUP-SAK 是什麼?門禁靠它抓出 MIFARE 複製卡的原理與應對 的詳細解說版,收錄完整實測矩陣、正品組合對照與名詞出處考據。想直接知道「該買哪種複製卡」請看該篇文章。
名詞說明:哪些是官方定義、哪些是社群俗稱
「名詞說明:哪些是官方定義、哪些是社群俗稱」章節- ISO/IEC 14443 只定義「
SELECT之後回傳的 SAK」這一個概念,位元定義請見 SAK 位元說明。 - NXP 的
MF1S50YYX_V1手冊把 Block 0 描述為 “the IC manufacturer data”,結構是 UID/NUID + BCC + manufacturer data,並未把其中任何一個 byte 定義為 SAK 或 ATQA。把那幾個 byte 稱為 SAK / ATQA 是 MCT、MifareOneTool 這類工具的慣例命名。 - 因此規範上這兩個值之間沒有任何必然關係。 各家晶片實際燒進去什麼值,只能實測。
| 俗稱 | 是什麼 | 怎麼看 |
|---|---|---|
| WUP-SAK | 卡片在 SELECT 之後、由晶片協定層即時回傳的 SAK | MCT 的「Display Tag Info」 |
| Vanity SAK | Block 0(第 0 區)記憶體裡存的那個 byte | dump 出來的第 11~12 個十六進位數字 |
SAK 在握手流程的哪個位置
「SAK 在握手流程的哪個位置」章節讀卡機 卡片 │ REQA (0x26) / WUPA (0x52) │ ← 「有人在嗎?」 │ ────────────────────────────▶ │ │ ATQA │ ← 卡片舉手回應 │ ◀──────────────────────────── │ │ Anti-collision │ ← 解決多張卡同時在場 │ ◀──────────────────────────▶ │ │ SELECT │ ← 「就選你了」 │ ────────────────────────────▶ │ │ SAK ← 這個! │ ← 卡片回傳 SAK(1 Byte) │ ◀──────────────────────────── │- REQA(
0x26):Request 指令,喚醒場中「閒置(IDLE)」的卡片。 - WUPA(
0x52):Wake-Up 指令,連「已被 HALT 掉」的卡片也一起喚醒。 - 卡片在
SELECT之後回傳的 SAK 就是 WUP-SAK。WUP這個字頭即取自 WUPA(Wake-UP type A)。
門禁在還沒讀任何資料之前就拿到 WUP-SAK 了,這是它能拿來當第一道篩選的原因。
Block 0 結構與 Vanity SAK 的位置
「Block 0 結構與 Vanity SAK 的位置」章節Block 0 = UID(4) + BCC(1) + SAK(1) + ATQA(2) + 廠商資料(8) └─卡號─┘ └校驗┘ └─┬─┘ └─┬─┘ Vanity SAK ATQA用 MCT App dump 出來,把 Block 0 那一長串十六進位攤開:
- 第 11~12 個十六進位數字 = SAK(Vanity SAK)
- 第 13~16 個十六進位數字 = ATQA
正品 MIFARE Classic 1K 有哪幾種組合
「正品 MIFARE Classic 1K 有哪幾種組合」章節網路上常見「正品就是 WUP 08 搭 Block 0 88」的說法,但那只描述了其中一種族群。目前有據可查的至少三種:
| 族群 | WUP-SAK | Vanity SAK | 兩者關係 | 出處 |
|---|---|---|---|---|
| NXP 版 MIFARE Classic 1K | 08 | 08 | 相同 | 台灣最常見 |
| Infineon 版 MIFARE Classic 1K | 88 | 88 | 相同 | flipperzero-firmware #1342 |
| 部分系統配發的卡 | 08 | 88 | 不同 | libnfc #487(描述為未依規範用法) |
MIFARE Classic 4K 的 WUP-SAK 則是 18。
實測:複製卡的 SAK 會不會跟著 Block 0 走?
「實測:複製卡的 SAK 會不會跟著 Block 0 走?」章節網路上常說「便宜複製卡都會把 WUP-SAK 直接映射自 Block 0」。我們拿店內販售的 UID 卡與 CUID 卡逐一寫入測試,結果如下。
UID 卡(Gen1a)
「UID 卡(Gen1a)」章節| 寫入 Block 0 的 SAK | 實測 WUP-SAK | 實測 Vanity SAK | 有映射嗎? |
|---|---|---|---|
88 | 88 | 88 | ✅ 有 |
18 | 08 | 18 | ❌ 沒有 |
28 | 08 | 28 | ❌ 沒有 |
20 | 08 | 20 | ❌ 沒有 |
00 | 08 | 00 | ❌ 沒有 |
CUID 卡(Gen2)
「CUID 卡(Gen2)」章節| 寫入 Block 0 的 SAK | 實測 WUP-SAK | 實測 Vanity SAK | 有映射嗎? |
|---|---|---|---|
88 | 08 | 88 | ❌ 沒有 |
18 | 08 | 18 | ❌ 沒有 |
28 | 08 | 28 | ❌ 沒有 |
ATQA:兩種卡都會映射
「ATQA:兩種卡都會映射」章節| 卡種 | 寫入 Block 0 的 ATQA | 實測 WUP-ATQA | 實測 Vanity ATQA |
|---|---|---|---|
| UID 卡 | 0002 | 0002 | 0002 |
| UID 卡 | 0344 | 0344 | 0344 |
| CUID 卡 | 0044 | 0044 | 0044 |
| CUID 卡 | 0002 | 0002 | 0002 |
| CUID 卡 | 0344 | 0344 | 0344 |
結論
「結論」章節- 卡號(UID):映射。
- ATQA:映射。
- SAK:基本上不映射,一律固定回
08。唯一的例外是 UID 卡寫入88,此時 WUP-SAK 才會跟著變成88。
門禁比對的是「配對指紋」,不是「一樣或不同」
「門禁比對的是「配對指紋」,不是「一樣或不同」」章節先把兩個層次分開:
| 層次 | 用詞 | 指的是 |
|---|---|---|
| 卡片端行為 | SAK 映射(mirroring) | 卡片把 Block 0 的 SAK 直接拿來當握手回應 |
| 門禁端策略 | SAK 一致性檢查 | 門禁比對 WUP-SAK 與 Vanity SAK 是否符合預期組合 |
門禁廠商知道自己發出去那批原卡的 (WUP-SAK, Vanity SAK) 配對是什麼。驗卡時:
1. 握手時記下 WUP-SAK;2. 再對 Block 0 讀一次,拿到 Vanity SAK;3. 拿這一組值跟原廠卡的預期組合比對,對不上就擋。複製卡難就難在它未必湊得出任意配對。依照上面的實測,各種卡能到達的座標是有限的:
| 卡種 | 能做出的 (WUP-SAK, Vanity SAK) 配對 |
|---|---|
| UID(Gen1a) | (08, 任意非 88 的值) 或 (88, 88) |
| CUID(Gen2) | (08, 任意值) |
| Gen4 | 兩個值都可自訂,理論上任意配對 |
只要原卡的配對落在複製卡做不到的座標上,就會被擋下來。依此挑選複製卡的完整決策表請見 WUP-SAK 文章。
Proxmark3 文件記載 Gen4 UMC 可用 CF<passwd>35<2b ATQA><1b SAK> 直接指定 ATQA 與 SAK,與 Block 0 無關;Gen4 GDM 則透過設定區塊(hf mf gdmsetcfg)指定。
名詞考據:「SAK Swapping」與「The Double Cross」
「名詞考據:「SAK Swapping」與「The Double Cross」」章節這兩個名詞出自 equipter 的 gist,是目前中文資料轉載的主要源頭。該文把上一節的第 2、3 步稱為 The Double Cross,並描述門禁是在「驗證 WUP-SAK 與 Vanity SAK 兩者的不相同」,但我們前面說過了 WUP-SAK 與 Vanity SAK 到底該不該相同,在 MF1S50YYX_V1 手冊上其實是沒有定義的。
所以更精確的講法是:
門禁比對的是「配對是否符合預期」,而不是「兩者是否不同或相同」這條規則。
The Double Cross 是社群為了描述某些門禁廠商實作行為而取的名字,不是協定層面的規範。實務上各家廠商怎麼設計都有可能,甚至有廠商會刻意把 WUP-SAK 與 Vanity SAK 設成不同值,當作管控複製卡的手段。
資料來源的對照表也與我們的實測有出入:它把 Gen1a 標為「映射」、Gen2 CUID 標為「強制 08」,而 Proxmark3 文件對兩代都註明「有些映射、有些固定」。
資料來源
「資料來源」章節- equipter/SAK Swapping.md(Mifare Classic - SAK Swapping Explained):
SAK Swapping/The Double Cross名詞出處 - RfidResearchGroup/proxmark3 — magic_cards_notes.md:各代魔術卡的 SAK / ATQA 行為與 Gen4 設定指令
- flipperdevices/flipperzero-firmware #1342:Infineon 版 MIFARE Classic 1K 的 SAK 為
88 - nfc-tools/libnfc #487:部分廠商未依規範,SAK 與 Block 0 byte 值不一致
- NXP
MF1S50YYX_V1MIFARE Classic EV1 1K datasheet:Block 0 定義為 IC manufacturer data,未定義 SAK / ATQA 欄位 - 本頁「實測」章節為綠糰子雜貨店自行測試的結果,測試對象為店內販售的 UID 卡與 CUID 卡
延伸閱讀
「延伸閱讀」章節- WUP-SAK 是什麼?門禁靠它抓出 MIFARE 複製卡的原理與應對:本頁的白話版,含選卡決策表
- SAK 位元說明:SAK 位元定義、Cascade bit、7 Bytes UID 的兩段 SAK
- 卡片判斷 SOP:判斷手上的卡屬於哪種、該買什麼複製卡
- 複製卡選購指南:UID、CUID、M17B、Gen4 完整規格比較
版權 © 2026 和峰智造資訊工作室 | Green-Mochi.com 授權與使用規範