RFID安全之某学校饭卡破解

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

按往常惯例先让主角上镜。

正面

背面

经MCT的检测,结果发现饭卡也是Mifare Classic 1k的卡。

饭卡检测结果

那既然是M1卡,依旧来尝试读一下扇区,看有没有存在默认密钥。读取之后发现,卡片除了0扇区都被加密了,看来安全性还不错。可惜M1卡被破解,全部扇区加密都能够XOR算出密钥来还说有一个扇区密钥是知道的,无任何安全性可言。

0扇区存在默认密码

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

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

10扇区的奇怪数据

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

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

清空1扇区数据

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

修改姓名

修改卡号

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

卡号姓名修改成功

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

仔细看看数值

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

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

计算好的饭卡

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

破解成功

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

时间: 2024-10-05 09:21:34

RFID安全之某学校饭卡破解的相关文章

RFID安全之某学校水卡破解后记——不留后患

前不久把某学校的水卡顺利破解了(不了解事情经过的看上一篇文章),看似很顺利,但最近偶然发现一些细节问题,细心的话可能也有人留意到,卡中的数据除了两个值块保存余额之外,还存在其他的数据,虽说学校的热水系统不联网,但要是机器自带日志记录,把我卡记录下来那不就完蛋了?所以此次要斩草除根,免得引来无穷后患. 要掌握规矩,肯定要有多组数据对比,找同学借了两张正常未经修改的水卡进行读卡,结果分别如下. 纳闷的发现除了我的卡之外,其他卡的1扇区都是没有数据的.果断把自己卡的1扇区清空了,拿去饮水机测试,使用一

RFID安全之某学校水卡破解

如今网络上能找到RFID安全类的信息非常的少,原因我就不说了,大家也明白.大家如果要研究RFID安全可以去RadioWar或者Freebuf多看看相关的文章,我在后面也会放出一些相关的资料供大家下载研究,资料大多数是外语资料,所以说外语一定要学好! 这次案例的主角是某学校可怜的水卡(热水卡),先小小地上镜一下先. 用NFC手机上安装的MCT(Mifare Classic Tool)查看,水卡的确是Mifare Classic 1k类型的. 此次破解用到的工具有:电脑一台,ACR122U一台,带N

RFID消费终端设备安全风险之某高卡破解剖析

之前我们发布了一篇名为"从现实中的案例关注RFID消费终端设备安全风险"的文章,当中提到了关于SAM所带来的一些真实案例.现在我们就接着说一下关于国内RFID黑产的一些案例,从而让大家更加清楚明白SAM的安全的重要性. 在接触RFID安全的时候,认识了一位在国内搞RFID黑产的朋友,从他手中我获得了一份所谓的"*高卡远程破解方法"的文档.所以基于文档的内容我写了这一篇破解过程的剖析. 以下为"**卡远程破解方法"原文以及过程剖析: 1.首先通过R

(原创)校园卡破解系列三(完结篇)---内网渗透

上午大课间十几分钟搞定! 在班上电脑  因为内网渗透 先看看本地ip  172.18.33.38 然后就想着扫一下网段  随手输了172.18.32.0-172.18.33.0 扫内网端口的工具挺多的  最顺手其实是kali里面用msf一个模块扫 那个能直接爆破一些端口 但是考虑到班上电脑xp的辣鸡机子 而且时间不允许 所以直接写个php来扫内网端口也就是如图的 13.php 下载个phpstudy+这个文件  5分钟搞定 扫完就第一眼看到 172.18.32.5开了个8000端口  下意识猜测

记一次M1卡破解过程——weigr的第一次博文

一次偶然原因,在网上看到关于一些Mifare Classic card卡的破解文章,发现成本不是很高,并且门槛也不太高(本人笨得很,没觉得低)觉得很有意思,准备入坑一波.正好我寝室有饭卡.洗澡卡和直饮卡,为啥不试一试呢,嘿嘿.说干就干! 于是乎就在网上各种收集资料,(本人懒得很,不想去图书馆查资料)首先我们得搞懂M1卡的内部结构是吧,不然无从下手啊,所以我们先从结构说起吧. 可能文章有点长,着急的话可以直接跳过前面三个点 1.M1卡的存储内部结构: M1卡分为16个扇区,每个扇区对应4块(块0-

【原创软件】M1卡充值软件,水卡破解复制修改必备!【吾爱首发】 By:Sunshines

声明:这个软件发出来是出于学习和研究的目的,请勿用于违法行为!前几天看了论坛上的xx卡破解教程,自己也买了个PN532来玩玩(昨天刚下单ACR122U-A9,正在路上,玩的好的话可以试试PM3),然后把两个学校的两张卡给破解了.破解之后呢自然会想去做一些羞羞的事情,比如change一下money什么的,无奈光改金额不行,还得算出校验位是怎么来的,然后每次想把money改成多少多少,都要拿系统自带程序员计算器在那里按来按去,很是麻烦,对于我这种懒人来说,必定要偷偷懒的(同时也方便了要改很多卡的人,

HDU246饭卡(01背包/动态规划)

动态规划的题总是 看完别人的代码自己理解着打,今天自己终于自己打一回,遇到了一点问题,不过解决后发现现在理解更透彻了. Problem Description 电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额.如果购买一个商品之前,卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购买后卡上余额为负),否则无法购买(即使金额足够).所以大家都希望尽量使卡上的余额最少.某天,食堂中有n种菜出售,每种菜可购买一次.已知每种菜的价格以及卡上的余额,问最少可使卡上的余额为多少. Inp

UESTC 31 饭卡(Card) --背包问题

背包问题. 思路:如果m<5,此时也不能消费,所以此时答案为m m>=5: 求出背包容量为m-5,买前n-1样便宜的菜(排个序)的最大价值(即最大消费,即消费完后剩余值最接近5)最后减去最大的那个菜的价格,就得到最小的余额. 代码: #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> using n

HDU 2546 饭卡(0-1背包)

http://acm.hdu.edu.cn/showproblem.php?pid=2546 题意: 电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额.如果购买一个商品之前,卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购买后卡上余额为负),否则无法购买(即使金额足够).所以大家都希望尽量使卡上的余额最少. 某天,食堂中有n种菜出售,每种菜可购买一次.已知每种菜的价格以及卡上的余额,问最少可使卡上的余额为多少. 思路:我们先用一个背包容量为price-5的背包去装菜,背包里