記一次M1卡破解過程——weigr的第一次博文

一次偶然原因,在網上看到關於一些Mifare Classic card卡的破解文章,發現成本不是很高,並且門檻也不太高(本人笨得很,沒覺得低)覺得很有意思,準備入坑一波。正好我寢室有飯卡、洗澡卡和直飲卡,爲啥不試一試呢,嘿嘿.說幹就幹!

於是乎就在網上各種收集資料,(本人懶得很,不想去圖書館查資料)首先我們得搞懂M1卡的內部結構是吧,不然無從下手啊,所以我們先從結構說起吧.

可能文章有點長,着急的話可以直接跳過前面三個點


1.M1卡的存儲內部結構:

M1卡分爲16個扇區,每個扇區對應4塊(塊0-塊3),共64塊,編號爲0-63.第0扇區的第0塊用於存放廠商代碼,已經固化無法更改。其餘區的第0-2塊用於存放數據,塊3爲控制塊用於存放密碼A、存取控制、密碼B,結構如下:

     A0 A1 A2 A3 A4 A5     FF 07 80 69    B0 B1 B2 B3 B4 B5

     (密碼A 6字節)     (存儲控制 4字節)    (密碼B 6字節)

並且每個扇區塊3中的密碼和存儲控制全部都是獨立的,獨立控制本扇區的各種操作,每個扇區都能實現不同的功能,所以廣泛用作一卡通。存儲控制裏面4字節的具體含義我也不是很清楚(不影響我們破解),所以就不說出來誤導大家了。

卡中每個塊包含16字節,所以M1卡的容量=16扇區*4塊*16字節=1024字節=1k  (M1卡的由來)。


知道了M1卡的大致結構我們就可以開始進行破解了,我在此收集了幾種常見的破解手段。

2.M1卡的破解原理: 

1)暴力破解:

暴力破解是最簡單粗暴、不需要多少技術含量的,就是比較費時,但這並不妨礙大家對它喜愛之情。因爲M1是被動卡,需要讀卡器爲之供能,一旦讀卡器切斷電源,卡中臨時數據就會丟失,所以無論試錯多少次密碼都不會被鎖定。特別是一些廠商偷懶用弱密碼,花不了多少時間就能破解。

2)克隆卡片:

這算是最簡單又實用的方法了。因爲M1卡加密扇區裏面保存着各種數據,所以可以克隆一張帶有同樣數據的克隆卡。這就會用到一種叫UID卡的特殊M1模擬卡。前面說過,每張卡在0扇區的0塊都會存放廠商代碼,所以裏面也保存了UID編號,是無法修改的。但是這種特殊的UID卡該區域沒有設定保護,可以隨意修改UID,因此可以製作一張與目標卡數據完全相同的克隆卡。

3)重放***:

重放***是基於M1卡的PRNG算法漏洞實現的。當讀卡器讀卡時就會產生隨機序列,但卡本身不帶電,所以每次斷電後在重新連接,就會生成一模一樣的序列,所以可能把這個序列算出來。只要控制好時間就能知道當卡獲取能量後某一刻時間的隨機序列,從而實現修改數據。

4)密鑰竊聽:

利用工具Promark 3可以嗅探M1卡(即便是全加密卡)在和讀卡器進行數據交換時的數據,然後利用XOR工具就能把扇區密鑰算出來。然而Promark3對於我來說太貴了(可憐的學生狗wuwu~)。

5)驗證漏洞:

當讀卡器讀卡的扇區時,卡會發一個隨機序列給讀卡器,讀卡器收到序列後會利用自身算法加密該隨機序列再反饋給卡,卡片接收後再用自己算法計算,如果結果一致就認爲該讀卡器是合法授權的,然後開始進行數據傳輸。這就產生了問題:當讀卡器訪問另一個扇區時,又會重複上述步驟,而此時卡片與讀卡器之間的數據交換已被算法加密過,而這個算法又是由扇區密鑰決定,因此就會導致這個密鑰泄露。所以只要知道一個扇區的密鑰,就能破解卡。(只要不是黴運如我遇到全加密卡 (╥╯^╰╥))



3.M1卡的分析原理:

