RFID 安全之某学校水卡破解

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

如今网络上能找到 RFID 安全类的信息非常的少,原因我就不说了,大家也明白。大家如果要研究 RFID 安全可以去 RadioWar或者 Freebuf多看看相关的文章,我在后面也会放出一些相关的资料供大家下载研究,资料大多数是外语资料,所以说外语一定要学好!

用 NFC 手机上安装的 MCT(Mifare Classic Tool) 查看,水卡的确是 Mifare Classic 1k 类型的。

此次破解用到的工具有:电脑一台,ACR122U-A9 港版一台,带 NFC 功能的手机一台,水卡一张。

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

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

安装完驱动和 SDK 之后,把 ACR122U 连接电脑,设备就能正常工作了。把我们的水卡放上去,ACR122U 的蜂鸣器就会响并且 LED 的颜色也会改变。

在此之前我已经尝试过用 MCT 自带的常见的密钥去访问水卡,发现有部分扇区使用的不是默认密钥,被加密了,对于这种不是所有扇区加密的卡,我们可以采用验证漏洞把其他扇区密码破解出来。

验证漏洞可利用的程序是 mfoc,mfoc 在 Windows 上的版本叫 mfocgui,但 mfocgui 对于刚刚接触 RFID 安全的同学来说有点麻烦,所以这次直接采用M1 卡服务程序(其实就是简化版的mfocgui)(内容涉及违法,已经按相关部门的规定撤下)

打开之后,程序界面非常简洁,只有一个按钮,就是开始破解。在读卡器列表那我已经见到我的 ACR122U 了,所以直接按开始破解就可以。然后接下来就等待程序自己破解密钥。

不用很久,就看到所有扇区都被打勾了,破解成功了。

破解成功后根目录就生成了这张卡的 dump 文件了,大小是 1 Kb,整张卡就被读取出来了。

但 mfoc 原本是运行在 Linux 环境下的,移植到 Windows 下的 mfocgui 生成的 Dump 文件是并不能直接使用的,还需要一个修复工具 fixdump(下载fixdump),将 1 kb 的 Dump文件修复成 4 Kb 的 Dump 文件才行。

fixdump 是命令行操作,并且必须安装了 .NET Farmwork 4 运行库才可以使用,为了方便命令操作,我们将 Dump 文件拷贝到fixdump 的目录里,打开 cmd 进行修复。命令很简单,直接 fixdump file.dump 就可以,生成的文件会直接覆盖源文件。

修复完成后,用 UltraEdit 或者 WinHex 之类的十六进制编辑器打开,就可以看到 Dump 文件的数据了。

看到上图我用方框框着的数据了吗?这就是卡扇区的控制段,其中前 6 字节和后 6 字节的 FFFFFFFFFFFF 就是这个扇区的密码,中间的 FF078069 就是控制位,还不清楚 M1 卡的结构的可以去看看这篇介绍 M1 卡结构 文章。

知道密码之后,我将密码导入 MCT 中,开始读取卡片的数据了。紧接着就可以开始改写,具体可以看一下 S50 卡的官方文档。

Content Hidden.You Need To Login.

将数据写入到卡里,现在就是去机器实践的时候了。

破解大完满结束,总耗时 5 小时。

如果有什么问题欢迎留言或者邮件咨询和交流。

解决方案:

  1. 将卡片全部更换成 CPU 卡,CPU 卡可以模拟 M1 卡结构,完全代替 M1 卡,安全性也比逻辑加密的 M1 卡更安全。

  2. 采用一卡一密系统,一卡一密可以免去升级硬件的麻烦,最大程度保护 IC 卡系统。

  3. 采用滚动码系统,增加效验,加大破解成本。

Tags: 破解, RFID, ACR122U, 极客, IC卡, Mifare, M1, S50, 黑客, 水卡, 热水卡

