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. 王强 王强

    122u破的数据怎么导到手机mct里呢?一直没明白……【FFFFFFFFFFFF就是这个扇区的密码,这个不是默认自带就有的密码吗?mct解不出来?】

    1. Edit Key File你看看,自己加进去,MCT默认有很多密钥的了

  2. 陈骏肖 陈骏肖

    我今天试了一下我的饭卡,破译出来后发现就扇区2有数据,如下
    +Sector: 2 此时卡上余额180.30元
    00000DA655A400000000000000000000
    00466E090306000000001CDE00000000 00466E 十六进制转十进制为18030 090306?
    00000055000000000000000000000000
    ------------FF078069FFFFFFFFFFFF
    +Sector: 2 此时卡上余额179.30元
    00000DA655A400000000000000000000
    00460AA50506000000001CDE00000000 00460A 十六进制转十进制为17930 A50506?
    00000055000000000000000000000000
    ------------FF078069FFFFFFFFFFFF
    按照教程里面的方法怎么也算不出 090306、 A50506跟余额之间的关系,而且那个《M1卡结构》文章也打不开,你能给我解答一下吗?

    1. konika konika

      搞定没有啊?

    2. 文章并没有问题,而且不是所有的卡都用同一种算法,我的方法不一定适用于你的卡,所以你要自己去发现,你的结构一看就是自定义的算法,多去收集数据,然后分析其中关系即可

  3. 没有- -

    1. 孩子你过来,我保证不打死你( ̄. ̄)

  4. 大神,我读卡的时候,他的扇区没有,怎么办?

    1. 你确定你有卡的密码了吗?

  5. 苏州才子 苏州才子

    大神,那个IC卡的密码和UID之间有什么关系?我用学校的卡和原来的密码,这样修改数据之后能用,可是我改写密码之后就不能用了,是不是密码和UID之间有关系?

    1. 一卡一密的就每一个UID对应一个密码

      1. 苏州才子 苏州才子

        那他们的关系是什么样子的?

  6. 梁逸 梁逸

    如果没有NFC手机怎么办?

    1. 用PC端的读卡设备

  7. 李

    没有读卡器 手机可以读卡吗?
    非专业人士 不懂这个。。。
    求指教

    1. 你知道卡的密码,并且手机支持NFC就有可能读卡

      1. 李

        刚刚拿到的水卡 不知道密码。。。

        1. 不行,必须知道密码,没有密码就得用读卡器破解

          1. 我也是使用Chrome呢,没有问题,前端使用HTML5和CSS3,对浏览器要求略高

          2. 李

            大概明白了,感谢回复我的白痴问题,我回头问问电子的同学 去实验室借个读卡器。
            最后给作者反馈一个问题,我用谷歌浏览器打开这个网页存在排版的问题,非常不美观,网页有些拉伸变形,不知道是不是我浏览器的原因。

          3. 不行,除非你能把算法编译到Android上去,必须使用读卡器

          4. 李

            请问作者有没有相关的文章或者攻略推荐阅读的,专业论文看不懂,我学遥感的对电子完全一窍不通。。。
            今天拿到热水卡,手机是小米3支持NFC,仅凭这个能不能破解水卡?

          5. 有这可能,毕竟漏洞的论文把方法给出来了,芯片和CPU的效率是个主要问题

          6. 李

            或者说 手机支持NFC 可不可以把手机当作读卡器使用?

          7. 李

            首先感谢作者的耐心回复。
            手机有没有可能算出密码呢?

  8. 李

    请问没有读卡器怎么办?求电邮回复

    1. 没有读卡器是不可能进行读卡的

  9. 海云 海云

    对于一些无驱的读卡器,怎么用mfocGUI。

    1. 只要能识别出来基本没有问题,因为一般都是基于PN532方案的

      1. 海云 海云

        我用地是明华的M&W读卡器,软件识别不了,我们公司以前用的饭卡系统的公司不做了,现在买了一些白卡,可是原来的卡第一扇区加密了。现在mfocGUI里面找不到明华的M&W读卡器,请大神支招!!

        1. 基于PN532的读卡器实测均能使用,请多尝试几个版本试试,有问题可以再联系。

          1. 海云 海云

            大神能不能留个QQ号。

  10. telicobacter telicobacter

    适用于ACR122U的MCT可不可以发我一份?我实在是没研究过安卓……不懂怎么让MCT使用ACR122U……手机是mi2s,和你差不多,官网安卓驱动和开发文档我试过也帮不到我……

    1. Android直接引用ACR122U读卡只有一个demo,而且MCT哪个都一样,你能解决接口并挂载读卡器就可以用的了。直接Android接ACR122U不现实不方便

  11. SUN SUN

    用M1卡服务程序破解了一般 下面提示 链接NFC读卡器失败 这是什么原因呢?

    1. 一般这样提示就代表读卡器与卡的链接被中断,先检查下USB口是否正常,其次检查卡和读卡器

      1. SUN SUN

        我测试了几张卡 包括小区门禁 公司门禁 新买的空白卡 只有1种卡出现了这种问题 测试了两张这种卡 都不行

        1. 那就很可能不是M1卡,用libnfc测试判断下

  12. dxy dxy

    博主,你好!
    如果只用ACR122U,不用NFC手机,能否实现修改水卡的功能呢?

  13. SKY SKY

    用fixdump修复dump不过是在文件后面补零。这里用M1卡服务程序出来的dump根本不用修复。不信您可以自己测试。

    1. 是的,但写入必须要求4k格式,非4k要先转换成4k才可以写入

  14. yc yc

    博主是否必须xp系统才完全兼容软件??

    1. Windows7也可以,不过学校机器是XP所以我只有XP做实践

  15. SKY SKY

    我用的wind xp。。。。

    1. 你看看大小是不是1k就是了,完整的应该是4k

      1. SKY SKY

        明白了。嘿嘿。

  16. SKY SKY

    不知道为什么这不进数据去。需要什么软件?还有就是那个dump文件不用修复也能打开。还看的到我的名字。。为什么?

    1. Liunx下Dump出来的文件不需要修复

      1. SKY SKY

        那个手机上的驱动能不能发我?还有2天学考了,没心情写了。。哭。。。

        1. Google Play和ACR官网都有,自己download

  17. SKY SKY

    acr122u怎么样才能在安卓手机上用?需要驱动吗?这几天一直都没有思路。

    1. 有提供驱动,看官方文档自己开发就可以,接口都给出来了

      1. 苏州才子 苏州才子

        给个连接吧,大神,小弟不是学计算机的,学医的整这个伤不起啊

        1. 额,这个没有具体资料的,一种算法思想来的

  18. SKY SKY

    请问。MFOC GUI可以在哪里下载?能能发给我么?谢谢。

    1. 我明天发给你,邮件已收到

      1. SKY SKY

        O(∩_∩)O谢谢

  19. 苏州才子 苏州才子

    我就差最后一步了,用MCT写入数据之后,为什么原来高亮的黄色的数据变成了白色,而且写入卡之后也不能用?用MCT写入数据的方法有什么需要注意的吗?大神

    1. 高亮消失表示结构已经不符合语法结构,请仔细检查

  20. 圣光的正义 圣光的正义

    第12块: 00 23 5A FF DC A5 00 05 78 06 18 00 00 38 01 D1
    第13块: 00 25 3B 58 00 00 00 CF C4 D3 A2 C4 C8 20 20 8C
    第14块: 00 00 10 00 00 16 09 30 06 18 12 20 02 00 00 B1
    第15块: 00 00 00 00 00 00 FF 07 80 69 43 05 21 19 87 09
    我修改了12块中的23 5A,这个值是金额,然后去刷卡,没有问题,但是我发现,12块里面的值不动,修改第14块值中的日期,06 18 12 20 02 00 ,比如06改成05,就发现不能刷卡了,会报错。这是何解?是不是刷卡机每次都会对时间进行一次校对?

    1. 不好意思哦,我没有时间帮大家计算,大家尽可能自己多费点心思吧

Write a new comment