1)比對法 :

比對法就是將已知數據換算成十六進制,尋找卡片中能與之對應的數據,從而確定卡片中對應存儲位置所存儲的數據的意義,或卡片中變化的字節轉成十進制,判斷是否相應的數據信息。最常用的比對值當然是餘額,還有當前的消費金額。

2) 試錯法:

針對一些不明含義的字節,通過修改已知意義的字節來確定其關聯性,找出不明意義字節的計算方法。比對法有時並不能分析出所有數據塊的數據,這時就可以考慮試錯法來確定隱晦數據和哪些字段有關聯。


4.好戲開始:

前面說了那麼多廢話(求原諒),這哈開始正式破解之旅了。

本着能省則省的學生黨原則,我一開始沒想用PROMARK3、ACR122來破解(畢竟得上百元啊,心疼)。於是在網上找半天破解軟件,發現 MIFARE經典工具 還不錯(操作界面如下)

wKioL1kqzwKSQpnYAAGYlvPlkx4431.jpg-wh_50

於是急忙下載安裝到手機上(PS:要求你手機有NFC哦),當時我就覺得破解沒什麼難的啊。安裝完成後迫不及待地拿着洗澡卡就打算進行破解,實際操作才發現根本不是那樣的啊,除了讀出來個UID其餘什麼都麼有,自帶的字典根本沒有好大用處。就算你有好的字典,手機跑起來也很慢,所以被逼無奈,只好向ACR122大佬低頭,狠下心買了它(賊氣,某寶上有賣的,我買成170,附帶破解軟件。POR3對於我是天價更買不起)。下面的就是它了

wKiom1kq0rnwGXk_AARSN9XP3IE427.jpg-wh_50


——殺器在手,天下我有。

照着賣家的教程,安裝好送的驅動(網上也有很多可以下載,但我覺得賣家的靠譜些),在電腦上連接好寶貝,檢測無誤可以使用(賊激動)。真是萬事俱備,不欠東風。反手拿起我的洗澡卡就放在了寶貝上,然後打開賣家送的破解軟件,就是下面這個東東:

wKioL1kq1uez0KGHAAHZLUpIsrQ122.png-wh_50

結果很玄幻!破解失敗!(欲哭無淚——!我要你這機器有何用) 我當時一臉懵逼,毫無辦法,只好向店家求助,結果店家給我了一個加強版破解軟件再讓我試一試(wc爲啥不早些拿出!)。但實話實說在那一瞬間我感受到了很大的希望,想來肯定沒問題。於是又再次嘗試,結果還是血崩,還是失敗。話說加強版長這樣:

wKioL1kq2qjg8CaVAADdMBVgJcQ561.png-wh_50

默認密碼破解失敗,因此我又把“使用窮舉法解卡”選項開啓了。當時也比較晚了,於是乎就把電腦開着慢慢破解,然後我就睡覺去了(期待成功)。結果二天我起來一看還在破解(woc一晚上時間都沒弄出來,難受),頓時無力感油然而生,真是老話說得好哇—一“一日之計毀於晨”。遂又向賣家求助,心想他肯定還有終極版破解軟件沒給我,結果答覆我可以考慮買個PRO3。我真是¥#@...(有錢我早買了好吧(╥╯^╰╥),不談錢 我們還是好朋友),至此我是徹底絕望了。

不過我還是不甘心吶,難道一百多就買個廢品嗎。不行,我還得繼續,然後我找來室友的洗澡卡挨着試,結果也是不言而喻的,我被卡完虐。(這卡也太頑強了吧)

怎麼辦呢。焦頭爛額之際,咦..我不是還有直飲水卡嗎?(其實我還有飯卡,但飯卡是聯網的,就算能破解,你只要敢改,立馬就有人來查你水錶,當然你能拿下後臺另當別論,反正我技術達不到也不敢做。)要不拿來試試,試試就試試。果然天無絕人之路,成功破解了(hah..別提多高興了)。破解成功之後我想了一下,是不是破解成功就能用呢?萬一這個飲水機也是聯網的呢,那不是血崩了?於是我反覆檢查了飲水機四周,發現除了電源線、進水管之外並無其他多餘的連線,因此放心了一點,但還是有點怕(我膽小,畢竟不想讓大學生活提前結束),然後我又找到飲水機上的生產公司,進入他們官網查詢該型號機器,發現是我多慮了,哈哈。至此才完全放心(進入官網時發生了有趣的事,但看這篇幅我也不敢再延伸了)

