樓主所在的某電子科技類大學,從宿舍樓到實驗樓到圖書館辦公樓,全部都有門禁,前兩天突然在某安軟件市場看到一個可以模擬門禁卡的軟件,然而可能是我的手機系統太6了,竟然模擬不了,無奈自己動手,從根本上解決問題:
先來看 freebuf 的兩篇文章:
RFID Hacking:看我如何突破門禁潛入 FreeBuf 大本營
如何利用 Nexus 5 偽造一張門禁卡
貌似並不難:使用帶有 NFC 功能的手機模擬門禁卡的 ID 號,
部分門禁卡的讀卡器只讀取卡的 ID 值。
手機 NFC 卡的信息可以通過配置文件進行修改。
前提是你的手機已經獲取 root 權限。
基本步驟在前兩個帖子里面都已給出,這里只介紹一下我的實施過程,本人手機nexus 6p,系統6.0.1
開搞:
first
最先做的事情當然是要找一張有效的卡片,獲取它的ID信息。在手機上下載 NFC 軟件來讀取卡片信息,一般來說用上文提到的NFC門禁卡模擬器:NFC Emulator就可以獲取 ID 號了,但是這個信息不全面,我們還需要通過NFC Tools軟件來知道我們卡片的NFC Tag type,如圖:
射頻標簽的通信標准是標簽芯片設計的依據,
目前國際上與RFID相關的通信標准主要有:
- ISO/IEC 18000標准(包括7個部分,涉及125KHz, 13.56MHz, 433MHz, 860-960MHz, 2.45GHz等頻段),
- ISO11785(低頻),
- ISO/IEC 14443標准(13.56MHz),
- ISO/IEC 15693標准(13.56MHz),
- EPC標准(包括Class0, Class1和GEN2等三種協議,涉及HF和UHF兩種頻段),
- DSRC標准(歐洲ETC標准,含5.8GHz)。
可以看到,我的卡片的頻率標准是13.56MHz,而我手機配置文件給出的頻率標准是19.2MHz,需要修改手機的配置文件。
其中有一行 Serial number,一共四個字節,就是卡的 ID 號,在其它 NFC 讀取軟件上也許叫 ID,總之就是卡的標識。
second
接下來需要對手機進行操作了,使用re管理器(或者es管理器)進入手機根目錄,掛載為讀寫,依次進入system/etc,找到libnfc-nxp.conf這個文件,建議先對該文件備份。
打開libnfc-nxp.conf,可以看到這樣一段:
###############################################################################
# System clock frequency selection configuration for PLL
# CLK_FREQ_13MHZ - 0x01
# CLK_FREQ_19_2MHZ - 0x02
# CLK_FREQ_24MHZ - 0x03
# CLK_FREQ_26MHZ - 0x04
# CLK_FREQ_38_4MHZ - 0x05
# CLK_FREQ_52MHZ - 0x06
NXP_SYS_CLK_FREQ_SEL=0x02
這里對我們手機NFC的頻率進行了配置,需要改成上文中提到的13.56MHz,也就是
NXP_SYS_CLK_FREQ_SEL=0x01
不同手機的配置參數可能不一樣,具體請自行斟酌。
再往下我們能看到這樣一段:
###############################################################################
# Core configuration settings
# It includes
# 18 - Poll Mode NFC-F: PF_BIT_RATE
# 21 - Poll Mode ISO-DEP: PI_BIT_RATE
# 28 - Poll Mode NFC-DEP: PN_NFC_DEP_SPEED
# 30 - Lis. Mode NFC-A: LA_BIT_FRAME_SDD
# 31 - Lis. Mode NFC-A: LA_PLATFORM_CONFIG
# 33 - Lis. Mode NFC-A: LA_NFCID1
# 50 - Lis. Mode NFC-F: LF_PROTOCOL_TYPE
# 54 - Lis. Mode NFC-F: LF_CON_BITR_F
# 5B - Lis. Mode ISO-DEP: LI_BIT_RATE
# 60 - Lis. Mode NFC-DEP: LN_WT
# 80 - Other Param.: RF_FIELD_INFO
# 81 - Other Param.: RF_NFCEE_ACTION
# 82 - Other Param.: NFCDEP_OP
NXP_CORE_CONF={20, 02, 2B, 0D,
18, 01, 01,
21, 01, 00,
28, 01, 00,
30, 01, 08,
31, 01, 03,
33, 04, 01, 02, 03, 04,
50, 01, 02,
54, 01, 06,
5B, 01, 00,
60, 01, 0E,
80, 01, 01,
81, 01, 01,
82, 01, 0E
}
從注釋可以看出,33代表了 ID 信息,找到33所在的行,04很明顯是4個字節的信息長度,之后的01, 02, 03, 04就是你手機對外呈現的 ID 號了,綜合前人的帖子可以看出,這里的 ID 號基本都是01, 02, 03, 04,應該不存在不同手機不一樣的情況,所以直接找到這四個數據,改成第一步我們讀到的我們的卡片的 ID 號,然后保存,退出,重啟手機。
last
為了驗證是否修改成功,我們需要另外一部支持 NFC 的手機,也裝上上面的 NFC Tools 。把自己的手機當作 NFC 卡,用另一個手機來讀取其標識號。
如果讀到的 ID 號跟我們卡片的ID號一樣,那么就收工了,我要拿着卡片出去裝逼了~~~
append
經過實際測試,圖書館和主樓的門禁可以進入,老科技樓刷卡之后有反應,但是不能成功識別,宿舍樓壓根兒一點反應都沒有。
經過反復試驗和網上搜索,最后結論:
如果門禁系統只讀取卡片的ID號的話,那么上述方法是可行的,但是如果它還校驗了卡片的其他信息,那么我們的 DIY 還得繼續深入