· 綠糰子 · 門禁卡教學 · 8 分鐘閱讀
Mifare dump 檔怎麼看:block 0、Key A/B、存取條件逐段解釋

先給結論
一張 Mifare Classic 1K 的 dump 就是 1024 個 byte,切成 16 個 sector,每個 sector 4 個 block,每個 block 16 個 byte。
看 dump 只要記住三件事:
| 位置 | 是什麼 | 能不能改 |
|---|---|---|
| 第一個 block(block 0) | UID、BCC、SAK、ATQA | 一般卡唯讀,只有 CUID/UID 卡寫得進去 |
| 每個 sector 的最後一個 block | Key A + 存取條件 + Key B | 可以改,但改錯會鎖死整個 sector |
| 其他 block | 你的資料 | 有金鑰就能改 |
想邊看邊改的話,可以直接開 Mifare 卡片編輯器,把 dump 拖進去就會幫你把上面這些段落標好顏色。
block 0:卡片的身分證
整張卡的第一個 block 長這樣(4-byte UID 的卡):
9E 4A DE 12 | 18 | 08 | 04 00 | 62 63 64 65 66 67 68 69└── UID ──┘ BCC SAK ATQA └──── 廠商資料 ────┘- UID:卡號本身。讀卡機掃出來的那串數字就是從這裡來的,只是各家換算方式不同(詳見 卡號格式轉換器)。
- BCC:UID 這 4 個 byte 的 XOR 校驗碼。上面的例子是
9E ^ 4A ^ DE ^ 12 = 18。 - SAK / ATQA:卡片回答「我是哪一種卡」用的。
08 04 00是標準 Mifare Classic 1K 的組合,說明見 SAK 值說明。
⛔ 改了 UID 一定要同步改 BCC。 這是實務上最常見的錯誤:客人自己用 hex editor 改掉 UID, BCC 沒跟著算,卡片刷上去讀卡機直接不理它。工具會自動檢查並提供一鍵修正。
7-byte UID 的卡沒有 BCC
7-byte UID(俗稱 CL2)的 Mifare Classic 排法不一樣,UID 結束後直接接 SAK,中間沒有校驗碼:
04 A1 B2 C3 D4 E5 F6 | 08 | 44 00 | 00 00 00 00 00 00└────── UID ──────┘ SAK ATQA └─ 廠商可用 ─┘兩種卡最好認的差別在 ATQA:4-byte 的 1K 是 0004,7-byte 的 1K 是 0044(在 dump 裡低位在前,寫成 04 00 與 44 00)。 所以拿 7-byte 的卡去套 4-byte 的排法,會誤以為第 5 個 byte 是 BCC 而且「算錯了」,其實那是 UID 的一部分。 Mifare 卡片編輯器 會自動用 SAK 與 ATQA 判斷是哪一種排法,判斷不出來就直說,不會硬算 BCC。
sector trailer:整個 sector 的門鎖
每個 sector 的最後一個 block 不是資料,是門鎖:
FF FF FF FF FF FF | FF 07 80 | 69 | FF FF FF FF FF FF└──── Key A ────┘ └存取條件┘ 自由 └──── Key B ────┘FF FF FF FF FF FF 是出廠預設金鑰,也是所有教學裡最常出現的那一串。Key A 永遠讀不出來, 你在 dump 裡看到的 Key A 是 MCT 之類的工具用它認證成功後幫你填回去的,不是從卡片讀出來的。
存取條件:改錯就回不去的三個 byte
FF 07 80 這三個 byte 決定這個 sector 的每個 block 誰能讀、誰能寫。它的編碼方式是同一份資料存正的也存反的:
| byte | 高 4 bit | 低 4 bit |
|---|---|---|
| 6 | C2 的反相 | C1 的反相 |
| 7 | C1 | C3 的反相 |
| 8 | C3 | C2 |
卡片自己會檢查正反兩份對不對得上,對不上就整個 sector 拒絕存取。這代表兩件事:
- 隨手改一個 byte 幾乎一定是壞的,因為另外兩個 byte 沒跟著改。
- 就算改出一組合法的值,某些組合的意思是「這個 sector 從此不能再改設定」,寫下去就回不來了。
出廠值 FF 07 80 解出來是:資料 block 用 Key A 或 B 都能讀寫,trailer 用 Key A 就能改金鑰與條件。這是最寬鬆、也最好救的狀態。
常見的幾種組合:
| 存取條件(C1 C2 C3) | 資料 block 的效果 |
|---|---|
000 | 出廠預設,讀寫都不設限 |
010 | 唯讀 |
110 | 值區塊,加值要 Key B |
111 | 完全封鎖,任何金鑰都讀不到 |
Mifare 卡片編輯器 預設會鎖住這三個 byte 不讓你改,要動必須先勾選解鎖, 而且會即時把改完的結果翻成人話,包括「這個 sector 之後改不回來」這種警告。
值區塊:儲值卡常見的那一段
如果某個 block 長這樣,它是一個值區塊:
64 00 00 00 | 9B FF FF FF | 64 00 00 00 | 05 FA 05 FA└─ 數值 ─┘ └─ 補數 ──┘ └─ 數值 ─┘ 位址與補數數值存了兩份、補數存了一份,位址存了四份。卡片自己會驗這個格式,所以手改數值必須三份一起改, 只改前面 4 個 byte 的話卡片會判定這是一個無效的值區塊。
MCT 匯出檔裡的那一堆 -
用手機 MCT App 讀卡時,如果某個 sector 的金鑰試不出來,匯出的檔案裡那幾行會是 32 個 -:
+Sector: 5--------------------------------------------------------------------------------------------------------------------------------這代表「沒讀到」,不是「內容是零」。把它當成 00 寫回卡片,等於用一堆假資料覆蓋原本的內容。 我們的工具會保留這個狀態、標成灰色,並且不讓你匯出成二進位檔,只能匯出回 MCT 格式。
金鑰試不出來的卡通常是半加密或全加密卡,需要 PN532 跑字典或攻擊才解得開, 做法見 門禁卡複製教學,或直接找我們代客解卡。
改完之後寫回哪裡
改好的 dump 要寫回卡片,記得:原卡的 block 0 幾乎都是唯讀的。 所以複製一張卡不是把 dump 寫回原卡,而是寫進一張 block 0 可寫的空白卡:
寫入工具用手機的 MCT、電腦的 PN532 或 Proxmark 都可以。卡片種類分不清楚的話,先看 門禁卡晶片資料庫。
延伸閱讀
- Mifare 卡片編輯器:把 dump 拖進瀏覽器直接改,不用裝軟體
- MCT 教學:用 Android 手機讀卡與寫卡
- 門禁卡複製教學:從讀卡到寫卡的完整流程
- 卡號格式轉換器:UID 換算成各家讀卡機的顯示格式



