M Tools:移動端rfid校驗計算工具
初學 RFID
1. 前情提要
Mifare Classic card 提供 1k-4k 的容量,我們經常見到的是 Mifare Classic 1k(S50),也就是所謂的 M1 卡。M1 卡有從 0 到 15 共 16 個扇區,每個扇區配備了從 0 到 3 共塊個段,每個段分為 b0 到 b15 共 16 個區塊,並且可以保存 16 位元組的內容。
每個扇區的第 4 段呢是用來保存 KeyA,KeyB 和控制位的,每張卡的 0 扇區還有一個唯一標識的 UID 號。
2.破解原理
這種卡類的攻擊方式大概分為這麼幾種:
1
)暴力破解爆破對於 M1 卡的破解來說比較有效,因為 M1 卡是被動卡,需要讀卡器來供能,切斷供能後卡的臨時數據就丟失了,也就是說不會存在輸入過多錯誤密碼後造成的鎖死之類的情況
FFFFFFFFFFFF、A0B0C0D0E0F0 等等都是 M1 白卡的默認密碼,所以當我們使用 acr122u 的配套軟體 M1 卡服務程序這樣的工具來爆破的時候基本上都是用這些默認密碼來填充剩餘扇區的密碼。
2
)克隆卡片(卡複製)M1 卡的扇區可以保存數據,所以大部分的卡片會選擇加密扇區後保存數據,我們可以用 uid 卡來進行複製,每張 M1 卡在 0 扇區第 1 段都有一個唯一標識,而且是保護無法修改的,uid 卡就是沒有設定 0 扇區保護的卡,所以你可以隨意的修改你想要的 uid,這樣我們就可以克隆出一張連 uid 都相同的卡片了。
3
)嗅探攻擊在卡和機器數據交換的時候嗅探數據,並計算出校驗即可。後期可在安卓端用 app:M Tools 進行數據的嗅探。
已經有很多篇文章講過了原理部分,直接講一下階段
3. 所需工具:
硬體: ACR122u(最常見的 rfid 設備,本質就是 pn532,但是有個足夠強的上位機,比 pn532 容易上手。沒買 pm3 是因為感覺貴,沒啥必要。。。)
軟體:m1 卡程序,fixdump,sublime Text3,UID 寫卡程序
以及安卓端:mifare classical tools, M Tools(神器)
mifare classical tools 是一款讓人又愛又恨的軟體,但是遠遠不如 M Tools 強大得多。。。
4 . 實際操作:
1. 首先把 acr122u 的驅動嘰里呱啦的安裝好。
2. 把水卡放置道讀卡上,正確識別之後燈會變為黃色。
3. 打開 m1 服務軟體,正確識別機器之後,點擊開始破解。
破解完成當即獲得一個 1kb dump 文件,現在可以直接拖進 sublime text3,即可看出扇區密鑰。
為了容易看出金額差別,用手機端 app:mifare 打開 m1 卡,
會發現沒有 3 號 4 號扇區的 key,
用 sublime 打開 dumpfile1.dump
每個扇區的第 4 塊區域,前半部為 keyA 後半為 keyB
直接導入 mifare 工具,手機端圖形界面好觀察一些。
直接可以看到改扇區的信息了。先把現在的這份數據保存一下,然後再去機器那裡刷一下機器,然後就可以看出數據變化位了,後就可以確定數據位和校驗位了。
隨即就發現了一些端倪。這幾個數值出現了變化,
E4 12 DC 90
E8 12 DB 93
把前兩部分導進進位轉換器
剛好是金額位,那麼剩下的就是校驗位。
這都 8102 年了,之前經常逛酷安,知道一款神器,M Tools
這是一款酷安基佬開發的 app,最神奇的是作者錄製了視頻教程,但是地址確是在油管,並附有中式英語進行講解。現在還有一款 app 是 M Keys 也是該作者的作品,這兩款 app 現在也都支持外置 ACR122U 了,so 沒有 nfc 的手機也可以外置進行操作。
這個 app 也需要提前把密鑰導進去,然後就可以對扇區數據進行操作
這貨可以預置常用的演算法,什麼十六進位倒序,倍數轉換啊,直接一點即可。
然後就找到之前發現的金額位數據,直接就可以轉換成 47.40,然後下一不是選擇校驗位的演算法,but 真的看不出有何端倪,直接先跳過了。然後來到這個 app 的核心功能,嗅探校驗位演算法。於是,在刷卡機器旁邊,沖沖放放這樣來了十幾個來回,嗅探到了一下數據。
目前已知的校驗位計算方法有這麼幾種:
反正就是加減乘除,異或取反,各種操作挨個試。看了好久沒看出來,就去翻著去看了幾篇教程,發現了一些端倪。
但就是這個 b12 部分一直啥都看不出來,真的是毫無規律可循。但其他部分應該還是很好知道規律的
such as:第 2 塊與第 1 塊做對比,金額位 b0 差-4,b1 沒有差別,b12 差+1, b15 差-3,剛好錢差 0.04
同理第 3 與第 4 塊的做對比,金額位 b0 差-8,b1 沒有差別,b12 差+1, b15 差-7,剛好錢差 0.08
那麼可知,湊一下:
b0 + b1 + b12-b15 = 某定值
(-4)+(0) +(+1)-(-3)
的話總值是沒有變化的沒有變化。
把這些數換到 10 進位計算出這個某定值為:
88(hex)+12(hex)+8(hex)-60(hex) = 66(十進位)
所以 b15 的公式就是:b15=b0+b1+b12-66
把公式填進 M Tools,直接成功完成驗證:
但是這個 b12 什麼鬼,什麼規律都沒有。。。。。。。。
但後來經過自己觀察,這個可能是隨機的,從圖上可知每刷一次都遞增一下,從 00 開始,such as:08.09.0A。。。。。。
5. 修改數據:
到了修改數據的地方,這都 8102 年了,提供一個更快的思路,直接用 M Tools。再充值的地方,長按有個定額的選項,直接填入即可。
然後就修改成功了,改個奇數位試試,
終語
這算是遇到一個賊拉簡單的校驗,甚至連異或檢驗都沒有。經過多次的計算校驗,感覺計算校驗就一條總結:羊毛出在羊身上。
1. 用好 winhex,逆向計算器
2. 最重要的,校驗的奧義:羊毛出在羊身上。就是說,校驗位在哪裡,你可以通過多看幾個數據的變化來看出。而校驗的產生,總是遵循金額位的變化,校驗不管咋變,都是金額位數值通過各種公式組合加計算出來的。
M Tools 的優點在於優秀的 gui 界面方便進行看出校驗方式,填入計算公式,直接就可以就行數據修改。
*
本文作者:devil0x,轉載請註明來自FreeBuf.COM
※沙特利用APP監控女性出境,蘋果、谷歌被指為幫凶
※在Linux下燒錄51單片機
TAG:FreeBuf |