1. 程式人生 > >破解學校飯卡加密演算法

破解學校飯卡加密演算法

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準備為實驗室開發一套門禁系統
若是門禁系統使用飯卡的加密演算法,則可以直接支援全校的飯卡
還可直接顯示出持卡人姓名和學號
一體化地非常完美~

 

 

轉載:https://www.ruitz.cn/?p=132