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. 小白 小白

    楼主,请问电脑win7用啥来写卡啊?

    1. libnfc,建议Linux环境下写卡

  2. 猪肉不贵 猪肉不贵

    没有读卡器能不能自己写个程序跑个字典出来然后导入 MCT 去逐个尝试?

    1. 效率太低,可以考虑但不值得推荐

  3. 猪肉太贵 猪肉太贵

    楼主,数据的读写可以用电脑完全操作吗,我手机没有nfc的功能,如果可以要用什么软件写入,acr122的读写器可以兼容所有的M1吗

    1. 可以,用libnfc,Acr122u不仅仅兼容M1,具体参数可以在ACS官网查询

      1. Daniel Daniel

        利用安卓模拟器+Acr122u来写入是否可行?亦或,将NFC手机当NFC读卡器连接电脑使用?

        1. Android上MCT无法引用ACR122U,需要自行开发,Demo可以在SDK中找到。既然有ACR122U用PC写卡就可以了,建议libnfc在Linux下操作,Windows下容易出错

  4. 逸

    m1服务程序的默认密码破不了怎么办?

    1. 全加密卡,MFCUK或者嗅探

  5. yujiawei968 yujiawei968

    密码怎么导入mct

  6. BADBOY BADBOY

    楼主你好,我看了你的破解水卡的文章,我下载了MCT,水卡贴上去,显示:此设备不支持mifareclassic卡。这是不是说我的水卡不是M1卡? 那我该如何破解? 急求你的回复,请联系我!谢谢。

    1. 有可能卡的确不是Mifare,有可能手机芯片不支持

  7. 李小鬼 李小鬼

    既然有了acr122u,为什么还要带nfc的手机?

    1. 随时随地修改数据

  8. 威

    你好,我们学校的饭卡只有0扇区的第一行有数据,所以是实时连接数据库查询的对吗?也就是没法修改?

    1. 搞定数据库才可以,或者盗刷

  9. 莫激动 莫激动

    此设备不支持mifareclassic卡在小米3上这样显示,请问手机不支持吗???还有大神的读卡器多少钱买的,x宝上有2种,不知那种

    1. 米3没测试过,不清楚。读卡器大概就是180-200左右价格

  10. 张茂林 张茂林

    MCT显示Not a Mifare Classic tag!是怎么回事啊,可明明就是M1卡啊?

    1. 可能是模拟卡

      1. Double kill Double kill

        那请问模拟卡的要怎么破解?

        1. 暂时没破解过,不好意思

          1. Double kill Double kill

            客气客气,破解得了水卡已是大神!

  11. 莫激动 莫激动

    请问博主,ACR122是要id的还是ic的???还有可以不用手机破解吗

    1. ACR122U就可以,不用手机可以,教程暂时没时间写

  12. netgear netgear

    楼主请教个问题,类似MCT之类的可以读取、高亮卡数据的程序在电脑上是哪个?谢谢

  13. 王先生 王先生

    博主,我有个想法,能不能用Android手机,买OTG线,接R122U 读卡器做到便捷读卡呢?
    类似于M1卡服务程序这种爆破的程序,在Android平台下是否也有?还是只能用mfoc那些基本命令?

  14. Nolouch Nolouch

    博主,只有NFC手机可以吗? 要不买个只读的呢?

  15. 挖槽 博主NB啊 要是能破解交通卡就NB了。。。

  16. 路飞 路飞

    博主什么叫 两次不取反一次取反? 没看懂,求解释下。

  17. 黄国俊 黄国俊

    19 05 00 00 00 00 0E 0A 1C 09 00 04 01 00 00 06这里面的金额是13.05
    D7 00 00 00 00 00 0E 0A 1C 09 00 04 01 00 00 19这里面的金额是2.15
    就只有最后一组数据不同,最后1组数据是怎么得到的?

  18. 秃鹫 秃鹫

    没有nfc手机可以吗?

    1. 可以,PC加读卡器

      1. Nolouch Nolouch

        博主,只有NFC手机可以吗?NFC手机怎么读到电脑? 不然就买个只读的读卡器呢?

  19. 拜拜 拜拜

    博主我已经纠结一个月了
    求教怎么修改数据
    余额是22.4元C008000000000E0A150C03270300002E
    单修改前四位饮水机显示错误的

    1. 曾先生 曾先生

      给你数据,用了没有

    2. 曾先生 曾先生

      10 27 00 00 00 00 0E 0A 15 0C 03 27 03 00 00 9D 朋友。给你一百块的数据

      1. 吕蒙正 吕蒙正

        朋友,加下企鹅吧,616768808

  20. K K
    -..余额其实不一定存在扇区里吧...因为我们学校的饭卡可以网上充值, 然后每一个刷卡机里都是插着一根网线的,所以我当时的一个想法是我们的饭卡(NFC) ,里面应该存着一个ID,,,然后每次刷卡根据ID进行扣费,,所以说能不能,通过更改饭卡的ID实现刷别人的卡(假设知道别人饭卡id的话.)
    1. 可以,盗刷就是有点。。。

Write a new comment