使用PN532+PL2303HX复制JCOP41校园卡

learningman 10月 14, 2019

起因

学校强制要求出入寝室需要刷校园卡,但是很多时候本来就只是临时上下楼,却不得不多带一张卡在身上。于是我想到了我常年佩戴的小米手环4NFC版,试图使用它来模拟校园卡,但是很可惜,当前小米仅支持非加密卡的模拟,而我们学校使用的却是IBM制式的JCOP41

这意味着这张卡无法被直接模拟,需要解密,但常规的解密方式并不适用于这张卡,CPU卡的构造也注定有一部分数据无法被读取,我只能希望门禁数据没有放在CPU区里,万事俱备,开工!

材料准备

  1. 具备全功能NFC的安卓手机一台(这里使用LG G7
  2. PN532+PL2303HX
  3. 一张CUID白卡(理论上可以省下,但你买PN532一般都会送)
  4. MifareOneTool
  5. MifareClassicTool
  6. 一颗爱折腾的心

分析

首先将PN532,PL2303HX连接到你的PC上(请遵照商家提供的教程安装),这里我们使用MifareOneToolMifareClassicTool来完成破解。在我的环境下,可以使用默认密钥FFFFFFFFFFFF读取校园卡,即std.keys

file

观察读取的数据可知门禁数据很有可能存在于10扇区,接下来我们使用MifareOneTool来尝试解出该分区的密钥。

解密

file

如图所示执行,注意,需要运行HardNested两次以分别取得keyAkeyB,如果你和我是同一所大学,keyB应当为AB2016CD0310,而keyA,在每张卡上都应该不同,需要自行解出。

注意,HardNested对于CPU的要求很高.
对我而言,Ryzen 2600满载运行消耗了约200秒以求得密钥,如果你在性能更低的设备上执行此操作,消耗的时间可能更久。
file

将密钥导入MifareClassicalTool,这时就会发现,之前无法读取的10扇区已经可读,保存转储文件,我们接下来会用到。
file

file

复制

复制MiFareClassicTool读取的第一行紫色文字,使用写标签将数据写入CUID白卡,使用小米运动控制小米手环对CUID白卡进行模拟(此步骤需要实名)。

file

file

file

模拟成功后,使用MifareClassicTool将之前保存的转储文件除0扇区以外的所有扇区写入小米手环。

file

检测

读取小米手环,并与之前保存的转储文件相比较

file

关于0扇区的不同,猜测是小米对于0扇区的读写做了限制,但一般情况下门禁并不会校验0扇区

如果你的结果和我的大致一致,恭喜你,你已经成功了!

Bug & ToDo

  1. 0扇区的不同
  2. 支付功能无法使用,猜测是因为数据存于CPU区,无法被读取,暂时无解。

致谢

方方方块@coolapk:他在PM3上完成的操作为我提供了大量灵感。

filthystone@coolapk:他在PN523上进行的探索有极高的完成度,本文部分内容来自于他在酷安发表的文章

珍惜不离不弃@coolapk:他向我介绍了MifareOneTool

感谢文中所使用的所有软件和硬件的设计者,开发者。

本文采用 CC BY-NC-SA 4.0 协议进行许可,在您遵循此协议的情况下,可以自由共享与演绎本文章。
本文链接:https://learningman.top/archives/144

发表评论

电子邮件地址不会被公开。 必填项已用*标注