0x00 起因
rtz在調試NFC時無意發現學校的飯卡是 Mifare S50 卡
然而這種類型的卡片安全性非常低,互聯網上有大量破解該類型卡片的工具
所以rtz決定破解一下學校的飯卡練練手。
0x01 工具
ACR122U 讀卡器一台
無源全加密偵測卡一張
此次破解的關鍵是無源全加密偵測卡。
這種“黑客工具”非常難購買到,rtz是一年前機緣巧合購得一張。
0x02 原理
一般的IC卡加密方式是“一卡一密”
也就是根據卡片的ID經過一個黑盒算法,得出該卡片的密碼
由於Mifare卡的設計不合理,導致了Mifare卡讀卡器“無條件信任”放在它上面的卡片
不管那張卡片是哪里來的,也不管是不是自己發行的卡
只要檢測到卡片,就向該卡片發送密碼進行驗證
無源全加密偵測卡的作用是:偽造自己的ID,並記錄下讀卡器向自己發送的密碼
有了ID和密碼,經過一系列頭腦風暴,即可得出密碼黑盒算法
0x03 過程
rtz將無源全加密偵測卡的id分別偽造為000000 000001 000002…
然后持着偵測卡前往行政樓下的自助服務機器,將偵測卡放入讀卡器
待偵測卡獲取自助服務機器“傻傻分不清”后發來的密碼,再使用軟件讀出密碼
這樣就有了ID和密碼樣本
rtz一口氣獲取了十幾組樣本,經過一下午帶晚上的計算,
成功得出了ID到密碼的加密算法
這是rtz使用java編寫的一個利用算法讀取飯卡信息的程序
0x04 后果和意義
由於密碼算法的破解,rtz可以讀取任何一張飯卡存儲的學號、姓名、身份證號等信息,
還可以使用ID可改的UID卡直接偽造被讀取信息的飯卡
如果算法被居心叵測的人得到,任何基於飯卡進行交易的機器
例如食堂的購飯機,會被偽造的飯卡欺騙地體無完膚
后記
破解加密算法的另一個好處是,rtz准備為實驗室開發一套門禁系統
若是門禁系統使用飯卡的加密算法,則可以直接支持全校的飯卡
還可直接顯示出持卡人姓名和學號
一體化地非常完美~