寫在前面:破解卡只為科學研究所用,並探討數據加密升級的必要性。
很早就在網上看過有網友發帖稱破解了自己學校的水卡,頗有感觸,上某寶查了下需要購買的設備ACR122U,居然要100多元,省吃儉用許久后我終於下單。破解完成后發現並沒有我想象中這么難。
我已經破解了四張卡且都為IC卡,我學校有新版洗澡卡和舊版洗澡卡,還有開水卡,第四張就是本地的公交卡了。如下圖,三張水卡外表其實差不多。
破解軟件截圖:
我破解的卡中只有新版洗澡卡是全加密卡,其他三張卡均為半加密或未加密卡,多次刷卡后分析數據可知只有1個扇區的數據發生變化,幾張卡數據加密方式大同小異,就只貼兩組數據(為方便閱讀,我將該數據塊放入表格):
剛看到這些數據實在一頭霧水,在網上檢索相關資料后,我終於破解了加密數據的算法:
3和4字節反位轉為十進制即為卡金額,HEX(08BD)=DEC(2237),HEX(08CE)=DEC(2254),
第5字節為刷卡次數,每在刷卡機上刷卡一次,不論消費金額多少都將數據加1,
第2字節為3 4 5字節數據之和(CC=BD+8+7,DF=CE+8+9),
第6字節為2字節和 14字節異或(33=CC xor FF,20=DF xor FF),
第16字節為6字節數據加2,
1字節為2至14字節所有數據的異或(B2=CC xor BD xor 8 xor 7 xor 33 xor FF)。
這里只介紹了一張卡的加密算法,其他幾張其實都差不多,一通百通,主要懂得異或運算和十六進制和十進制相互轉換的話就手到擒來了。
后來我發現用ACR122U無法破解我校新版洗澡卡,嘗試很久之后才知道此卡為全加密卡,我嘗試使用窮舉法破解扇區KEY,但我發現我根本不可能窮舉的出KEY,因為KEY是32個16進制數,組合有16的32次方,破解工程量之大難以想象。用ACR122U無法破解,但能使用PM3等高級破解設備破解,某寶售價200元以上,我入手了一部后,發現果然可以破解。
知道其中兩個字節數據為金額位,那么想要修改金額就只能改這兩個字節,如果都改為FFFF的話一個就是最大金額了,是65535,其他字節數據溢出則去掉,只取后兩位即可,我嘗試了一下,如下圖
至此破解完成。想起以前中學時的飯卡是有充值上限的,最多600元,原因應該就在於此吧
顯而易見,全加密卡比半加密卡的加密性更高,破解成本也更高,但也不是不可破解的,我校的飯卡已經升級為聯網卡,所以不可破解,如同嶺南通和一些大城市的公交卡均為聯網卡,無法破解。現在為了提高卡加密性也早就出現了CPU卡但也是可以破解的,但本人還不了解。卡的加密安全任重而道遠。