Zxilly
Try to be 1%
Zxilly's Blog
使用 PN532+PL2303HX 复制 JCOP41 校园卡

起因

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

这意味着这张卡无法被直接模拟,需要解密,但常规的解密方式并不适用于这张卡,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

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

没有标签
首页      可穿戴设备      使用 PN532+PL2303HX 复制 JCOP41 校园卡

发表评论

textsms
account_circle
email

Zxilly's Blog

使用 PN532+PL2303HX 复制 JCOP41 校园卡
起因 学校强制要求出入寝室需要刷校园卡,但是很多时候本来就只是临时上下楼,却不得不多带一张卡在身上。于是我想到了我常年佩戴的小米手环4NFC版,试图使用它来模拟校园卡,但是很可惜…
扫描二维码继续阅读
2019-10-14