490 Comments

  1. Vincent Vincent

    安装驱动的时候显示
    Unsupported platform.Setup will exit.
    怎么解决啊

    1. 翻译过来就是不支持的平台,请检查自己PC

      1. CHU CHU

        这个难道是64位的原因么

  2. […] 一直没有机会也没下定决心认真的去研究某个安全领域,很早之前就看到好多人研究RFID,一直很憧憬那片天空,趁着老大给机会,决定选这个方向作为个人业余努力的方向。 差不多四天前入手了ACR122U,决定拿自己母校的餐厅饭卡练手。 ACR122U的使用很简单,只要安装上驱动,使用M1卡服务程序就可以很快破解,破解完成后查看其生成的dump文件,找到加密扇区的密码,将密码导入到MCT (Mifare Classic Tool),剩下的就可以完全使用MCT完成了,个人很怀疑破解过程是否完全可以通过手机(支持NFC)APP完成。ACR122U的详细使用过程可以参考:RFID安全之某学校水卡破解,本文主要介绍目前M1卡中的数据分析和M1卡安全防护方案。 […]

  3. CHU CHU

    请问,手机是MX3 MCT提示不支持呀,

    某宝购入ACR122U读写器 数据写入到卡里,可以用ACR122U么0.0

    1. 可以,PC有工具,迟下发

      1. 苏州才子 苏州才子

        大神什么时间发啊?
        表示最近想换手机,找不到带NFC的,我喜欢的手机,纠结中

        1. 暂时还不知道呢,还在做,学校上课也挺忙的。NFC手机现在好多都有啦,看自己喜欢吧

      2. CHU CHU

        好哒,记得发哦,可以的话,顺便发个完全用电脑和ACR122U操作的教材吧(其实是我智商有限),么么哒~

        1. 知道了,么么哒。。。。

  4. zhlqx zhlqx

    博主,我的卡用MTC自带的默认密码读取,一个扇区也读取不出来,这怎么办?

    1. 那就把密码破解了先啊

  5. omg omg

    请问博主,最后怎么将数据写入水卡?你用的手机写的吗?如果没有nfc手机,在电脑上该如何操作

  6. darkston darkston

    请问博主怎么将密码导入MCT。

  7. DimRacker DimRacker

    博主在吗?mfocgui是不是只支持ACR122U?我买了个ACR1251U,是第二代,结果用了几个软件,都识别不到,郁闷呢!

    1. 有可能哦,我也不大清楚呢,不好意思

      1. DimRacker DimRacker

        感谢博主及时回复,请问这个nfc.dll是哪从里来的,有没有新版的?

  8. mi1234556 mi1234556

    我用mct检测卡 发现不显示扇区

    1. result result

      密码是用mfoc弄出来的么?有没有手机端算密码的app?

      1. 是的,也有嗅探出来的。效率太低了哦,暂时没有,用字典生成然后MCT跑吧。

    2. 需要有密码才可以读取

      1. DimRacker DimRacker

        请教博主,识别不到读卡器,是软件问题呢,还是读卡器的问题?

  9. 刘伟 刘伟

    MTC修改完数据如何写到卡里

  10. 刘伟 刘伟

    没NFC的手机能用ACR122U代替吗

    1. NFC手机做得到的ACR122U一样做得到,NFC手机做不到的ACR122U都做得到

  11. 9122 9122

    如果只是克隆一张卡用这么麻烦么?

    1. 复制简单得多,但失去研究意义了

  12. moumou moumou

    我们学校的卡,消费后对比
    08 86 24 21块8毛2
    08 75 D7 21块6毛5
    04 9F 31 11块8毛3
    04 9D 33 11块8毛1
    前四位是顺序存放的,就是钱数,但最后的两位不知道怎么算,不是取反,应该是某种校检,求助啊!!

    1. konika konika

      一共就6位吗?能否再多几组数据

      1. moumou moumou

        就这六位是有效的,这个我知道是怎么验证的了,这个是滚动码,是一种加密算法

  13. super! super!

    大神?为什么我弄出来的dump文件转4K后还是什么数据都没有,除了0区和key全是00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

    1. 那是非离线卡的可能性很大

  14. Tim Tim

    我们正在邀请人有偿破解某国外产品的RFID密码,请问如何联系您,可以联系我的QQ: 2845438764

    1. 关于我页面有联系方式

  15. an an

    英语盲,想请教下博主,解出每个扇区密码后,怎么将密码导入MCT

    1. Edit Key File

      1. an an

        现在每次要写入都要先手机端清空卡,不知道是否我操作不对,望指点

      2. an an

        谢谢博主!弱弱再问一下,pc端读写有什么软件吗,谢谢~

        1. 有,最近太忙,迟下会post相关教程

  16. ll ll

    怎么加不上楼主qq啊?想和楼主交流一下,联网机器的绕过,和一些对于联网机器的疑问?请问可以给个联系方式吗?

    1. 在关于我页面有联系方式

  17. fan yongtao fan yongtao

    请教下博主:我从这篇博客的链接中下载的fixdump为什么无法运行?双击fixdump.exe后没出现了一个界面很快就自动关闭了。
    我试过用 “下载吧 常用运行库总汇1.5”安装.net framework4.0和java运行库,也试过单独下载的。都没用。

    1. 这是命令行工具。。。。

      1. fan yongtao fan yongtao

        额,好吧,,上个问题丢人了,感谢博主这种问题都能回复。
        不过还有一列数据我研究了一天,连博文评论都翻遍了,也没弄懂后两个字节表示的含义,热心的博主能否帮我看下?

        2C01 E092 // 余额3:2C01 --> 012C --> 300
        0000 4493 //消费3元,余额0:
        D007 A893 //充值20,余额20:
        F401 0C94 //消费15,余额5:
        第一列为余额,算法和博主的一致,第二列是什么呢?
        92,93,94可能是消费次数。那第三个字节是?

        PS:后三行数据是我在08月27号 下午五点多产生的充值消费记录(每次记录相差几分钟而已),
        所以第二列应该不是时间。

        PPS:期待博主更新技术类博客啊!!!!!!!!I am hungry 啊

        1. 有好心人帮这位兄弟算一算吧,博主最近没空呢

          1. 去别的机器试试,或者是你效验没有改到位

          2. fan yongtao fan yongtao

            嗯嗯,谢谢博主,再请教个问题。我按照规律把修改的数据写入了卡里(余额5改成了200,37900改成了38000,也就是相当于充值了一次),可是我去消费终端消费的时候显示的余额还是5,而且卡还能用。貌似改的数据白改了。这种情况是不是消费终端本地有余额记录,只改卡里的数据不管用?

        2. konika konika

          楼主被误导了,93,94不是记数用的,93出现了两次。还是要结合4个字节来看。
          9344--37700
          93A8--37800
          940c--37900
          看到规律了吧

          1. 谢谢小伙伴们的指点,我会继续研究的

  18. zhuoping zhuoping

    电脑上有没有什么程序来写入卡片呢???

    1. 有,迟下会出教程

      1. zhuoping zhuoping

        坐等教程软件啊~~~~~~~顶你~萤火虫哥哥(姐姐)~

  19. anything anything

    既然它不限密码的尝试次数,是不是可以跑码暴力破解呢

    1. 可以,但是明明有漏洞,为什么还要费尽去爆破呢

  20. super! super!

    大神请问可以不要支持NFC的手机吗?

    1. 有读卡器就行了

      1. super! super!

        谢谢大神,能留一个联系方式吗,可以发到我邮箱,[email protected]

Write a new comment