SZ Horizon
SZ Horizon

『折腾』解密NFC!!饭卡再见!!

起因

  在QFLS吃饭直接刷指静脉就可以了,而在HNFMS竟然要刷饭卡!!作为口袋里力求什么都不带的人来说,每天都揣着一张饭卡就太不爽了。所以,我看了看手上的手环。。。
感谢WZB提供工具和指导!!

原理

  HNFMS的校园卡是半加密卡,也就是部分扇区加密。因此,我们要先把加密的扇区通过暴力破解出来。接着将解密的零扇区(UID编号,也就是卡的编号)写入一张空白卡,然后用手环模拟空白卡,这样手环上卡的UID编号就是原始饭卡的UID了,学校的读卡机就会认为手环上的卡是原始卡。
  光让读卡器认出卡还不够,卡里的内容正确才能够正常使用卡。因此,需要将剩下的63个扇区(一张UID卡总共有64个扇区,我们已经将第零扇区模拟完成)写入手环内。这时,我们就可以直接将数据用读卡器写进去手环了。最后,你的手环的所有扇区就和原始卡完全一样了,你也就可以正常写入了。

  • 注意,HUAWEI的手环及手表是CPU模拟NFC(好像是这样),因此并不支持直接写入数据,所以不适用于本文章所使用的方法。可以出门左转去Bing搜一下~

过程&教程

准备

硬件

  • 一个NFC读卡器,USB,可以到某宝上直接搜索购买,也可以购买pn532之后自己连接USB线,这是pn532的样子:
    更正:PN532是红色的板子,上面连着的杜邦线另一头是USB接口,芯片是CH340
    https://pro.goforit.top/stephen-zeng/img/master/202110021.jpg
  • 一台Windows的电脑,建议不要用虚拟机,原因等下讲。
  • 一张CUID空白卡,虽然百度上有不用CUID的做法,但是原理就是将原卡当作CUID卡进行刷写,我感觉不太安全。
  • 折腾的心态~

软件

来自2023/05/23更正:官方驱动已经通过了微软的签名,驱动签名可以不用关闭。
官方驱动下载
M1T(下面要用的软件)的GitHub仓库

  如果你买的是某宝上的NFC读写器,驱动就按照商家的进行安装就好了。如果你用的和我一样是pn532,那么对于Windows7及以上的系统(vista我不知道要不要),需要把驱动签名给禁用。禁用也很简单,你也可以度娘,也可以按照我写的做也可以。
  进入“设置“,在搜索框中输入”恢复“,进入”恢复选项“,然后找到”高级启动“并重启。

https://pro.goforit.top/stephen-zeng/img/master/202110022.png

欸算了,这是Windows11的重启方法,剩下的步骤和Windows10一样,我就放出链接就好了把
进入驱动签名,Windows10
  关闭驱动签名之后,先去下载这个安装包,里面有驱动和NFC工具:
下载(已失效,请见上文“来自2023…”)
安装驱动的时候,要先插入pn532,然后到设备管理器里面去安装。选中”USB Serial**”,右键,更新驱动,从本地选取驱动,然后选择这个文件夹,安装就好了。
https://pro.goforit.top/stephen-zeng/img/master/202110023.png

这时再看你的设备管理器,会出现这个设备:
https://pro.goforit.top/stephen-zeng/img/master/202110024.png

  至此,准备工作完成。

解密

  打开这个文件:

https://pro.goforit.top/stephen-zeng/img/master/202110025.png

https://pro.goforit.top/stephen-zeng/img/master/202110026.png

然后点击检测连接,应该会看到这些东西输出:

开始执行检测设备……

nfc-bin/nfc-scan-device.exe 使用libnfc 1.7.1
找到 1 个NFC设备:
- pn532_uart:COM3:
    pn532_uart:COM3:115200

识别了以下设备:
pn532_uart:COM3:115200
将自动选择首个设备:pn532_uart:COM3:115200
已指定使用该NFC设备:pn532_uart:COM3:115200
##运行完毕##

如果没有看到,就重新把驱动给装一遍把。
  接着,将饭卡(需要解密的卡)放到读卡器上,先点击扫描卡片,应该会看到这些:

开始执行扫描卡片……
nfc-bin/nfc-list.exe 使用 libnfc 版本 1.7.1
NFC设备: NFC-Device 已打开
1 个ISO14443A(常见IC卡) 被动目标已发现:
ISO/IEC 14443A (106 kbps) target:
    ATQA (SENS_RES): 00  04  
       UID (NFCID1): 93  18  e2  6b  
      SAK (SEL_RES): 08  

[Found targets=1]


##运行完毕##

然后点击一键解原卡,进行解密工作。这个过程的时间会非常长,而且尽量使用Windows实体机。因为我用Mac上Windows的虚拟机解了3次,每次25分钟,全部解密失败。但是换到surface解了一晚上(我也不知道多久),终于解出来了。解密这个东西也看rp,rp好的虚拟机15分钟就出来了;rp不好的向我一样倒腾了一个晚上。。。 :razz:
  解密完成后,会让你保存文件:

