RFID 安全之某学校饭卡破解

本文只作技术研究之用,请勿用于非法用途,否则后果自负。

继上次水卡的成功破解,对学校的饭卡也有点想要研究的念头了。既然这样,打铁趁热马上开始动手,先拿出 MCT 测试一下卡类型和扇区情况先。(不了解相关工具和术语的去看看之前的水卡破解案例以及M1 卡结构和破解探究

0 扇区并没加密,所以还是可以用跟水卡破解一样的手法,M1 卡的验证漏洞,具体过程就不再阐述了,可以去翻看一下之前写过的,破解出密钥之后就重点来分析下算法。其实这跟软件破解是一样原理,我们需要的不是破解密钥的方法,而是从根源上将算法破解,破解密钥简单几步没任何电脑基础的都能完成,正如学编程不是学语法而是不断提高自己的程序思维,这样我们才能学到东西。

在我破解了密钥之后,我直接将 Key 导入了 MCT 中,直接用 MCT 读取,比起用十六进制编辑器,我倒很喜欢有 M1 卡特有结构高亮功能的 MCT,毕竟是专门用于 Mifare 卡的工具,卡中数据十分直观。仔细看看,1、2、10 扇区存在数据,想要数据分析必须有多组数据,找同学借了几张卡来做对照。一轮对比过后,发现我的卡又是比较奇葩的,所有人的卡都是 1、2 扇区存在数据,只有我的 10 扇区有数据,纳闷啊……

把 10 扇区清空,忙着生命危险跑去小卖部试了试,发现一切正常,好了,我是奇葩……

我消费了几次,拿回来之后发现,都是 2 扇区的扇区数据发生了变化,基本可以确定钱的数据就在 2 扇区,那 1 扇区到底是干嘛的呢?尝试清空 1 扇区,再去小卖部试卡,一切正常。猛然想起,学校旧的热水系统是使用饭卡的,今年更换了新系统之后才换的卡,估计 1 扇区就是旧热水系统的了,机器现在已经不复存在了,果断清空。

重点来看看饭卡的数据,直接用电脑的十六进制编辑器打开 Dump 文件,就发现 2 扇区 0 段有我的名字的存在,这里是使用 GBK 内码保存的汉字,然后我尝试将刚刚在消费机上看到的卡号转成十六进制,在名字前不远的地方就发现了痕迹,那现在尝试下修改姓名和卡号。

Content Hidden.You Need To Login.

抱着赴死的心再去小卖部(小卖部的阿姨已经开始注意我这个鬼鬼祟祟的小子了),在众多掩护之下拍下了这个结果图,成功了。

接下来就到了最振奋人心的修改金额了,经过前面几次消费的分析,我发现 2 扇区除了 0 段和 3 段之外,中间的两段数据都是发生了改变,并且每次都只有其中一行发生改变,这个问题困扰了我将近一天时间,最后在某个时刻茅塞顿开,终于想明白了。卡中的两字节数据变化,泄露了这两行数据的用途。

Content Hidden.You Need To Login.

01BF 和 01BE 不刚刚好相差 1 吗?于是去小卖部多消费了几次,再结合之前充值的几次记录,终于发现,这个值每交易一次就会加 1。这应该就是交易的次数记录了,问同学借了一张刚刚充值过的卡,发现不管是充值还是消费在这里都记录了最近两次的消费记录,并且第一行是记录奇数次的,第二行是记录偶数次的,这也就造成了之前为什么变化的位置不通。知道这个规矩之后后面的工作就简单得多了,每一行肯定是代表了一次消费记录,其他数据干什么用对于我们的分析也不会造成太大的干扰。

Content Hidden.You Need To Login.

将我现在饭卡的余额转换成十六进制,马上就发现了前 8 位就是记录了这次交易后的余额,紧接着的就是这次的交易的金额,再接着就是消费次数,后面还有很长一段数据应该是消费机的编号了(这个会在后续继续破解,目前暂时没有头绪),尝试着将饭卡按这个规律计算了一次,将卡修改成一百多块钱,结果如下图。

Content Hidden.You Need To Login.

一切弄好之后写入到新卡,拿去测试,一切正常,使用非常完好,到此为止饭卡也被全部破解了。改个强悍点的数值看一看。

Content Hidden.You Need To Login.

不过数据修改了也并没什么卵用,只是能看一下,警告一下想要免费蹭饭的人,所有饭卡系统都是联网的,一分钱的数据都会同步到服务器,修改了拿去用了,你就等着警察上门吧。

此次破解总耗时接近 7 天,而且还有一些隐晦数据没有清楚用途,后期继续进行研究。

解决方案:

  1. 更换更安全的 CPU 卡,现在 CPU 卡可以模拟 M1 卡格式,但安全系数比逻辑加密的 M1 安全得多。

  2. 将现有卡片升级到一卡一密,并且保证扇区全加密,一卡一密可以很大程度保护现有的旧 IC 卡系统。

  3. 将系统设置成联网效验,联网效验是目前最安全的一种智能卡操作模式,可以很好的保护该系统。

Tags: 破解, 安全, RFID, 极客, Mifare, M1, S50, 黑客, 饭卡

108 Comments

  1. Neat Neat

    https://www.zhihu.com/question/40078360#answer-29921287

    有人转载这篇文章....

  2. 你好 博主 我想问问 你是怎么修改饭卡数据的呢 直接跳过了额 是十六进制的吗?关于姓名我也没懂

  3. CainXie CainXie

    http://weibo.com/3880503940/D3uAXw31C?type=comment#_rnd1447324279322
    恭喜你文章被微博營銷號轉載,營銷博轉載不但沒添加原作者署名反而添加自己的水印

  4. 墨夜 墨夜

    用什么应用读取的?

  5. 李浪浪 李浪浪

    看了你这教程 M1卡咋破解

  6. evil evil

    博主你好,如果手机的字典非常强大,是否可以代替电脑进行破解了?

  7. 真厉害 开眼界了!

  8. Frank Frank

    正在尝试进行分析

  9. […] 《RFID安全之某学校饭卡破解》这篇东西已经写了有好长一段时间了,刚好赶上了RFID的研究热潮,大家有许多不同的意见和看法。这几天文章被转到Freebuf上去了,我收到了许多读写们的邮件,有的疑惑有的支持有的反对,所以有必要写上一篇后记好好说明下。 […]

  10. 柯腾 柯腾

    卡分区密码可不可以使用手机破解,速度慢点也可以,,,或者那个读卡器哪里买。淘宝上太多了不知道买哪种

    1. 买ACR122U即可,手机破解不现实

  11. 弱

    博主你好,如果设备只有带nfc功能的手机,能实现破解嘛?期待博主回复

    1. 不可以,必须读卡器

  12. sx sx

    在学校电脑是看着看着突然发现,这不就是KQ么!!!我现在在KQ上电脑课啊!!!

    1. KQ漏洞已经堵上,请不要做尝试哦

    2. 原来是师弟哦哈哈

  13. 小磊磊 小磊磊

    学长qq多少。我想学

  14. 饭卡数据BA004500082200050000122400000000
    AF005000082100050000122600000000求大神指教

    1. 多收集数据自己分析规律,博主最近好忙呢

  15. Jobit Jobit

    博主好不知道博主关于饭卡是否使用过
    我成功的读出了饭卡的数据
    发现只有4个扇区是开启的一个是开水卡一个是热水卡一个是饭卡另一个空扇区 而0扇区无法读出
    请问博主为何在饭卡所在扇区只有一行代码而不是像你的一样有姓名等信息
    还有一个就是理论上用户信息是同时储存在卡上跟学校云端 在消费时不会同步异常而报警吗
    据我初步了解是有这个功能的
    若博主知道请告知谢谢博主

    1. IC卡跟ID卡的区别就是IC卡拥有较大的存储空间,所以使用IC卡基本都使用本地数据存储,云端数据辅助对账,但这必须保证绝对安全的情况之下。本卡因为使用年份比较久远,所以安全性较差,新卡一般使用JCOP等CUP卡不能进行破解,所以安全性会高很多,至于是否会进行效验一般是不会的,因为网络存在不确定因素,为了保证卡能脱机使用,会出现卡库不一的情况,由人工判断此卡是否被盗刷,所以要看系统设计时候所考虑到的东西。

  16. 开心段子网 开心段子网

    请问下博主手机是什么型号,貌似小米3不行

  17. 开心段子网 开心段子网

    多谢多谢,刚好看到这个,感谢站长分享.

  18. 范宇 范宇

    作者,百忙之中打扰你一下
    我在读取饭卡时,在存储金额的扇区,被难住了。
    6F0E001431000E060A1138007B000CB0 卡的余额是:36.95
    990C00D601000E060F1130007C00015D 卡的余额是:32.25
    350C003A02000E060F1205007D000236 卡的余额是:31.25

    我知道6F0E是保存金额的,取反E06F转换十进制是:3695
    但是6F0E之后的数据又是什么?我真的不明白,希望作者能帮忙点醒一下。
    十分感谢!

    1. 这个说不准的哦,有可能是你们自己消费机的编号,消费时间什么的

  19. BBS BBS

    对了楼主你们学校的饭卡金额为什么会储存在M1卡里面的= = 我们都在服务器上面挂着的

    1. 既然采用了IC卡,一般数据都会选择存储在卡中,服务器只是用作辅助核算,但这要建立在强壮的安全制度之上。M1卡以前是很安全的,被破解之后才存有安全隐患

  20. gaga gaga

    厉害啊~

Write a new comment