PN532 模拟校园卡

前言

前段时间发过一篇模拟校园卡的教程,但是那篇教程算是最基础,最简单的。但与此同时,也带来了一些问题。手机厂商为保证安全问题,手机 NFC 是不支持模拟加密卡的,即使能模拟加密卡,加密部分的功能也是不可用的(除非你 ROOT)。简而言之,校园卡中消费功能是不能够通过之前那篇教程模拟直接实现的。那怎么行呢!本来就是为了方便,消费功能实现不了?这怎么可以。因此我也便查阅了大量的资料,踩了一些坑,在大量的教程的支撑下,成功模拟了加密卡。

今天中午的时候,我去超市买了水,还挺好用的。

截图

USB 连接的 PN532 NFC 读卡器
USB 连接的 PN532 NFC 读卡器

前期准备

解原卡

按照步骤:

  1. 检测连接
  2. 扫描卡片 SAK 为 28 等不能解卡,我们学校的校园卡 SAK 为 08,支持解卡。
nfc-list 输出已识别到 NFC 卡
nfc-list 输出已识别到 NFC 卡
  1. 检测加密
  2. 一键解原卡
MifareOne Tool 正在破解卡片密钥
MifareOne Tool 正在破解卡片密钥

这一步我失败了很多很多次,花费了一上午才成功解出原卡数据,可以多试几次,我可能太非洲了。解出原卡数据后,会自己弹窗,指定文件名,保存原卡解卡数据。后缀名为.dump

这个时候,卡暂时用不到,可以先拿下来。

数据刷入 CUID 空白卡

MifareOne Tool 高级操作模式和 Hex 编辑器按钮
MifareOne Tool 高级操作模式和 Hex 编辑器按钮

MifareOne Fool 选择高级操作模式中的 Hex 编辑器

S50HTool 打开 dump 文件菜单
S50HTool 打开 dump 文件菜单

打开你刚刚保存的.dump 后缀的文件。

S50HTool 显示扇区 0 的卡 ID 数据
S50HTool 显示扇区 0 的卡 ID 数据

在扇区 0 第 0 块中复制前八位 这几位是卡 ID 也可记事本打开.dump 文件,在第一行复制前八位,不要空格。

S50HTool 新建文件菜单
S50HTool 新建文件菜单

选择新建,

S50HTool 修改 UID 弹窗
S50HTool 修改 UID 弹窗

新建后,在工具中选择修改 UID,输入你刚刚复制的八位卡 ID,然后保存,另存为.mfd 后缀文件。

将 CUID 空白卡放在 PN532 上,按照扫描卡片,检测加密走一遍。

MifareOne Tool 写 C/FUID 卡按钮
MifareOne Tool 写 C/FUID 卡按钮

上面步骤完成后,选择写 C/FUID 卡,文件选取后缀为.mfd 的文件! 注意一下。

下面提示框中会提示写入 64/64 就完成了。 如果是 63/64,就再写一遍 CUID 卡。一般没问题。

然后就可以用你的 NFC 手机模拟门卡功能模拟这张空白 CUID 卡了。 这个时候你要知道,这个时候你只模拟了卡 ID,加密部分还没有模拟呢。到这里并没有结束。

加密写入手机

💡 这一部分的工具是手机、PN532、MifareOne Tool,跟空白卡没有关系了。空白卡的使命已经完成了。

手机门卡模拟准备写入校园卡
手机门卡模拟准备写入校园卡

将手机打开 NF 功能,然后放置在 PN532 上。这时候,手机就被识别为一张 CUID 卡。

写 C/FUID 卡选项用于写入 dump 文件
写 C/FUID 卡选项用于写入 dump 文件

再次选择写 C/FUID 卡,这次文件选择.dump 后缀的,这个文件中才包含加密卡部分数据。提示框显示写入 63/64 即为成功,卡 ID 不会被再次读取,因此这 1/64 不会成功。

恭喜,到这里。你的手机就已经可以实现校园卡的全部功能了。同理将第三部分教程中的手机换成手环也是相同的操作。

手环显示校园卡靠近读卡器提示
手环显示校园卡靠近读卡器提示