❶ 感應式讀卡器,復制你的門禁卡、購物卡、飯卡,你的卡還安全么
看了這個,你的飯卡還安全嗎?
僅供測試,請勿模仿。
//NFC是什麼,肯德基嗎,,,不。。。
近場通信(Near Field Communication,簡稱NFC),是一種新興的技術,使用了NFC技術的設備
(例如行動電話)可以在彼此靠近的情況下進行數據交換,是由非接觸式射頻識別(RFID)及 互連 互通技術整合演變而來的,通過在單一晶元上集成感應式讀卡器、感應式卡片和點對點通信的功能,利用移動終端實現移動支付、電子票務、門禁、移動身份識別、防偽等應用。由飛利浦公司和索尼公司共同開發的一種非接觸式識別和互聯技術,可以在移動設備、消費類電子產品、PC和智能控制項工具間進行近距離無線通信。NFC功能提供了一種簡單、觸控式的解決方案,可以讓消費者簡單直觀地交換信息、訪問內容與服務。
藉助CM9 rom的nfc讀寫標簽功能,實現軟體卡模擬。(之前的版本都沒有,google官方版本沒有開放此功能,目前從android 5.0起google開放了其他nfc api以進行卡模擬操作,)。
手機或手環等帶有NFC功能的設備通過模擬IC卡的操作,把像小區門禁卡、飯卡等IC卡的數據復制到手機的NFC晶元上面,以後就可以用手機的NFC功能進行刷卡。
可以截獲安卓手機支持的13.56hz nfc無線通訊協議的所有標簽數據,nfc非接觸黑盒測試一直沒有太好的方案,要麼太高端(需要專業的設備),要麼不好用(proxmark3也不便宜,監聽無線的方式導致截獲數據不穩定,也沒有現成兒的解決方案,操作的便捷性和交互性也好差)nfcproxy給我們這些偶爾用一用的測試狗提供了一種低成本高效率的解決方案,支持各種nfc標簽,iso 14443標准,ap數據也是完整穩定的,基於安卓app源碼的二次開發也非常簡單,會java的隨便改改基本都不是問題。基於這個 app可以以軟體方式衍生出多種測試方式
1、 卡和終端之間數據的嗅探
2、 交互過程中的數據修改
3、 模擬卡
最關鍵的還是簡單,買倆一百來塊錢一個的二手手機就可以了。
硬體需求:
兩個帶nfc功能的android手機(咸魚最便宜300塊錢以內可以搞定)一個帶非接觸功能的POS或者讀卡器(有個pos最省事,我有一個支持銀聯閃付的pos)自己的銀行卡,支持非接觸支付的,有銀聯quick pass標志的都可以
1、基於支持CM9 rom的安卓手機一個
我用的是谷歌親兒子一代 nexus s,ROM是slim 4.3 build 2-OFFICIAL-1332 一個基於cm的定製版本
android版本 4.3.1。我買得早,略貴,現在閑魚買二手的話沒有必要買這個,後面幾代也都便宜了,二兒子三兒子四兒子什麼的,都可以考慮,一加一也可以考慮,略貴。理論上支持CM9的都可以,但由於
CM官網已經黃了老版本的rom不好找,所以盡量要先找到手機對應的老版本的rom再決定買啥。 2、帶nfc功能的安卓手機一個(最好也支持cm9)
我用的是 三星 GALAXY S2的T版SGH-T989大力神,CM版本是11-20160815-NIGHTLY-hercules,
android版本4.4.4 ,cm11好像已經去掉軟體卡模擬的功能了,我也沒有去降rom版本,有一個能用行了。只要不是太奇葩的定製rom,理論上都可以。建議還是選擇支持cm的,比較保險。硬體選擇同上軟體需求:
有完整的功能實現,大家可以直接打包使用我基於自己用著方
便,整合了emv-bertlv庫,可以直接在app里把交互數據拆包。大家可以用著試試我的github地址:
本地app包下載:
使用方法
兩個手機都安裝nfcproxy都打開NFC功能連接到同一個wifi,兩個手機之間可以相互訪問
1、 proxy端設置
在支持cm9卡模擬的手機(我得是nexus s),打開nfcproxy軟體,點設置,取消 relay mode 單選框IP 地址填另一個手機的wifi ip埠 填另一個手機的nfcproxy監聽埠,默認9999encrypt
communications 不需要選,自己玩不用加密always keep screen on 隨便debug logging 勾上,可以顯示出卡號。然後退出設置。
2、 relay端的設置
在另外一個手機(我得是t989),打開nfcproxy軟體,點設置,勾選 relay mode 單選框IP 地址 不用填
埠 填剛剛在另一個手機設置的nfcproxy監聽埠,默認9999,兩邊一樣就行encrypt
communications 不需要選,自己玩不用加密always keep screen on 隨便debug logging 勾上,可以顯示出卡號。然後退出設置。
3、 測試
1、 將用於relay端的手機,nfcproxy軟體打開貼到銀行卡上,這時status窗口應該提示
TechList:android.nfc.tech.IsoDepandroid.nfc.tech.NfcA,如果沒反應請檢查nfc是否打開,手機
NFC功能是否正常
2、 將POS機弄到選擇消費,輸入金額後,提示請刷卡的界面
3、 將用於proxy端的手機,nfcproxy軟體打開,去貼到POS機上執行非接刷卡動作。
正常情況貼上去後nfcproxy的data窗口會提示:Reader
TAG:Tech[android.nfc.tech.Iso.PcdA]Connecting to NFCRelayConnected to NFCRelayTransaction
Complete!這說明已經已經連上了貼卡那台手機,POS機的請求已經轉發到卡上了,並且卡的應答已經轉發回來了,交易成了。這時候POS應該顯示請輸入密碼了,輸入密碼交易成功。再看replay端的 nfcproxy的data窗口,就可以看到交互的數據了在數據上長按可以選擇最右面的三個豎點,export to file將截取的數據保存到內部存儲的/NfcProxy目錄中
注1:如果帖POS的手機沒反應,需要檢查nfc功能是否正常
注2:status 提示 connection to NFCRelay failed 需要檢查兩台手機wifi是否聯通,配置的ip和埠是否正常
祝好運。
btw: 這個方案15年我就在用,只是工作測試pos需要,偶爾用到感覺很方便,最近又用了一次,下決心整理一下。之前都看大神的文章,自己也為社區貢獻一次。軟體本身還有很大潛力可以挖,比如動態修改交互數據什麼的。。。。。。 你們懂的,不要亂來哦,會查水表的。 另外也發現有一些終端讀卡會採用一些奇怪的模式,導致軟體報錯,這時候只能再用proxmark3暴力監聽了,但這個mitm的方式比 proxmark方便多了,也便宜的多了哈。最後附一張ppt里的圖,我簡單畫了一下,方便大家理解
在復制IC卡這一塊,我把IC卡分為加密卡和非加密卡兩類,非加密卡請直接嘗試復制,不行的話參照加密卡的教程。
工具:
1.硬體:PN532(初學者建議購買這個,某寶賣30RMB左右,一般的半加密卡用這個就能破解了,全加密卡需要用到PM3),USB轉ttl線,小米手環NFC版(3代4代隨意),cuid卡
2.軟體:PN532的驅動(自己問賣家要,找對應的驅動,或看看我鏈接里的驅動適不適合)、winhex、
MifareOneTool(簡稱M1T)、NFC_READER_crack。
首先把USB轉ttl線與PN532連接好(線序定義:黑GND, 紅VCC,白SDA,綠SCL)。然後在電腦安裝好
PN532的驅動,PN532連接到電腦,然後查看設備管理器,COM口那有設備證明已經成功安裝好驅動了。
打開M1T軟體,點擊檢測連接然後一鍵解原卡,有密鑰的會嘗試破解,破解成功後會導出一個.mp文件,我們把它保存。
用winhex打開該.mp文件,把AB密鑰用FF填充,填充好了之後我們另存為一份,順便把開頭的卡號記下來(8位)
之後我們再次打開M1t,選擇高級操作模式,打開Hex編輯器,把剛剛找的八位卡號復制下來,再打開工具,修改UID,把剛才復制的八位卡號粘貼到裡面,點確定,然後點文件-另存為一個.mfd文件。
高級模式里選擇cuid寫,把剛剛的.mfd文件寫入cuid卡裡面,如果沒寫滿64個塊就再寫一次。
小米手環選擇門卡模擬,把剛剛寫入了.mfd文件的cuid卡模擬到小米手環上,之後打開
NFC_READER_crack這個軟體,選擇寫普通M1卡,把填充好密鑰的飯卡數據寫入手環中。如果只寫入63個塊,那也沒關系,去試試能不能用。
然後就大功告成啦!!
本教程切勿用於非法用途,復制飯卡余額都是一樣的,不存在修改余額這一說。飯卡原本余額是多少的,你用什麼來打飯余額都是一樣。復制到手環里只是為了方便打飯。
Q:為什麼到了最後把數據寫入手環時不用原來的M1T而是用NFC_READER_crack呢?
A:因為用M1T寫入數據到手環會出現玄♂學問題,就是寫不到63個塊,用NFC_READER_crack就沒有問題。如果是用cuid卡來復制門禁卡的話可以嘗試用M1T。
Q:那如何復制門禁卡?
A:門禁卡如果是半加密卡的話可以參照本文來復制,如果是非加密卡的話試試直接模擬可不可以,如果不行的話按照讀出數據(保存)–生成一個帶有卡號的.mfd文件–復制到cuid卡–手環模擬該cuid卡–手環寫入門禁卡數據這一步驟來復制。
生活中不乏其他案例,黑客破解NFC公交卡,可無限次乘車,甚至可以劫持帶有NFC功能的手機,所以安全問題顯而易見,畢竟防人之心不可無。