現(xiàn)在很多手機(jī)都帶了NFC功能了,但使用場景有限。比如:
- 只有少數(shù)城市的公共交通系統(tǒng)支持少數(shù)型號(hào)的手機(jī)刷卡,大部分時(shí)候還是要自己辦一張公交卡的。
- 支付寶有讀卡進(jìn)行充值的功能,也只有對(duì)應(yīng)城市的公交系統(tǒng)接入才可以。
- Apple Pay 和銀聯(lián)的云閃付,但在掃碼支付大行其道的當(dāng)下,使用限制很多。
這篇文章就帶領(lǐng)大家用NFC手機(jī)代替門禁卡。需要滿足的條件如下:
- Android 操作系統(tǒng)
- 已 root
- 支持 NFC
- 門禁系統(tǒng)只校驗(yàn)卡ID
寫到這里就有一點(diǎn)標(biāo)題黨的感覺了(括弧笑),不過這幾個(gè)條件還算比較容易滿足的,而且操作起來也不難。筆者現(xiàn)在宿舍的門禁已經(jīng)用手機(jī)刷了,不會(huì)再有忘記拿卡的尷尬,只需要手機(jī)亮屏就可以,甚至不需要解鎖屏幕。
好,現(xiàn)在開始一步一步搞定它吧!
原理
每一張卡都有自己獨(dú)一無二的ID號(hào),就像身份證號(hào)一樣不會(huì)重復(fù),我們所要做的就是獲取這個(gè)ID號(hào)并將其寫入手機(jī)NFC配置文件里相應(yīng)的地方,達(dá)到“復(fù)制”門禁卡的目的。若門禁系統(tǒng)僅僅檢查卡ID,那手機(jī)就可完全代替門禁卡了,而大約80%的門禁系統(tǒng)都是這么干的,所以成功率很高。若是檢查其他字段,尤其是加密信息就無能為力了,這也是這里只代替門禁卡而沒有完全代替飯卡的原因。
當(dāng)然,廣泛使用的mifare方案已經(jīng)被破解了,可以完全復(fù)制,但是也沒太容易。
獲取 root 權(quán)限
已有 root 權(quán)限的讀者可以跳過這一步了。沒有獲取 root 權(quán)限的讀者可以使用 KingRoot來獲取 root 權(quán)限,官網(wǎng)有詳細(xì)介紹,支持絕大多數(shù) Android 設(shè)備,如果你的手機(jī)不在支持列表里,可以到機(jī)鋒論壇等論壇尋找方法,很多大神給出了自己的解決方案。
讀取卡ID
需要一個(gè)NFC Tools 的工具,大家不要百度了,找一個(gè)靠譜的下載鏈接真麻煩,可以到這里下載。
安裝完成后,在NFC開啟的情況下,在應(yīng)用主頁讀取你的門禁卡會(huì)顯示相關(guān)信息,我們需要的是Serial Number字段,記下這一串十六進(jìn)制數(shù)字,如下圖。

更改配置文件
有了 root 權(quán)限和序列號(hào)之后就可以更改配置文件了,這里需要一個(gè)可以瀏覽并修改根目錄的文件瀏覽器,推薦 RE 文件瀏覽器 / ES 文件瀏覽器 / Solid Explorer 等,大家可以自行搜索下載。
接下來需要找到配置文件所在的目錄,一般來說應(yīng)該在 /system/etc 下,大多數(shù)手機(jī)使用的是恩智浦的解決方案,一般配置文件名為libnfc-nxp.conf,如果找不到,大家可以搜索自己手機(jī)型號(hào)的配置文件位置。
使用文本編輯器打開配置文件,需要修改的地方有兩處:
-
根據(jù)卡類型修改工作頻率
找到以下字段并根據(jù)卡類型修改,一般是13和19,對(duì)應(yīng)的0x01和0x02,可先保持默認(rèn),有兼容的可能性,不成功可再修改。
修改頻率 - 修改ID
找到以下字段,應(yīng)該在文件的最后。注意33, 04開頭的一行,默認(rèn)的一般為33, 04, 01, 02, 03, 04,,其中33表示ID,04表示長度,后4位為ID值,修改為卡的ID值,注意格式,保存即可。

到此就完畢啦,現(xiàn)在可以拿手機(jī)去門禁刷卡試試了,若門禁系統(tǒng)給力的話以后就可以直接刷手機(jī)出入了。筆者手機(jī)型號(hào)為 Nexus 6p,在刷手機(jī)時(shí)手機(jī)必須亮屏,未在其他型號(hào)測試,歡迎反饋。
這篇文章也同步發(fā)布在我的博客,歡迎關(guān)注。
