前言#
隨著 NFC 技術越來越廣泛的運用於生活中的各方各面,如 NFC 感應支付,NFC 門禁卡,NFC 音樂標籤,以及智能手機越發廣泛的支持了 NFC 功能,通過向手機內寫入 NFC 標籤以便利日常的需求不斷增加。本文針對傳統的 Mifare Classic® EV1 類型卡片(後文簡稱 M1)提供複製寫入教程。更加先進的 CPU 卡,其他類型卡片不在本文討論範圍
關於設備,你需要準備一台 Windows 電腦,一塊 pn532 模塊,以及目標卡片和源卡片
請確認你的手機有可以添加 nfc 卡片的系統錢包
如果你手機有錢包,但是難以添加你需要的門禁卡,這篇文章或許可以幫到你。如果你已經 dump 出數據,可跳轉到最後一節
概述#
市面上大多數卡片都是運行於 13.56 MHz 的標準 NFC 卡片,如一些小區的門禁卡,而我們的安卓設備所搭載的正是這一頻率的 NFC 芯片。
要想完整的複製一張 NFC 卡片,主要有兩個部分:1 是卡號(既 0 扇區內容),二是數據。
關於卡號#
在正常符合規範的 M1 UID 卡中,0 扇區被鎖死,要解決此問題必須使用支持寫 0 扇區的 CUID 卡,利用手機內置的模擬芯片等等
如利用 CUID 卡,直接通過寫卡器寫入文件即可自然完成,不多做贅述
利用手機模擬的過程因人而異,後文將介紹
本文將利用來自xcicode
的MifareOneTool
進行破解和寫卡(後文簡稱為 M1T)
A GUI Mifare Classic tool on Windows(停工/最新版v1.7.0)
關於數據#
以下是一張 M1 卡的結構
卡片有0-15
共 16 扇區,每個扇區都有0-3
四塊,0~2
塊為數據塊,3
塊為控制塊,控制塊內存儲KeyA
,KeyB
,以及該塊的控制字
,控制字,既標誌兩個密鑰對塊的訪問權限的字符,M1 卡中每個扇區的權限都是獨立的
我們需要複製的卡片大多數都會經過加密,將之分為以下三種卡片:
- 非加密卡:所有扇區密鑰均為
FFFFFFFFFFFF
- 半加密卡:部分扇區密鑰為
FFFFFFFFFFFF
- 全加密卡:所有扇區密鑰均不為
FFFFFFFFFFFF
非加密卡可以直接添加
假如你需要複製的 M1 卡恰好有加密(無論全加密還是半加密都可以破解),且符合SAK08/18/28
,則本文適合你。
破解卡內數據#
首先通過上文提供的存儲庫下載 M1T,並將你的 PN532 正確連接到電腦,點擊 "檢測設備" 按鈕
不出意外的話,你已經連接上了設備
再將你需要破解的卡片放置在 PN532 上,依次點擊掃描卡片 -> 檢測加密(這一步可以判斷卡是半加密還是全加密)-> 一鍵解原卡,不出意外的話此時你已經獲得了你的半加密卡的數據,可以跳轉到下一節進行寫入了。
圖為成功解鎖時的界面,此時應當彈出文件管理器要求為保存的文件命名
倘若是全加密卡呢?
點擊下載 mfcuk(工具來自互聯網)
解壓,雙擊打開MFCUK
,輸入 1 並回車
之後理論上可以經過超級漫長的等待獲取密鑰了(笑)
(其實是筆者嘗試復刻當時的運行結果失敗了沒法接著寫,有空再補,至少我確定全加密卡可破)
寫入手機#
到這一步已經很簡單了,只需要一個簡單的寫入思路就行:
對於一部分手機內置錢包,選擇寫入空白卡時第一步會要求複製卡號,之後要求使用寫卡器寫入數據
先放置原卡獲得卡號,再用 M1T 寫入獲得的數據即可
而對於另一部分手機內置錢包 (如 VIVO),在創建空白卡時會得到隨機卡號,必須更換思路:
根據這一信息,我們就得到了複製卡片的另一個思路:先複製一張注定失敗的卡片,再寫入數據。
手機上選擇添加實體門禁卡,複製本來的卡片,此時手機內的卡片應為有卡號而全空(即使有數據,所有密鑰已知)
再 M1T 打開高級功能選項卡先執行一次清 M1,得到空白數據後寫入 dump 出的原卡數據即可。
至此,你的手機已寫入你所預期的門禁卡。
如果你想要寫入一些其他功能數據,比如打開某個鏈接,播放音樂,連接 WiFi...... 可以搜索NFC Tools Pro
進行個性化編輯
未能完成的實驗#
在給我自己手機刷入類原生系統後,我一直在受苦於無法完美的模擬 NFC 卡片,刷不動小區門禁,現在換回原系統了又沒法實驗,以下提供關於類原生一項實驗思路,希望可以研究出類原生系統複製門禁的辦法。
- 安裝Card Emulator Pro
- 利用該軟件複製一次 UID,激活卡片並嘗試在 M1T 上讀取卡片信息
- 類似上述無法直接寫入 UID 的解決辦法所得結論,嘗試直接寫入數據
本人並非專業,不了解錢包模擬 NFC 的實現原理,只能留一個懸念了。