RC522 修改 CUID 卡號教學(Arduino / ESP32S3)
用 Arduino UNO 或 ESP32S3 搭配 MFRC522(RC522) 模組,把 CUID(Gen2 Magic)卡的 4-byte 卡號改成你要的 UID。這是給手上有 RC522 模組、想自己燒錄改卡號的自造者看的;只想用手機改的,請改看 👉 NTAG 複製卡使用教學。
為什麼是一份「獨立範例」而不是函式庫功能?
「為什麼是一份「獨立範例」而不是函式庫功能?」章節RC522 在 Arduino 生態最通用的函式庫是 miguelbalboa/rfid,但作者已明確表示不再維護、也不接受新增功能的 PR。因此「改 CUID 卡號」這個功能不會進到函式庫裡,只能自己寫一段程式來做(底層仍沿用這個函式庫)。
我們把這段寫好、測過,開源在 👉 GitHub · GreenMochi/RC522-CUID(GPLv3,含正體中文與英文版)。
硬體需求
「硬體需求」章節- 開發板:Arduino UNO 或 ESP32S3(範例兩種都有)
- MFRC522(RC522) RFID 模組
- CUID 卡(Gen2 Magic Card):一般 M1 卡的 block 0 是唯讀的,改不了,必須是可重寫 block 0 的 CUID
- 杜邦線數條
不確定卡片類型?先看 👉 卡片判斷 SOP 與 門禁卡晶片資料庫。
接線
「接線」章節Arduino UNO(腳位固定,不可自定義)
「Arduino UNO(腳位固定,不可自定義)」章節| UNO 腳位 | MFRC522 腳位 |
|---|---|
| 9 | RST |
| 10 | SDA (SS) |
| 11 | MOSI |
| 12 | MISO |
| 13 | SCK |
| 3.3V | 3.3V |
| GND | GND |
ESP32S3(腳位可自定義,以下為範例預設值)
「ESP32S3(腳位可自定義,以下為範例預設值)」章節| ESP32S3 腳位 | MFRC522 腳位 |
|---|---|
| 4 | RST |
| 5 | SDA (SS) |
| 16 | MISO |
| 17 | SCK |
| 18 | MOSI |
| 3.3V | 3.3V |
| GND | GND |
設定要寫入的卡號
「設定要寫入的卡號」章節修改範例程式中的 newUid 陣列(4 bytes)為你要的卡號,BCC 校驗碼由程式自動計算,不用自己填:
// 要寫入的新卡號 (4 bytes),BCC 校驗位元由程式自動計算byte newUid[] = {0x12, 0x34, 0x56, 0x69}; // 請替換為您的卡號程式內部這樣算 BCC(這段請勿更動):
// block0Data[4] 就是 BCC 校驗位元block0Data[4] = uid[0] ^ uid[1] ^ uid[2] ^ uid[3];這裡是 4-byte Mifare Classic CUID 的算法(4 個 byte 直接 XOR)。若你要改的是 7-byte 的 NTAG / Ultralight 卡,寫入方式與 BCC 算法都不同,請改用手機工具 👉 NTAG A2 指令產生器。
如果讀不到 / 驗證失敗,換把金鑰
「如果讀不到 / 驗證失敗,換把金鑰」章節預設用出廠金鑰 FF FF FF FF FF FF。若你的卡片非此金鑰,修改 defaultKey:
MFRC522::MIFARE_Key defaultKey = {{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}};其他常見金鑰可依序試:
A0 A1 A2 A3 A4 A5B0 B1 B2 B3 B4 B54D 3A 99 C3 51 DD1A 98 2C 7E 45 9AD3 F7 D3 F7 D3 F7AA BB CC DD EE FF00 00 00 00 00 00操作流程
「操作流程」章節- 依語言下載範例程式:rc522-cuid-zhtw.ino(正體中文)。
- 依上方接線表完成接線。
- 用 Arduino IDE 開啟並上傳程式(記得先裝好 MFRC522 函式庫)。
- 開啟序列埠監控器,速度選 9600。
- 把 CUID 卡靠近讀卡器,程式會讀取原卡號、確認是可寫入的 Gen2 Magic 卡,再寫入你設定的新卡號,並透過序列埠回報狀態。
程式也內建防止對同一張卡重複寫入,避免不小心連寫。
常見問題排查
「常見問題排查」章節| 症狀 | 可能原因與處理 |
|---|---|
| 完全讀不到卡 | 供電/接線問題;先確認是 3.3V、SPI 五條線沒接錯,杜邦線鬆動也很常見 |
| 讀得到卡但寫入失敗 | 卡不是 Gen2 Magic(block 0 唯讀的普通 M1 卡改不了),或金鑰不對,換上面清單試 |
| 卡寫完變磚 / 門禁讀不到 | 多半是 BCC 被改壞或用了未經測試的程式;請用本頁範例、不要動校驗那段 |
| ESP32S3 讀卡不穩 | 檢查程式中的 SPI 腳位是否與實際接線一致;供電不足時 RC522 也會時好時壞 |
RC522 還是 PN532?該買哪個
「RC522 還是 PN532?該買哪個」章節RC522 便宜、適合 Arduino 燒錄自己玩;若你要的是接電腦、圖形介面、少寫程式地讀寫 13.56MHz 卡,PN532 更順手。比較請見 👉 PN532 基本使用手冊 與部落格 Proxmark3 vs PN532。
版權 © 2026 和峰智造資訊工作室 | Green-Mochi.com 授權與使用規範