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, 黑客, 水卡, 热水卡

479 Comments

  1. caizi caizi

    jcop41不能破解吗

    1. CPU卡目前都很安全哦

      1. range range

        话说要是学校一卡通行不行,那种能在淘宝直接充值的校园一卡通,那个是不是不能改钱这些啊?

        1. 那些的话虽然不敢说安全性很高,但我奉劝你别打歪主意←_←

          1. 可以,NFCGUI

          2. bbqiu bbqiu

            没有nfc手机就不能修改了,能不能在电脑上修改

  2. shen shen

    现在还没有ACR122U 但是我用饭卡刷NFC手机,一直显示“此标签为空白或无法识别”无法读取信息啊。莫非不是是Mifare Classic 1k类型???

    1. 你用什么工具识别呢?

  3. 许酥 许酥

    你好。我有MTC查看我们学校的一卡通和热水卡发现一卡通尽然没有加密。。。。。汗 = =!

    热水卡

    sector: 4
    No keys found (or dead sector)
    sector: 5
    No keys found (or dead sector)
    sector: 6
    No keys found (or dead sector)
    4.5.6为加密段.等122回来再说.

    被人de一卡通

    sector:2

    32 07 93 45 53 00 00 00 00 00 00 00 00 00 00 00
    00 23 95 14 05 11 03 7F CA 00 00 00 00 00 00 00
    00 00 00 14 05 09 02 00 00 00 00 00 00 00 00 00
    -- -- -- -- -- -- FF 07 80 69 FF FF FF FF FF FF

    sector:3

    00 DF 33 01 00 00 00 00 00 00 00 00 00 00 00 13
    46 00 00 00 00 00 00 00 00 00 00 00 00 00 00 46
    46 00 00 00 00 00 00 00 00 00 00 00 00 00 00 46

    我de一卡通

    sector:2

    22 34 53 61 39 00 00 00 00 00 00 00 00 00 00 00
    00 44 40 14 05 10 03 02 63 00 00 00 00 00 00 00
    00 00 00 14 05 11 01 00 00 00 00 00 00 00 00 00
    -- -- -- -- -- -- FF 07 80 69 FF FF FF FF FF FF

    sector:3

    00 E6 35 01 00 00 00 00 00 00 00 00 00 00 00 1C
    EF 01 00 00 00 00 00 00 00 00 00 00 00 00 00 F0
    EF 01 00 00 00 00 00 00 00 00 00 00 00 00 00 F0
    -- -- -- -- -- -- FF 07 80 69 FF FF FF FF FF FF

    我觉得第一行可能是名字。
    第二行的14 05是验证么?
    第三行第一个和最后一个是??

  4. 树熊丶 树熊丶

    它显示“没有找到默认密码加密的扇区”是不就是全扇面加密?

    1. 对的

      1. zhu zhu

        博主能帮我算一组数据吗,我算了很久了,前四位倒置是金额,后四位是校验码,两位一组,前十五组相加得到最后一组,但是第十五组(就是倒数第二组)算不出来,麻烦您能给我点提示吗,谢谢了非常感谢!!
        0元:00000000102700060000CE5D000040A8

        0.26元1A00000054A1000000009E4C0000C8C1

        24.42元:8A09000011CA00010000B439000090EC

        25.26元:DE09000011CA00030000B439000020D2

        25.29元:E109000011CA00000000B439000000B2

        25.41元:ED09000011CA00020000B43900005818

  5. 在押犯 在押犯

    博主,能帮忙分板一组数据吗?
    第一次数据:
    第8块: 01 EC 0A 01 00 30 31 36 36 34 38 38 20 20 20 C9
    > 第9块: 1C 02 00 6C 07 00 0E 05 05 0B 2B 06 48 09 00 36
    > 第10块: 1C 02 00 6C 07 00 0E 05 05 0B 2B 06 48 09 00 36
    > 第11块: 00 00 00 00 00 00 7F 07 88 DA 00 00 00 00 00 00
    这次数据是14年4月24日消费的,上面也有显示日期时间,这组数据,我自己分析出是
    1C 02 00 6C 07 00 0E 05 05 0B 2B 06 48 09 00 36
    |刷机编码|年 月 日 时 分 秒|次数|
    这次消费了5.8元,余额为15元。
    第二次数据
    第8块: 01 EC 0A 01 00 30 31 36 36 34 38 38 20 20 20 C9
    > 第9块: DC 05 00 6C 07 00 0E 04 18 0B 36 28 45 09 00 35
    > 第10块: DC 05 00 6C 07 00 0E 04 18 0B 36 28 45 09 00 35
    > 第11块: 00 00 00 00 00 00 7F 07 88 DA 00 00 00 00 00 00
    这次是5月5日消费了3.3元,余额5.4元。同一个地方消费的。
    我想遍方法了,都想不出如果得出余额和消费金额。

    麻烦大家一起帮帮忙,谢谢博主

    1. 我有空在给你算算

      1. 梨花 梨花

        帮你分析了一下
        前三字节是剩余金额1C 02 00倒置 00 02 1C十六进制数0x00021c
        对应十进制数0540后两位是小数
        DC 05 00倒置 00 05 DC十六进制数0x0005DC
        对应十进制数1500后两位是小数

        最后一字节是checksum(校验和)计算如下
        把前十五字节相加1C+02+00+6C+07+00+0E+05+05+0B+2B+06+48+09+00=0x0136截取后两位36
        把前十五字节相加DC+05+00+6C+07+00+0E+04+18+0B+36+28+45+09+00=0x0235截取后两位35

        数据组太少,不一定准确,还是多消费几次验证一下保险

    2. 在押犯 在押犯

      1C 02 00 不明数据
      6C 07 00 消费机编码
      0E 05 05 0B 2B 06 消费时间
      48 09 消费次数
      00 36 不明数据

  6. 往前跑^_^ 往前跑^_^

    全扇区加密的怎么破解?用什么软件?能发给我吗吗?我也是高中理科生,买了r122u
    破解到密码怎样导入MCT中?keyA的成功导入了,keyB导入无效,比如00000092500400000000B4F7BEF4C4B1中间的是控制位,keyB就是B4F7BEF4C4B1吧?导入怎么用不了的?

    1. 全加密用pm3才可以,pm3嗅探再利用算法漏洞算出key。破解到的密码直接在mct中的Edit Key File中分行写上保存即可

      1. 往前跑^_^ 往前跑^_^

        我知道分行写,但我已经写入去了,读的时候读不出来,只显示keyA
        3区里是00000092500400000000B4F7BEF4C4B1,另一个密码是怎样的?

        1. 控制位全是0啊,不可读

          1. mfcuk很早就不支持acr122u了,或许你可以找旧版本试试,但破解可能性不高。如果你确实需要破解可以去淘宝请IC卡商处理

          2. 往前跑^_^ 往前跑^_^

            不可能有钱买pm3了...听说全加密卡可以用mfcuk破解,是真的吗?不想全功尽废啊!!

  7. XQ XQ

    博主看看这两个数据怎么都不太对 该怎么算
    14.12: 01 96 D3 6C 00 14 14 00 00 03 E1 00 00 00 00 1D
    01 95 D0 88 00 14 16 00 00 03 E0 00 00 00 00 04
    14.03: 01 98 D5 95 00 14 03 00 00 03 E2 00 00 00 00 00
    01 97 D5 95 00 14 12 00 00 03 E2 00 00 00 00 F2

    1. 目前可以看出的是开头两个字节应该就是消费次数了。后面的数据我抽个时间再去看看,数据太少了不好分析

  8. tooyoung tooyoung

    实践的时候出现了俩个问题,一个是我用米三安装MCT读卡的时候出现提示not a mifare classic card,但卡确实为M1卡,我用mofcgui跑出了密钥 但因此仍无法使用MCT读卡进行数据读写;其二是我发现加密扇区的控制位被改7F078869即为密码A和B都能读写数据,我用mifare 操作工具却始终无法读写数据。求作者解惑,手机不可以的话如何使用电脑修改已加密的扇区。

    1. 不是所有的设备都支持Mifare卡,我用米2测试倒是没问题,控制位的确是可读写,把密码填到MCT的key文件中即可读取,你首先试试卡片测试多几次看是否能读取,米3的金属外壳会造成一定的影响,电脑修改请使用libnfc。

  9. 技术宅_Bob 技术宅_Bob

    40.07 07 28 00 2F
    40.00 00 28 00 28
    39.90 5A 27 00 81

    其实观察一下就不难发现,第3,4是校验前面的数据
    2F是40+07
    28是40+00
    81是39+90

    欢迎交流扣⑧314795贰

    1. @Bingo 这个朋友已经分析出来了,条理也非常清楚,可以参考

      1. Bingo Bingo

        嗯。非常感觉。实践后和理论一致。

  10. Bingo Bingo

    你好,看了你的文章,了解了数值的运算。

    但我这边的水卡0728002FF8D7FFD00728002F14EB14EB

    余额是40.06 怎么算都不对 ,请问是不是加密了?

    该如何解?

    1. 这个数据的确是值域结构,但结果是 788539399,地址14

      1. Bingo Bingo

        你好。我有尝试去自己算。我这边卡的值域结构 计算方式和你给的不一样。
        现在稍稍有些眉目。
        为了便于分析,只取前4个钱包正字节
        40.07 07 28 00 2F
        40 00 28 00 28
        39.90 5A 27 00 81

        发现第二个字节是小数点左边的 用十六进制表示
        第一个字节是小数点右边的 用十六进制表示

        现在不知道第三和第四个字节是干嘛用的,还没有找到规律。

        请赐教。

    2. Bingo Bingo

      00 28 00 28 FF D7 FF D7 00 28 00 28 14EB14EB

      这个是40

      求算法

      1. Taylor Taylor

        xw20416

      2. 算法已经说得很清楚了,伸手党一律拒答。自己不尝试去算难道一直去求人家帮你。

        1. 陈银 陈银

          哥,我一点都不会咋办啊

          1. ai ai

            我这用nfc手机读公交卡,16个扇区都能读出来,没有显示读取失败的,是不是说明扇区都没加密?

          2. 弟,那就学吧=_=

  11. s0ap s0ap

    如果没有NFC手机的话,能不能在电脑端修改数值呢?

  12. rill rill

    手机不支持M1标签,可否推荐一款pc端的写卡软件?win7系统的,谢谢~

    1. 小毅 小毅

      我的怎么没有那个扇形的,只有手机nfc功能可以吗。没有mfc读卡器

      1. 有密码就可以不用读卡器,没有的话扇区密码必须用电脑加读卡器进行破解

    2. 道明 道明

      1996对应0101010006A0A7F1FFFFFFFFFFFFFFFF
      20xx对应01010100082E27F1FFFFFFFFFFFFFFFF
      28xx对应010101000B0309F1FFFFFFFFFFFFFFFF28
      xx表示后两位记不清楚了,求计算方法

    3. Nfctool

  13. Barkleysu Barkleysu

    求解,打开SDK后运行Install ACS CCID Driver时显示Unsupported platform然后安装程序就自动停止了了,我已经装好了其他所有所需软件了

    1. 英文的意思就是不支持的平台,请检查驱动以及读卡器还有操作系统

      1. Barkleysu Barkleysu

        不过好像不安装CCID驱动也用得了,还有一个问题,就是怎么在手机的应用里面导入秘钥

        1. 自己输入key文件,Edit key file要自己去看看英语的意思啊,老伸手学不会东西的。

  14. 0749orz 0749orz

    我转载了一下,写得不错跟我的方法一样@dhm

  15. 抓图发[email protected],im

    1. 看清楚邮件地址哦,暂时没收到你的邮件

  16. wmsky wmsky

    你好,我RFID用手机米2NFC读,只是读了UID,和厂码,其它扇区和块都是0,AB密码都显示FF,控制码显默认的,我想其它区一定有数据,但看不到。什么问题?

    1. 你的卡也很有可能是只识别UID,其余数据保存在服务器上,这样的话你就只能篡改UID实现修改或者渗透数据保存的服务器

    2. 要是有扇区的key的话就一定能读到,而你说的情况是空白卡的,所有都是0肯定是空白的。注意下是不是有扇区没有key无法显示?

  17. lisun lisun

    也就是说ACR122U,不可以写数据?

    1. 可以写,ACR122U可以破解key,手机不可以。而你必须知道key之后才可以写入内容,所以两者结合就是最方便的

  18. 好的,非常感谢。
    另外还有个问题,需要一台带NFC功能的手机?那意思是手机直接刷卡才能让MCT读卡?这样的话ACR122U只是拿来用在电脑上的?
    我看图片里你用的小米手机结合ACR122U和OTG线连接的,似乎MCT能通过OTG识别出ACR122U?这样不要求手机有NFC功能吧

    1. 不一定,不过手机修改更加方便而已,毕竟不能去到哪都拖着电脑。手机可以OTG连接122u,但目前只能用官方的应用读卡,修改还是不行的。MCT只是使用本机的NFC模块,不会调用122u

      1. soga。就是说要么用NFC手机+MCT,要么PC+ACR122U?ACR122U就相当于给PC加上NFC功能了,自身就带NFC的手机没必要用ACR122U是吧

        1. 不能这么说,NFC手机只是简化了的ACR122U,因为必须有122u你才能破解key,而MCT就是一个知道key之后拿来随时修改数据的软件,两者结合就是最完美的

          1. 手机可以随身带着改比较方便,功能肯定是电脑强大。手机可以做的电脑能做得更好

          2. nike nike

            还是没太看懂?
            大神
            请问 用手机修改方便在那里?一般不都是用电脑方便点么?毕竟现在NFC手机还不算太普遍
            是去现场修改数据验证有没有成功么?
            如果完全用电脑?能不能完成呀???

  19. 想问一下那个突然出现的M1服务程序是什么东西?mfocgui精简版?哪来的..

    PS:你的博客在我这里访问不正常-_-图片和文件都失效。我是从看雪上过来的

    1. 是ACR官方出的一个解mifare卡密码的工具,也是使用了mfoc的方法,不过界面和功能很单一。过几天我会把工具再放到百度云,你到时候再来看看吧

  20. 小凯 小凯

    文件都下不了了。。。麻烦给个链接,也想研究研究

    1. 你好,文件拒绝访问是因为采用了防盗链哦,博客文件和图片都是使用CDN缓存,能看到图片就表示服务器在你的地区访问正常,请直接用浏览器下载(下载工具一律会被拒绝),还不行请给我发个邮件

Write a new comment