Mifare Classic card提供1k-4k的容量,我们经常见到的是Mifare Classic 1k(S50),也就是所谓的M1卡,属于非接触式射频卡 。M1卡有从0到15共16个扇区,并且每个扇区都有独立的密码,每个扇区配备了从0到3共4个段,每个段可以保存16字节的内容,反正从0开始数 就对了(和数组下标为0开始一样)

可以利用mifare classic tool里卡类型识别,一般看SAK就可以

SAK:08这种就是S50卡这种可以直接破的,IC卡 SAK08 Mifare CLassic 1k

SAK:20这种就是纯CPU卡这种也需要高级设备破(有的可以用支付宝读取余额)这种是可以用CPU软件充值的

SAK:28 JOCP31/41这种就是CPU复合卡,这种利用高级设备破(有的可以用支付宝读取余额)这种是可以用CPU软件充值的


这篇文章要不要发出来我是想了很久,emmm......

破解 从入学第一学期就有这个想法了,我们也找到一些白卡,想着这个余额也够用,也没那个必要了。。。直到后2021年中上旬的时候莫名其妙的发现了一个bug:“A卡可以从机器那里可以直接给B卡卡余额 “。当时是想看看这两张白卡还剩多少钱的,机器上插着A卡,还剩100多块,我知道B卡是没多少钱的,好奇的换B卡上去看看,把A卡拔出机器显示的100多块还没这么快消失,然后就把B卡插进去,机器那里还显示100多块,一直都没变,把B卡拿出来再放进去后。。。好家伙,居然变成了A卡的余额,后来用掉一些余额后重复步骤,居然还可以。没想到这机器这么拉跨,还能出这种bug

经历了这次bug,直接导致我下定决心破解它。为了有图写文章,不得不拿出尘封已久的ACR122U

首先我用灯光看了一下卡片,是IC卡,然后在手机下载个mifare classic tool进一步识别,可以看到的确是M1卡,这种卡是非常容易破解的,然后再看到10扇区和11扇区显示密码没发现,猜测金额数据应该在里面。

后来5月份的时候,购买了一部ACR122U和十来张UID卡,这台读写器配套过来的还有使用软件和教程,按着教程插上电脑,安装驱动后,打开破解软件,把要破解的原卡放上去破解,好家伙,破解了4个多小时,整得我差点放弃了

破解完成后生成了一些dump文件,用软件把格式转换一下可以看到10和11扇区已经破解出来了

现在我们有两个选择

  1. 直接把破解的数据复制到白卡里面,因为原卡还有100多块,复制十来张后确实是用不完的那种了
  2. 进一步通过反复刷卡,找到变动的区块,然后进制转换,找到余额算法和校验方法,来实现修改余额

既然读卡器都买来了,也破解了,不研究一下修改余额 怎么对得起这台读卡器呢,对吧

通过多次刷卡分析验算,发现金额位在第10扇区第0块的二三组数据

下面两个例子是通过金额校验位验算成功后重新写入的dump文件
例如下面卡余额剩余565.41元,将DD DC倒转成DCDD后再转成10进制后得出56541,再将小数点往左移动两位就是余额了

第二张卡示例:将二三组数05 FA倒转成FA05再转10进制后就是640.05元

接下来就是金额校验位了

(因为这篇文章涉及.......所以停更)反正最终的结果是校验成功,入学到现在一分钱都没往水卡里充过

届ける言葉を今は育ててる
最后更新于 2023-02-14