wKioL1kq4EDzqx3SAAHQvabkG1g462.png-wh_50

緊接着就是克隆卡片了,爲了讓更明白地闡述,在此我把完整破解->克隆圖示發出來(賣家送的,有點用)

wKiom1kq4UGxpb8CAAYqGfTcgTg229.jpg-wh_50

wKioL1kq4USCXO_7AAUEeqr7i_w499.jpg-wh_50

wKiom1kq4Uny6VyEAAZv1CCczXM586.jpg-wh_50

wKioL1kq4U6jRrKFAAbliSzXCWs337.jpg-wh_50

至此卡片克隆也完成了(參考上面圖示)。但是光克隆豈不是很不給力嗎,我們得知道扇區裏面的數據代表什麼含義啊,餘額我們能隨意控制才行啊。這裏我們就得用到一個M1分析軟件(M1卡分析助手)了。複製成功後應該是這樣子的:直飲水原卡(以下簡稱原卡)與直飲水複製卡(以下簡稱複製卡)的數據應該一致(可以看到這水卡除了0、1、2扇區其餘扇區都沒有數據),如下圖

wKiom1kq7VKR4HBaAACxu_AeaiM517.png-wh_50

之後我又用複製卡去接了點水,改變了一下餘額,再與原卡對比結果:

                                            圖1 

wKiom1kq7jCRhXBMAACUjduxloo712.png-wh_50

可以看到1扇區的2、3行數據變了且這兩行數據一樣,我們有理由相信這與餘額相關。然後我用軟件分析圖中1扇區中第2行數據(D5 19;2A E6),發現D519按位取反剛好等於2AE6,然後再看逆序值(19D5)的十進制爲多少(一般餘額對應的十六進制數據都是以逆序值存放),巧了,十進制剛好爲6613,正好是我水卡的餘額66.13元(激動hahah..)。

wKioL1kq8t2gE4tWAABkWjDG3dg679.png-wh_50

因此我可以認定1扇區的2、3行就是餘額的信息。爲了驗證正確性,我直接將2、3行的D519改爲了FFFF最大值,對應的十進制爲65535(最後兩位是小數,其實是655.35元),然後對應的2AE6改爲0000(按位取反),於是我又屁顛屁顛拿去飲水機上刷,結果竟然報錯。爲什麼呢?難道是圖1的2扇區紅字部分的問題?(除了1扇區就只有2扇區有不同之處了)要是這樣就麻煩了,還得破解2扇區數據的意義才行。但是除此之外有沒有其他可能呢?我想了一會兒,會不會是數額改得太大了呢?於是乎我將餘額65535又改爲50000也就是將FFFF改爲50C3(50000對應十六進制的逆序值),再拿去刷——成功!哈哈...



5.總結

破解到此基本告一段落,花費了我將近一下午時間(還不算收集資料時間呢,笨笨的我,沒得法)至於那些無關緊要的數據信息我會繼續研究,以後再更新。


我之所以決定寫下整個過程:一是因爲我長期在各個論壇“收刮”好的文章、資料,甚有收穫,所以這次就輪到我盡一點綿薄之力來幫助其他像我一樣的人吧;二是趁着這個機會鞏固加深一下自己的理解,也是一舉兩得吧。


由於我是第一次寫博文,上傳圖片按鈕我都找了半天(話說就不能整大些圖片按鈕咩),中途還突然“閃退”一次,給我嚇得遭不住,都寫了一半了呢。還好有自動保存功能,不然我真沒毅力再寫一次了,寫博文真是個體力活呢,感覺比破解本身還累多了...


也因爲是第一次寫這個,肯定有諸多不足,見諒!


6.參考資料:

鏈接: https://pan.baidu.com/s/1qC_r-22lRLyvdelnJS6u0g 密碼: gn6a


    



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章