初学RFID-破解学校水卡

注:(本文只作技术研究之用,请勿用于非法用途,否则后果自负!!)

基本知识:

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

每个扇区的第4段呢是用来保存KeyA,KeyB和控制位的,每张卡还有一个唯一标识的UID号

这种卡类的攻击方式大概分为这么几种

1)暴力破解

爆破对于M1卡的破解来说比较有效,因为M1卡是被动卡,需要读卡器来供能,切断供能后卡的临时数据就丢失了,也就是说不会存在输入过多错误密码后造成的锁死之类的情况

FFFFFFFFFFFF、A0B0C0D0E0F0等等都是M1白卡的默认密码,所以当我们使用mfoc这样的工具来爆破的时候基本上都是用这些默认密码来填充剩余扇区的密码

2)重放攻击

刚刚我们说了M1卡是被动卡,当它被供能的时候会产生随机数列,切断供能后数据不会保存,再次供能又会产生一模一样的数列,然后就可以控制切断,再次供能的时间计算出这个数列,进行重放攻击来达到修改数据的目的

3)克隆卡片(卡复制)

M1卡的扇区可以保存数据,所以大部分的卡片会选择加密扇区后保存数据,我们可以用 uid卡来进行复制,每张M1卡在0扇区第1段都有一个唯一标识,而且是保护无法修改的,uid 卡就是没有设定0扇区保护的卡,所以你可以随意的修改你想要的uid,这样我们就可以克隆出一张连uid都相同的卡片了。(但是要注意不要把00扇区弄坏,之前测试的时候就未知原因写坏了00扇区无法读入了)

4)嗅探攻击

这里要用到PM3这个神器,在卡和机器数据交换的时候嗅探数据,进行攻击,利用XOR算key工具就可以把扇区的密钥计算出来(我在淘宝看了看,1300多,穷屌丝根本没钱买呢)

必须准备好的东西:

ACR122u,mfoc,libnfc,fixdump

在进行破解工作之前,我们要为电脑搭建相应的环境,大家需要在电脑上安装.NET Farmwork 4以及Java,请自行上网下载安装,后面用到的软件依赖这两个运行库。

BDB52C91@F6AD552(10-20-20-17-59)

安装完运行库之后就需要安装ACR122U的驱动了(驱动下载(百度云) ,SDK下载(百度云) ),为了方便后续的开发,我将SDK也一并安装。

82B2995D@F6AD552(10-20-20-17-59)

FF4AD694@F6AD552(10-20-20-17-59)

2D294138@F6AD552(10-20-20-17-59)

这里我用到了M1卡服务程序(至于这个软件我就不上传了,百度都有的):

622D37BF@F6AD552(10-20-20-17-59)

稍等片刻后就发现上下各16个勾勾都打上了,说明成功爆破了,成功后会在当前目录下生成一个dump文件,这样,这张卡的数据就被完全dump下来了,得到dumpfile1但是只有1k的大小,在win下操作的时候需要用到一个fixdump的工具来填充剩余部分

fixdump dumpfile1

即可修复,大小为4k,然后我们去消费一下这张卡(让你要修改的区域的数据改变)

再次dump数据dumpfile2并修复

fixdump dumpfile2

就此,我们有了两个样本,然后做hex diff,linux下直接用diff,win下可以使用hexcmp2

BA50DF28@F6AD552(10-20-20-17-59)

(图片更正下:640=fa00,但是卡里存储顺序却是00fa反序)

开始写入数据:

可以先通过回车exe来了解下指令信息:

60DFE2FE@F6AD552(10-20-20-17-59)

使用libnfc来写入数据

就这样,水卡数据成功达到640。

本文结合了两位大牛的文章结合实践并撰写出来,文章并没有解决后患问题,比如学校查账问题,请谨慎实践!

end!

【via@懒懒博客