您好,登錄后才能下訂單哦!
Mifare Classic card提供1k-4k的容量,我們經常見到的是Mifare Classic 1k(S50),也就是所謂的M1卡。M1卡有從0到15共16個扇區,并且每個扇區都有獨立的密碼,每個扇區配備了從0到3共4個段,每個段可以保存16字節的內容,反正從0開始數 就對了(和數組下標為0開始一樣)。
每張M1卡都有一個全球唯一的UID號,這個UID號保存在卡的00扇區的00段,也稱為廠商段,其中前4個字節是卡的UID,第5個字節是卡UID的校驗位,剩下的是廠商數據。并且這個段在出廠之前就會被設置了寫入保護,只能讀取不能修改,當然也有例外,有種叫UID卡的特殊卡,UID是沒有設置保護的,其實就是廠家不按規范生產的卡(我們在網上買的空白卡片一般都是這種可以修改UID號的卡)。
今天我們以破解一張洗澡卡為例:
用到的工具
讀卡設備:ACCR122U一個
空白M1卡片兩張
正常使用洗澡卡一張
上圖:
平臺:windows7
軟件:NFCGUI-PRO.exe
M1卡服務程序
破解思路:在M1卡的16個扇區內的某一個扇區內的字段中存儲著洗澡卡內的信息,例如使用時間、使用次數、水卡金額等信息,想要修改卡內的信息就要將卡片內的記錄數據導出,每個扇區第一個字段的16個字節是扇區的秘鑰對,我們要是想要導出數據就要通過窮舉的方法測試出秘鑰對,只有知道秘鑰對后才可以導出卡片內文件(具體原因請百度M1卡工作原理或查看:http://www.hufubo.com/?p=202),幸運的是國內大部分的M1卡都是使用的默認密碼或者弱密碼(例如 FFFFFFFF FFFFFFFF),我們可以使用比較傻瓜式的軟件M1卡服務程序窮舉秘鑰對并導出卡內的dump文件(通過破解軟件導出的數據文件都為xx.dump格式文件),然后通過一張卡多次消費并導出dump文件來對比不同金額情況下扇區內的信息來核算出具體的金額控制位,然后通過NFCGUI-PRO.exe程序將修改好的dump文件寫入到空白的M1卡內。
聲明:在實施過程中有可能我的步驟不是最簡便和最有效的辦法,但是作為科普入門級的文章,只希望更多的人能理解實施的過程,以更好的去防護這種方法。
先去洗澡卡終端查看卡內的余額:
卡內余額為26.91元,然后將ACR122u插在機器上,使用M1卡服務程序破解得出卡內的DUMP文件
使用M1卡服務器程序破解:
破解成功:
由于這種M1卡秘鑰對為弱密碼所以大約幾十秒的時間就會破解成功,dump文件會生成在文件目錄下:
dumpfile 4da2e80e(2015-08-2523_4).dump文件就是生成的破解文件 可以看到生成的dump文件為1KB大小,但是具體寫入M1卡的時候是需要寫入4KB大小的dump文件的
ps:這些軟件本來是×××linux開發的,移植到win平臺上只能生成1kb的dump文件,我們可以使用修復工具:fixdump將1KB文件修復為4KB,也可以使用NFCGUI-PRO.exe
這個軟件自帶的修復功能修復為4KB文件,我是使用的NFCGUI-PRO.exe
修復,如圖:
打開這個軟件點擊選擇文件-選擇剛才生成的1KB文件-就會提示“是否保存為4K文件格式”—選擇“是”-就是自帶修復成功
然后關閉軟件,剛才的1kb的DUMP文件就會自帶修復為4KB文件了。
通過上面的方法得出三個不同金額的dump文件。
2)通過十六進制編輯器進行dump文件的對比,找出金額控制位,我使用winhex進行編輯dump文件:
因為這兩個文件都是同一張卡片不同金額的dump文件,所以假定有金額的數據不同,有刷卡次數記錄的數據不同,刷卡時間的記錄不同,(假定會有這些不同之處,也許只有記錄金額的變化),通過對比兩張卡片,發現在00000176 和00000192處有不同的數據塊
如圖;
余額為26.91:
余額為26.88:
發現這兩張卡內的不同之處在于:
通過十六進制轉換測試:
Hex(80 0A)=32778
HEX(7F F5)=32757
測試發現并不是這么簡單的直接轉換,于是將 800A 進行翻轉為 0A80
HEX(0A80)=2688 2688符合卡內余額為26.88的實際情況。
HEX(0A83)= 2691 2691符合卡內月為26.91的實際情況。
可以總結得出金額位的加密方法為 金額轉換十六進制后進行翻轉存儲。
接下來分析 7F F5代表的含義
根據M1卡了解 金額位置后面會有校驗位數據,通俗講就是當前面金額數據變了之后,校驗位會根據另外的算法去改變值。
一般最簡單的算法都是二進制取余后轉換為16進制再加上金額位的加密方法
計算方法如下:
校驗位7F F5-翻轉為F5 7F轉換二進制為1111010101111111 二進制取余為0000101010000000 轉換為十進制為:
Hex(0000101010000000)=2688
可以得出金額校驗位的加密方式為將金額轉換為二進制后取余,取余后的二進制轉換為16進制,將16進制翻轉后得到的結果就是金額校驗位的信息
例如金額為26.88—2688–0000101010000000—1111010101111111–F5 7F–7F F5
計算出金額校驗位應填7F F5
計算出金額位和金額校驗位的加密方式后可以進行金額的修改
修改金額為600元則計算
金額位:600—60000—EA60—60EA
金額校驗位:600—60000—1110101001100000—0001010110011111—159F—9F15
則金額位填:60EA
金額校驗位填:9F15
直接在winhex內修改dump文件:
直接保存文件為600.dump,dump金額就修改成功了
3)將文件寫入到空白卡片中
通過NFCGUI-PRO.exe軟件進行dump文件寫入:
如圖:
打開NFCGUI-PRO.exe軟件后DUMP和Key文件選擇加載文件600.dump
將ACR122U插入到電腦后將空白卡片放到讀卡器上后選擇寫入文件
寫入成功:
dnSeuOQat3XjArO9pRBibj4Go8j1bibU1UFw/0?wx_fmt=jpeg">
4)測試:
到這里就是M1卡破解的基本步驟,僅作科普文章,請勿做違法事件!
1)將卡片全部更換成CPU卡,CPU卡可以模擬M1卡結構,完全代替M1卡,安全性也比邏輯加密的M1卡更安全。
2)采用一卡一密系統,一卡一密可以免去升級硬件的麻煩,最大程度保護IC卡系統。
3)采用滾動碼系統,增加效驗,加大破解成本
軟件工具鏈接:http://pan.baidu.com/s/1sjJuY3V
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。