https://pro.goforit.top/stephen-zeng/img/master/202110027.png

这就是你的原始卡文件,也就是解密后卡的文件。相当于你已经把一张实体卡转换为数据,也就是说只要有这个文件就可以在无数设备上模拟你的原始卡。因此,
请务必保管好此文件,不要丢失或泄露!!!

提取UID

  我不知道其他卡是不是也是这样子,反正大同小异吧(ε=ε=ε=┏(゜ロ゜;)┛
进入到m1t,也就是解密的软件。点击上面的高级操作模式,打开Hex编译器

https://pro.goforit.top/stephen-zeng/img/master/202110028.png

https://pro.goforit.top/stephen-zeng/img/master/202110029.png

在Hex编译器中打开刚刚机密出来的文件,打开扇区0,看到第0块,选择前8位复制下来,这就是我们的UID。
  再新建一个文件,点击工具——修改UID,然后将刚刚获得的UID号给弄进去,另存为另一个dump文件。我叫他e2.mfd
  这就是只包含你的UID编号的一个文件,接下来我们要把UID编号弄到手环里去

写UID

  回到m1t的高级操作模式,找到最右边CUID写,选择刚刚的e2.mfd,然后将另一张CUID卡放到读卡器上,写入。应该会看到这样的输出:

正在使用智能KeyABN…
开始执行CUID/FUID卡片写入……
NFC设备: NFC-Device 已打开
已找到Mifare Classic卡片:
ISO/IEC 14443A (106 kbps) target:
    ATQA (SENS_RES): 00  04  
       UID (NFCID1): 93  18  e2  6b  
      SAK (SEL_RES): 08  
推测大小: 可能是 1024-byte 大小的卡片
提示: 这张卡不需要后门写 (W) 
需要写入 64 个块 |................................................................|
完成!写入了 64 / 64 个块.


##运行完毕##

注意,除了CUID空白卡之外,其他类型的卡都无法写入第零扇区。这就是为什么我们要用模拟实体卡的方法将第零扇区写到手环中。也就是说,你并不能在手环上开通一张空白卡当作CUID卡。
所以,如果你只写入了63个块,可能就是上面所说的原因。
另外,如果出现无法写入,可以尝试重启软件(M1T)。众所皆知,重启可以解决900%的问题~

模拟

  将刚刚写好的空白CUID卡模拟到小米手环(或者其他NFC设备)上,然后就大功告成。。。了吗?没有!请继续看。

第二次写入

  又一次回到m1t的高级操作模式中,

https://pro.goforit.top/stephen-zeng/img/master/202110028.png

找到选择key.mfd,选择到e2.mfd,然后将小米手环(NFC设备)放到读卡器上,点击写M1,选择被解密的卡的文件,即原始卡的解密文件,就是那个dump文件,开始写入。小米手环需要戴在手上。这样,才终于成功!应该会看到这样的输出:

正在使用智能KeyABN…
开始执行写入M1卡片……
NFC设备: NFC-Device 已打开
已找到Mifare Classic卡片:
ISO/IEC 14443A (106 kbps) target:
    ATQA (SENS_RES): 00  04  
       UID (NFCID1): 93  18  e2  6b  
      SAK (SEL_RES): 08  
推测大小: 可能是 1024-byte 大小的卡片
需要写入 64 个块 |...............................................................|
完成!写入了 63 / 64 个块.


##运行完毕##

实测,key.mfd使用原始卡文件(.dump)也可以,如果不行就按照文章的来吧。

验证

  还是打开m1t的高级操作模式,这一次选择key.mfd的时候选择被解密的卡的文件(dump),然后将手环放在读卡器上,点击读M1。然后会弹出保存文件的对话框,我保存为band.dump
  接着找到差异比较这个按钮,点击。

https://pro.goforit.top/stephen-zeng/img/master/2021100210.png

在A、B处分别选择被解密的卡的dump文件,和band.dump,随后比对。如果只有一个块不同,就大功告成!
如果不嫌麻烦,也可以手动用WinDEX软件打开两个dump来进行对比。

总结

  有时候UID不一样,数据相同也可以正常使用,如HNFMS的卡UID不一样除了不能借书外,吃饭等消费还是可以进行的。这一次折腾真的搞心态,还是希望HNFMS快点上指静脉把!

没有标签
首页      杂文集      『折腾』解密NFC!!饭卡再见!!

Stephen Zeng

文章作者

回复 JesseLee 取消回复

textsms
account_circle
email

SZ Horizon

『折腾』解密NFC!!饭卡再见!!
起因   在QFLS吃饭直接刷指静脉就可以了,而在HNFMS竟然要刷饭卡!!作为口袋里力求什么都不带的人来说,每天都揣着一张饭卡就太不爽了。所以,我看了看手上的手环。。。 感谢WZB提供工…
扫描二维码继续阅读
2021-10-02