写在前面:破解卡只为科学研究所用,并探讨数据加密升级的必要性。
很早就在网上看过有网友发帖称破解了自己学校的水卡,颇有感触,上某宝查了下需要购买的设备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卡但也是可以破解的,但本人还不了解。卡的加密安全任重而道远。