zoukankan      html  css  js  c++  java
  • 学校水卡、本地公交卡破解记

    写在前面:破解卡只为科学研究所用,并探讨数据加密升级的必要性。

    很早就在网上看过有网友发帖称破解了自己学校的水卡,颇有感触,上某宝查了下需要购买的设备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卡但也是可以破解的,但本人还不了解。卡的加密安全任重而道远。

  • 相关阅读:
    myeclipse学习总结一(在MyEclipse中设置生成jsp页面时默认编码为utf-8编码)
    使用Android Studio调试UiAutomator过程中遇到的问题
    手游性能之渲染分析2
    手游性能之渲染分析1
    手脱ASProtect v1.23 RC1(有Stolen Code)之以壳解壳
    手脱ASProtect v1.23 RC1(有Stolen Code)
    Java 中extends与implements使用方法
    Java在处理大数据的时候一些小技巧
    Oracle 分页原理
    powerdesigner连接数据库 导出数据
  • 原文地址:https://www.cnblogs.com/undezhi/p/9099694.html
Copyright © 2011-2022 走看看