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 天,而且还有一些隐晦数据没有清楚用途,后期继续进行研究。
解决方案:
更换更安全的 CPU 卡,现在 CPU 卡可以模拟 M1 卡格式,但安全系数比逻辑加密的 M1 安全得多。
将现有卡片升级到一卡一密,并且保证扇区全加密,一卡一密可以很大程度保护现有的旧 IC 卡系统。
将系统设置成联网效验,联网效验是目前最安全的一种智能卡操作模式,可以很好的保护该系统。
对了楼主你们学校的饭卡金额为什么会储存在M1卡里面的= = 我们都在服务器上面挂着的
既然采用了IC卡,一般数据都会选择存储在卡中,服务器只是用作辅助核算,但这要建立在强壮的安全制度之上。M1卡以前是很安全的,被破解之后才存有安全隐患
厉害啊~
温故
楼主,学校发的饭卡不能直接修改金额么?是一定要用新的uid卡去写入数据?我是初学者,想和楼主好好学一学,有我邮箱,可以和我联系一下么?
可以,我用uid是防止记录下我真实卡的uid而已
楼主,能不能通过刷卡来去想小卖部写卡的程序,这样就不会留下痕迹
楼主,可以直接复制,然后用完了重新复制吗,不改任何数据,会被发现吗
我把一部分数据清零以后我发现再消费后数据会重新填上,貌似是因为卡机有联网的,是不是这样就无法修改?还有我修改了金额后在卡机上依旧是修改前的金额,这个又是什么问题呢?
这个应该是记录了消费终端的数据,由终端机生成。几乎没有不联网的,这个可以很肯定的说
既然是终端我们摸清算法就可以自己构造数据,算法就在那里又不会变
终端机生成的数据我们是不能修改的吧?应该怎么做,还是不太明白
不是啊,你搞清楚是干什么的,然后按照算法自己计算就可以
那就等于不可能破解修改到金额了吗?
但是,我试了一下我们学校的饭卡,储存金额区的数据是这样的:
00 26 D2 00 00 00 0F 0A 69 FF FF 18 FF FF FF FF
00 26 D2 00 00 00 0F 0A 69 FF FF 18 FF FF FF FF
消费一次后就变成这样:
00 21 BE 00 00 00 13 88 6A FF FF EE FF FF FF FF
00 21 BE 00 00 00 13 88 6A FF FF EE FF FF FF FF
然后我发现69和6A是消费次数的变化,没刷卡一次就加一,但是就是弄不明白后面的18和EE的关系,前面是金额,中间13 88 部分应该是卡机的编号
余额
895.12 1区块:00015DA8 0000014A 0899 16008800 7FEE
890.12 1区块:00015BB4 0000033E 089A 16008800 F6F7
879.12 1区块:00015768 0000078A 089B 16008800 1D8E
864.12 1区块:0001518C 00000D66 089C 16008800 9CD2
863.62 1区块:0001515A 00000D98 089D 16008800 4225
859.32 1区块:00014FAC 000001AE 089E 17008800 D756
826.82 1区块:000142FA 00000E60 08A1 17008800 D60B
大伙帮忙分析一下上面的数据,第1列是余额,第2列是当天累计消费金额(第2天会重新累计),第3列是每次消费值加1,第4列的16,17应该为消费日期,最后面的两个字节不知道是啥,应该是校验值。我将第1列余额改为9999.99元,即000F423F+后面数据不变,结果刷卡器报警,希望大家帮忙分析下,怎么回事?
我问一个问题,博主用到了安卓的NFC读卡吗?
能不能说一下整个过程用到的工具有哪些?多谢
楼主,能不能通过刷卡来取消小卖部刷卡机的写卡程序,这样就不会留下痕迹
楼主,能不能通过刷卡来取消小卖部刷卡机的写卡程序,这样就不会留下痕迹
不一定需要NFC手机,有电脑即可,手机只是方便随时携带随时修改数据而已。具体去看看之前水卡破解的案例 http://bobylive.com/static/1493
楼主好厉害!赞一个!有个疑问,如果修改成功了,对账单时,网上数据和卡的数据不同,会不会bei查到啊?如果被查到破解也没有意义了啊
你可以经常修改卡号,使得数据变乱,因为每天都有人会充值,而且大部分人的卡里都是有余额的,你消费一点点,然后别人充值的时候又会把这部分补上,这点财务上出入就会被当做是系统冗余而忽略。当然如果太大额的话就很难说了哦
你这拙劣的智商真是为你捉鸡去。首先。卡对刷卡机来说只是一个凭证。也就是保存你的账号密码。当通过了。刷卡机读取远程计算机上面的数据。然后发布扣除你现金的信息到计算机。同时把读取到你的卡的数据的凭证发到远程计算机。计算机再变更你的他数据库的数据。不是改你的饭卡数据。小朋友。秀智商还是要懂得下限的
喜欢极客系列文章
晨跑,你说的是ID卡。IC卡比ID卡复杂多了。楼主这么厉害你居然认为他智商低。哎。。。。井底之蛙
又不是用自己的卡号,而且数据库sa权限都拿到了还不能改啊( ̄. ̄)。而且高智商人士,IC卡跟ID卡的差别就在于空间不同,用IC卡一般就意味着数据离线,服务器辅助对账,但本地加密会做的很好,自己去看看校园一卡通设计理论吧,绝对不能完全依赖网络。我们这卡已经是八年前开始用的了,别把你超现代的目光放到这里
博主,你的文章被转到freebuf了,快去索要版权
http://www.freebuf.com/articles/terminal/34146.html
⊙_⊙鄙而不语
楼主真大方!
😁为什么这样说呢?
请问下博主手机是什么型号,貌似小米3不行
看了楼主做的事情,我也有点手痒了,我想试试看学校的水卡,因为水卡是不记名的。。。。话说楼主,做这些需要些什么设备和哪方面的知识?
RFID读卡设备:ACR122U(非全加密),Proxmark3(最权威的RFID设备)。知识:RFID理论,算法知识,计算机概论
我在radiowar的网店里看到有定制版的Proxmark3出售,貌似要1500+,貌似这部神器很牛B的,太贵了没钱买,准备买一部WiFi Pineapple钓鱼= =
PM3加上天线一套下来2200左右,WIFIPINEAPPLE不错,但其实可以自己做的
米2A,S3,S4,Note3均测试通过,其他暂时没机器做测试
我的NOTE3不能识别M1卡
可能个别手机NFC芯片不同导致的
楼主你好,请问一下,我们学校的饭卡如果丢了再挂失,领到的新卡可以在充饭卡的机器上领回旧卡的余额,这是不是说明卡内只有个人身份的信息,而余额的数据是在学校的主机中?
不一定,或许跟我破解的这个一样,卡中也有数据,服务器数据用于对账
那破解了以后给饭卡加钱。和服务器数据对不上,岂不是会被发现
不太过火就很难发现
我这儿刷卡机的地方都有摄像头,比较可怕
你好,我用mfocgui读一张M4卡,过了好几分钟软件崩溃,是我软件没下好?
4k卡没有测试过哦,mfocgui是1k卡专用
水卡能顺利修改金额,但不能撸到一张白卡上,是识别UID的?
消费记录会有余额么 ,感觉很容易查出来有问题但是没法抓到你的样子啊
这个肯定有的,但卡的数量太大很难核算
如果把卡号改了,卡还能正常使用么?
可以,卡号不同就代表不同身份的人了
学校的刷卡机插了网线的,服务器上没记录吗?
有消费记录
这种POS机的数据不是直接存在服务器端的吗 POS机结账的时候就会发现不对了
用IC卡的话钱90%都保存在卡中,服务器是拿来记录消费记录的,伪造卡号就可以造成数据混乱
...我们学校也坑,帮我破解看看,我会很淡定的...
我也在尝试
自己动手丰衣足食哦
楼主对于把技术用于实践做得很到位,我有时间也研究一下,看看行不。嘿嘿
哈哈哈,最后的图惊呆了我o_O
→_→淡定
帅帅的楼主 如果我买一张白卡克隆自己的数据 然后再修改UID 名字和加金额 这样一来是不是可以即使对账也查不出我是谁呢?