門卡模擬是小米錢包內通過NFC(近場無線通訊技術)實現(xiàn)的可模擬部分門禁卡的功能,模擬成功的門卡可以與其他MIPay卡片共存,使用時需驗證指紋。小米MIUI最早于2017年底便開始內測門卡模擬功能,2018年1月公測,3月正式上線穩(wěn)定版,支持小米5及之后的所有支持NFC的小米手機。
門卡模擬的實現(xiàn)原理簡單來說,就是用手機讀取門禁卡的ID,也就是門禁系統(tǒng)用來識別用戶身份的ID,使用時把手機NFC芯片的ID改為讀取的門禁卡ID。
美中不足的是,小米錢包門卡模擬支持模擬的卡的范圍十分有限,小米官方明確表示:
目前僅支持模擬市面上未經(jīng)加密且頻率為13.56MHZ的門卡; 帶有門卡功能的銀行卡和儲值消費、公交消費等功能的門卡暫時不能被模擬。即使模擬成功,這些卡片也不具備銀行、公交等功能。

那么問題來了,現(xiàn)在很多高校中在使用的“校園一卡通”,通常會集成飯卡、熱水卡、洗衣卡甚至銀行卡的功能,用于這些儲值功能的扇區(qū)一定是加密的。按照小米的提示,這些卡是不能被模擬的,即使有“漏網(wǎng)之魚”被模擬成功,也無法使用儲值功能。事實上,經(jīng)過多張卡多次試驗之后,我也沒碰到過可以模擬成功的,所有帶儲值功能的門禁卡在檢測時都會提示“讀卡失敗,可能存在加密區(qū),請重試”。如果檢測時完全沒有反應,那么這張卡并不是13.56MHz的,連成為“漏網(wǎng)之魚”的機會也沒有。

經(jīng)過一些嘗試之后,我發(fā)現(xiàn)一種可以解決頻率為13.56MHz、有加密區(qū)的門卡無法模擬的辦法,我身邊并沒有找到頻率非13.56MHz的卡,沒做試驗,理論上同樣是可以的。
這個辦法操作極為簡單,但需要一定成本,因為要用到一款軟件—“NFC卡模擬\\NFC Emulator”,所以需要另一臺(注意是另一臺)已root并支持NFC的手機,這里我用的是一臺已經(jīng)刷了開發(fā)版并已root的小米5。
軟件的使用十分簡單:貼卡讀取——命名——OK,使用亦是十分簡單:亮屏(無需解鎖)——刷手機——開門,聽說刷Xposed框架會有插件可以實現(xiàn)息屏刷卡,我還沒有嘗試,畢竟只是在中間搭橋,最終目的還是用門卡模擬功能模擬成功。

模擬成功后試用一下是可以用的,便可以進行下一步操作,將要被模擬的手機亮屏,不要解鎖,因為如果用小米錢包開了公交卡并設為默認模式,貼在別的設備上默認用公交刷卡,所以在鎖屏界面點亮即可。打開小米錢包——門禁模擬,開始檢測。
檢測成功會出現(xiàn)“開始模擬”按鈕,點擊“開始模擬”,會出現(xiàn)“用戶協(xié)議”與“身份驗證”界面。

同意協(xié)議并驗證身份后,便可以開始模擬,模擬過程中兩臺手機并不需要再次接觸,就像我們之前提過的,只是模擬ID,檢測時已經(jīng)讀出。模擬過程大概需要十幾秒,遠少于提示的一分鐘。

模擬成功后需要填寫門卡名稱,之后便可使用,使用時需要驗證指紋。

以上便是可以解決問題的一種方法,在使用這種方法之前,我還嘗試過另一種方法,中途卡住了,用上面的方法成功了之后就沒再折騰,這里把思路說一下,有條件的大佬可以試一下。
這個方法同樣基于模擬ID的思想,具體思路是把卡的ID讀出來,寫進不加密的白卡,之后模擬之。這里要用到另一款軟件——“MCT(MifareClassicTool)”,是一款可讀可寫的軟件,并且不需要root。

我原本想用MCT讀出卡片內信息,寫進白卡,之后用門卡模擬來模擬復制后的卡,但是我的飯卡從讀取后的信息來看,0-9扇區(qū)是加密的,ID在0扇區(qū),無法讀出。

我的嘗試便止步于此,后來查閱資料了解到122U CUID破解卡片之類的,但是現(xiàn)買需要時間,于是曲線救國想到了之前的辦法。有條件的老哥可以再試一下。
純屬個人經(jīng)驗與見解,如有錯誤請不吝賜教。