RFID 安全之某学校水卡破解后记 — 不留后患
本文只作技术研究之用,请勿用于非法用途,否则后果自负。
前不久把某学校的水卡顺利破解了(不了解事情经过的看 上一篇文章),看似很顺利,但最近偶然发现一些细节问题,细心的话可能也有人留意到,卡中的数据除了两个值块保存余额之外,还存在其他的数据,虽说学校的热水系统不联网,但要是机器自带日志记录,把我卡记录下来那不就完蛋了?所以此次要斩草除根,免得引来无穷后患。
要掌握规矩,肯定要有多组数据对比,找同学借了两张正常未经修改的水卡进行读卡,结果分别如下。
纳闷的发现除了我的卡之外,其他卡的 1 扇区都是没有数据的。果断把自己卡的1扇区清空了,拿去饮水机测试,使用一切正常,不知道是哪个这么无聊把数据写进去的,继续研究。
可以发现,所有卡的 4 扇区的 0 段开头都有 0400,并以 C5AE 结尾,貌似这是一个校验位,把它清零,拿去饮水机测试,发现是 Error,看来这个位的确是校验用的,可以保持一致,重点来分析下 5 扇区那段数据。
似乎发现了点端倪,除了开头的 FA5C 0000 05AC FFFF 和对照卡不一样之外,其他数据都相同。接着试试除了这 8 字节的开头保留,其余清零,在饮水机上测试,一切正常,回来再次读卡的时候又重新生成了一样的数据,可以排除影响。
接着将这8字节开头清零,拿去饮水机消费,发现提示 Error,看来的确是一个校验,我们必须保证对数据的敏感,可以看到 0000 和 FFFF,两个值恰好是取反了一次,那 FA5C 和 05A3 是不是也一样?FA5C 转成二进制是 1111101001011100,05A3 转成二进制是 0000010110100011,结果很清楚,两个值是互相取反保存,那我将它修改成 0000 和 FFFF,其余部分清零,拿去饮水机测试,一切正常。
到此为止,水卡的校验也被破解了,为了保险起见,将水卡的无用数据清零,并用 0000 和 FFFF 代替取反的值,痕迹就被清理干净了。
一个初学者
很厉害 受教了。
大神,我dump数据之后,得到了四个密码,但是导入mct后,发现14和15扇区密码a全是--。控制位和密码b都正常,数据也可以显示,但是不可以修改,mct提示说密码a未知。我在详细对比了一下卡中数据后发现,0扇区数据和dump中的密码a有相同部分。但是mct读出来0扇区的数据却和dump中的不同。不知道密码a被加密还是怎么回事,希望大神教教我
可能是控制位问题,dump中的密码绝对没问题的
我在小米3手机上安装了一个mifare classic tools ,
总是出现 not a mifare classic tag! 这个消息。不知如何解决。。。。求教下。
谢谢!!!
可自行翻译,不是Mifare标签,所以不支持
博主救命!我的卡我自己改了以后不能用了 有人说是校验位错了 帮帮我吧
校验位错了没得教,换卡吧
那直接拿其他卡的信息覆盖掉 校验和金额,这样会不会安全?
还有机器自带那个卡记录,貌似没问题吧。怎么会查出来?
直接复制就是重放攻击,金额少还是看不出问题的
恩是的
嗯,明白了。这样相当于一张新卡在使用,没有多余的记录。灰常安全。谢谢!
如果卡中有数据是负责记录用卡记录和持卡人身份的,或者是机器做的使用日志,那很有可能就被排查,既然不影响使用,痕迹当然要清理干净,以防后患
虽说学校的热水系统不联网,但要是机器自带日志记录,把我卡记录下来那不就完蛋了?
博主说的那些我知道,但是这句话让我很疑惑,前面写的那篇文章,卡都能正常使用了。还有其他数据认证就没别要管它了,怎么会留下后患?那后患是怎么查出来的?
用对比法啊,清空数据之后,如果还可以正常使用,则表示那段数据不参与验证过程,如果不可以使用了,则证明数据参与到验证过程中了,需要找出它的算法
那个记录是怎么回事,是怎么查出异常的?能说下原理吗?