iT邦幫忙

2023 iThome 鐵人賽

DAY 10
0

Day 10 Mifare Classic 1k 介紹

說到台灣常見的 NFC 卡片,Mifare Classic 1k 絕對是榜上有名,因為舊版的悠遊卡、一卡通都是使用這種卡片,今天的文章就讓筆者來介紹這種卡片吧。

Mifare Classic 1k 卡,簡稱 M1 或 S50 卡,是非接觸式智慧卡的一種,這種卡片採用 ISO 14443A 的規範,通訊頻率是高頻 (13.56 MHz),卡片內部有 1024 Bytes 的資料,也是在 ChameleonUltra 硬體上最早支援模擬的卡片種類。

如何辨識 Mifare Classic 1k 卡

你的智慧型手機 (Android) 可以辨識大多數高頻 (13.56 MHz) 卡,除了智慧型手機之外,在你身邊應該有不少支援這種卡片的讀卡機,在此筆者以 Android 的 NFC TagInfo 進行辨識。這類卡片在沒有使用密碼的情況下,可以讀到 UID、ATQA、SAK 等資訊(這些是卡片的公開資訊),通常如果看到 ATQA=0004, SAK=08 或是 ATQA=0004, SAK=88 的話就是 Mifare Classic 1k 卡片。

支援這種卡片的 Android APP

  • NFC TagInfo:可以讀取卡號及檢測高頻卡的卡片類型,例如捷運、悠遊卡新舊卡、一卡通新舊卡、愛金卡、自然人憑證、無線感應信用卡、護照、NFC SIM,但這個 APP 因為很久沒更新所以新版 Android 可能不支援。
  • MIFARE Classic Tool:針對 Mifare Classic 卡片所提供的工具包。這個應用程式可以讀取、寫入、及修改 CUID 中國魔術卡。
  • NFC TagInfo by NXP:這個 NXP 自己出的 APP,對於辨識使用 NXP 自己家的 NFC 晶片比較準確。

卡片資料結構

Mifare Classic 1k 卡片總共有 1024 Bytes;卡片總共被分成 16 個 Sectors,每個 Sector 有 64 Bytes;每個 Sector 又被分成 4 個 Blocks,每個 Block 有 16 Bytes。

每個 Sector 的 0-2 個 Block 是資料區塊 (Data block),可以用來存放資料,每個 Sector 的第 3 個 Block 是控制區塊 (Control block),用來存放存取控制資料,裡面有 Sector Key A、Sector Key B 及存取權限。

Data block 還可以被設定成特殊的 Value block,可以用來存放 32 位元的有號整數,值區域會對整數進行備份,避免資料發生錯誤,並且會有額外四個指令:遞增、遞減、備份、還原可以執行。

存取權限的部分在修改前,通常會建議直接透過一些工具直接計算權限(搜尋 MIFARE Classic 1K Access Bits Calculator 就能找到),避免不小心設定錯誤導致整個 Block 資料被鎖死(俗稱變磚)。

第 0 個 Sector 的第 0 個 Block 是特殊的 Block,被規劃成製造商區塊 (Manufacturer block),這個區塊會在製造時寫入一個唯讀的資料,通常用來存放卡片的 UID 及製造商資料。

如果想要了解更多,可以參考筆者自己之前寫過的文章,連結放在下方參考資料內。

參考資料


上一篇
Day 09 與硬體溝通的 Protocol
下一篇
Day 11 中國魔術卡
系列文
用 Web Serial/Bluetooth 來控制 ChameleonUltra 硬體30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言