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

Last updated on June 18, 2024 pm

起因

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

原理

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

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

过程&教程

准备

硬件

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

软件

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

  如果你买的是某宝上的NFC读写器,驱动就按照商家的进行安装就好了。如果你用的和我一样是pn532,那么对于Windows7及以上的系统(vista我不知道要不要),需要把驱动签名给禁用。禁用也很简单,你也可以度娘,也可以按照我写的做也可以。   进入“设置“,在搜索框中输入”恢复“,进入”恢复选项“,然后找到”高级启动“并重启。 欸算了,这是Windows11的重启方法,剩下的步骤和Windows10一样,我就放出链接就好了把 进入驱动签名,Windows10   关闭驱动签名之后,先去下载这个安装包,里面有驱动和NFC工具: 下载(已失效,请见上文“来自2023…”) 安装驱动的时候,要先插入pn532,然后到设备管理器里面去安装。选中”USB Serial**“,右键,更新驱动,从本地选取驱动,然后选择这个文件夹,安装就好了。 这时再看你的设备管理器,会出现这个设备:   至此,准备工作完成。

解密

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

1
2
3
4
5
6
7
开始执行检测设备……

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

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

1
2
3
4
5
6
7
8
9
10
11
开始执行扫描卡片……
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:   解密完成后,会让你保存文件: 这就是你的原始卡文件,也就是解密后卡的文件。相当于你已经把一张实体卡转换为数据,也就是说只要有这个文件就可以在无数设备上模拟你的原始卡。因此, 请务必保管好此文件,不要丢失或泄露!!!

提取UID

  我不知道其他卡是不是也是这样子,反正大同小异吧(ε=ε=ε=┏(゜ロ゜;)┛ 进入到m1t,也就是解密的软件。点击上面的高级操作模式,打开Hex编译器 在Hex编译器中打开刚刚机密出来的文件,打开扇区0,看到第0块,选择前8位复制下来,这就是我们的UID。   再新建一个文件,点击工具——修改UID,然后将刚刚获得的UID号给弄进去,另存为另一个dump文件。我叫他e2.mfd。   这就是只包含你的UID编号的一个文件,接下来我们要把UID编号弄到手环里去

写UID

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

1
2
3
4
5
6
7
8
9
10
11
12
13
正在使用智能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的高级操作模式中, 找到选择key.mfd,选择到e2.mfd,然后将小米手环(NFC设备)放到读卡器上,点击写M1,选择被解密的卡的文件,即原始卡的解密文件,就是那个dump文件,开始写入。小米手环需要戴在手上。这样,才终于成功!应该会看到这样的输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
正在使用智能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。   接着找到差异比较这个按钮,点击。 在A、B处分别选择被解密的卡的dump文件,和band.dump,随后比对。如果只有一个块不同,就大功告成! 如果不嫌麻烦,也可以手动用WinDEX软件打开两个dump来进行对比。

总结

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


『折腾』解密NFC!!饭卡再见!!
https://www.qwqwq.com.cn/others/e_nfc/
Author
Stephen Zeng
Posted on
October 2, 2021
Licensed under