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