手機(jī)上全功能NFC的好處呼渣,當(dāng)然就是可以模擬各種門禁卡和飯卡了蔑祟。小米錢包自帶的NFC卡模擬功能和ROM結(jié)合早敬,使用時(shí)更是雙擊喚起且隨意切換忌傻,十分好用。這里記錄了幾天來摸索的經(jīng)驗(yàn)搞监,供其他正在研究的同學(xué)參考水孩。
1. 準(zhǔn)備工作
- PN532模塊。淘寶上30塊買焊接好的帶USB延長線的即可琐驴。
- 白卡1張俘种。用來做手機(jī)卡模擬的橋梁
- 全功能NFC手機(jī)一臺。小米系列手機(jī)是首選棍矛,其他品牌手機(jī)未測試安疗。
2. 模擬非加密卡的流程
模擬非加密卡很簡單,直接打開小米錢包够委,選擇門卡->模擬門卡荐类。根據(jù)系統(tǒng)指示直接將非加密卡放在手機(jī)NFC感應(yīng)區(qū),系統(tǒng)會自動識別并生成模擬卡茁帽。這里需要注意一點(diǎn)玉罐,有時(shí)手機(jī)讀的可能卡信息可能不完整屈嗤,最好在電腦上用PN532模塊再讀一邊模擬出來的卡,如果數(shù)據(jù)一致那就沒有問題吊输;否則還需要?jiǎng)h除此卡后重新模擬饶号。
3. 模擬加密卡的一般流程
小米錢包的門卡模擬,只支持非加密卡季蚂,如果是加密卡就不能直接模擬茫船,此時(shí)就需要用到PN532的強(qiáng)大解密功能了。玩NFC的朋友都知道扭屁,NFC的1類卡有非加密算谈、部分加密和全加密這幾種。部分加密是在某幾個(gè)扇區(qū)使用了非公開的密鑰料滥,而全部加密是所有扇區(qū)都使用了私有的密鑰然眼。解密的原理網(wǎng)上很多,這里只介紹具體操作流程:
- 用PN532解密部分加密的NFC卡葵腹,保存為A.dump文件
- 將A.dump文件中的0扇區(qū)0行高每,即此卡的ID數(shù)據(jù)復(fù)制到一張空白dump文件的同樣區(qū)域,保存為B.dump文件
- 將B.dump文件寫入一張物理白卡中
- 使用手機(jī)模擬此物理白卡践宴,得到模擬卡b鲸匿;使用小米錢包的門卡功能,使用PN532讀取模擬卡b的信息浴井,如果能夠讀取晒骇,說明模擬有效,否則請重新模擬磺浙,以確保正確。
- 將A.dump文件寫入模擬卡b中徒坡,更新后的模擬卡a即為原來的部分加密NFC卡片撕氧。用PN532同樣驗(yàn)證一遍更新后的卡片數(shù)據(jù),如果和原來A.dump一致喇完,那么證明模擬成功伦泥。
一般使用PN532上位機(jī)即可有效破解部分加密的卡片,對于采取了AES非對稱加固的卡片锦溪,則需要借助已知的密鑰不脯,才能順利讀取卡片內(nèi)容。
4. 模擬非對稱加密卡的方式
發(fā)現(xiàn)手頭上的公司門卡雖然是部分加密刻诊,但是竟然不能被PN532上位機(jī)破解防楷,搜了很多資料,都是基于經(jīng)典的MFOC/MFCUK的解決方案则涯,都沒有效果复局。最后只能翻墻看看國外網(wǎng)友怎么說冲簿,果然在github上找到了一個(gè)叫做miLazyCracker的方案,可完成傻瓜式暴力破解亿昏。
4.1 安裝miLazyCracker
- 下載地址:https://github.com/nfc-tools/miLazyCracker
- CraptEV1文件可自行下載 度盤鏈接 提取碼: 7vjj
- Linux上安裝libnfc驅(qū)動峦剔,參考見 這篇簡書
- Linux上安裝miLazyCracker,就一行命令:./miLazyCrackerFreshInstall.sh
4.2 使用miLazyCracker
安裝完畢后角钩,創(chuàng)建一個(gè)臨時(shí)目錄吝沫,既可以開始暴力破解了
mkdir mydumps
cd mydumps
miLazyCracker
4.3 卡模擬
miLazyCracker解密后,即可獲得加密扇區(qū)的密鑰和完整的dump文件递礼。導(dǎo)入到PN532上位機(jī)中野舶,然后再讀取卡片,即可順利獲取完整卡片數(shù)據(jù)宰衙。然后再按第三章節(jié)的方式平道,使用過度卡來完成模擬操作。最后記得再使用PN532讀一下手機(jī)模擬出來的卡片供炼,以確認(rèn)正確哦一屋。
寫在最后
NFC模擬幫助我減輕了日常出行所需攜帶的卡片數(shù)量,配合智能門鎖袋哼,我甚至可以不需要帶鑰匙和門卡出門了冀墨。以上所述的PN532以及miLazyCracker都只是工具,如果用于提升生活出行便利目的涛贯,那可能是工具制作者希望看到的诽嘉;絕不可用于任何非法或者灰色產(chǎn)業(yè)鏈,否則就會收到道德的譴責(zé)和法律的制裁弟翘。
這里強(qiáng)烈推薦在實(shí)際操作之前閱讀 miLazyCracker 作者Kevin Larson寫的ppt(RECON-BRX-2017-Analyzing_Mifare_Classic_Cracking)虫腋,上面度盤目錄也有。他制作這個(gè)工具是為了說明1類的NFC卡片即使使用AES加密也很不安全稀余,所以應(yīng)該盡量使用更高級的卡片悦冀。不過似乎國內(nèi)還是普遍使用了1類卡片,畢竟成本考慮睛琳,一張1類卡才幾毛錢盒蟆;而且配合云端數(shù)據(jù)庫的讀寫,數(shù)據(jù)本體還是安全的师骗;卡片更多是用來確認(rèn)用戶的身份历等。所以歸根到底,產(chǎn)品方案上具體使用哪一類技術(shù)辟癌,恐怕更重要的是出于它的經(jīng)濟(jì)性考慮寒屯。
附注:M1類NFC卡片的0扇區(qū)格式:前4個(gè)字節(jié)為卡片UID,模擬時(shí)只看這4位愿待;第5位是校驗(yàn)位浩螺;第6位開始到第16位是廠商數(shù)據(jù)靴患。不知道是不是巧合,我手頭的幾張卡片第6-8位基本都是 08 04 00要出,只有一張是 88 04 00鸳君。