使用小米手环3 NFC 版模拟校园卡

前言

「MD,又忘记带饭卡了…」
「???我的饭卡跑哪里去了?」
健忘的你是不是经常有这些想法呢?
看完这篇教程你将不会有这些烦恼啦!
把校园卡牢牢的绑在你的手腕上吧!
伸出你的手即可支付~
装逼如风,常伴吾身。

前言 * 2

时隔多月的我终于来写博客了…
因为真的找不到什么事情来记录(可能是因为我懒…
以后一定加油写!这一篇就算是我的复健文吧!

一个月前的我买了小米手环3 NFC 版本
主要目的就是为了模拟校园卡hhh
当然也有用来记录锻炼啦…XD
那么在这里就来写一下如何把我们的校园卡模拟在手环上面吧~

1
注意,本次教程只面向于「广东海洋大学寸金学院新湖校区」的校园卡。

使用手环支付示范

常见问题

成功之后就可以用手环刷卡了?可以刷门禁吗?可以在超市用吗?可以刷饮用水吗?

是的,也可以刷门禁,也可以去超市用,那种黑色的机子都可以用。
在宿舍饮用水的机子同样可以使用,只需将手环正面靠近那个黑色面板就可以了。有时候机子可能会显示异常刷不了,这个时候先将手环远离再重新靠上去就 OK 了。

我弄进手环之后原来的卡还可以用吗?

Emmm,应该是不可以了,就好比一天你的卡丢了,然后重新补办了一张,就算你之后再找到了原来那张卡也不可以用了。如果作死去尝试「滴」一下原来的卡的话还很有可能会冻结你的账户!

那我之后怎么往我卡里面充钱呢?

我寻思着,你直接跑去工作人员那里充应该不大可能了… 饭堂的那个自助机也用不了,因为太垃圾了无法读取手环的数据。
你可以先将校园卡绑定至「超融合校园」App,然后通过「一卡通充值」的功能进行充值。这样你下次用手环刷机子的时候同样会将金额圈存至你的账户中。

你的教程怎么那么长,那么麻烦啊…

有人可能会问,「小米运动」App 里面不是就有个「门卡模拟」功能吗?
我直接把饭卡贴在上面然后用这个功能不就可以了?

然而…并不可以
如果你仔细阅读过小米关于这项功能的说明的话,那么你就会知道,存在「加密区」的卡片是不可以模拟的。

那什么是「加密区」呢?

我们的校园卡(Mifare Classic 1k 类型)存在有 16 个扇区。
饭卡余额、所属人姓名、交易记录等信息会存放于其中的一个或多个扇区。
每个扇区都会有两个密钥,读取卡片的设备需要知道密钥才能访问扇区的数据。
未加密卡的密钥是大家都知道的默认值(FFFFFFFFFFFF)。
那么为了避免卡片被别人轻易的读取,厂商会将密钥写为其他值,这个时候读取设备不知道密钥也就不能读取。
那么密钥不是默认值的扇区就是「加密区」。

然而… M1 类型的卡片密钥是可以破解的…

正巧,我们的学校饭卡也是 M1 类型的,所以就可以妥妥的把卡片模拟到我们的手环上面去啦~

在这里就要提一下我们的友校(?)岭南师范学院了

他们的饭卡已经升级为了 CPU 模拟卡,而 CPU 卡是几乎不可能破解的…(CPU 模拟卡可以破解,但是需要更昂贵的设备,同时仅限模拟的区域,具体的可以百度)。
不愧是百年老校啊…

正式开始!

上面的一些概念阐述都是我为了让大家更轻易理解而极度简化的内容,可能会有错误,不过意思差不多。大家有兴趣的可以百度一下。
话不多说,开始我们的模拟之旅吧!(什么鬼)

准备材料

我这里的 PN532 和转串口模块和上面淘宝链接的不一样,这是我大一的时候分开买的hhh
排线怎么接可以去看看商品简介或者是问店家,我这个不同就不在这里说明了。
用 CUID 卡不用普通 UID 卡是因为 CUID 卡可以写入 0 扇区.

1
2
0 扇区是用于存放卡片的 UID 和一些厂商信息、校验数据等。
普通的 UID 卡的 0 扇区已经固化不可更改,CUID 卡可以。

正式开始

将模块接入计算机

PN532 红灯亮起来的话理论上没毛病了,然后看看设备管理器里面有没有对应的端口。

不一定是我这个名字,看芯片的型号hhh

读取校园卡数据

打开上位机程序,如果 PN532 插对了,这里也会显示「发现NFC设备」。

然后把校园卡放在 PN532 上面,注意周围不要有金属之类的干扰,否则会读不出来。
再点击程序上的「读整卡:读取卡片内容」
还记得最上面说的,我们的校园卡是存在「加密区」的,但是可以破解出来。
上位机程序读取过程中会将「非全加密卡」的「加密区」密钥破解出来并读取出全部扇区数据。
关于「非全加密卡」的概念有兴趣的可以百度,这里只要知道我们的饭卡就是这种卡。

1
不过旧校区的不是哈哈哈哈哈,以后有时间补完。

由于需要破解,所以时间会比较长,读取完毕之后的界面是这个样子的…

遮住的地方就是每个扇区的密钥,然后你需要记下高亮区域的内容。
密钥也要记下来,就是表格第二列,写着 3 的那一行。
前 6 个格子和后 6 个格子的内容
重复的和 FFFFFFFFFFFF 不用记

保存密钥到手机

在你的手机上安装并打开「Mifare经典工具」App,然后按下图操作。

读取并写入空白 CUID 卡数据

接下来就是读取买来的空白 CUID 卡的数据了。
同样是读取校园卡的操作。
读取完之后,把上面校园卡图片高亮区域的内容填写到这次白卡的同样的位置。双击格子就可以编辑了。

具体操作看上图。
点击「否」之后就可以把数据写进去了。

用手环模拟白卡

先把改过 0 扇区的白卡模拟进手环,为什么要这一个步骤呢?
因为上面说过,手环不可模拟有「加密区」的卡,所以先把写好 UID(就是高亮区域的数据) 但是没有「加密区」的卡写进去。在最后再把数据写进手环。
模拟过程我就不说了… 自己打开「小米运动」App 操作吧…

成功之后就是这个样子的啦,写个名字然后点「完成」就 OK 了。

1
2
手环检测卡片过程中可能会出现「不支持模拟该类型卡」的说明
重新多模拟几次,把卡贴紧不要乱动就好了。

使用手机将校园卡数据写入已经模拟好白卡的手环

虽然不能直接模拟「加密区」,但是却可以把「加密区」的数据写进手环里…

首先用手机来读取校园卡数据

打开手机的「Mifare经典工具」App,然后把校园卡贴近手机的 NFC 识别区域。
这时候 App 应该会提示已经检测到卡片。
然后点击「读标签」按钮。

之后会要求选择密钥文件,我们选中之前保存的饭卡密钥以及一个「std.keys」
点击「启动映射并读取标签」。

等待一段时间后数据就读取完成了,可以看到所有扇区的数据已经显示在了 App 界面上。
这时点击右上角一个软盘图案的按钮,再输入文件名保存这个转储文件。

将保存的数据写入手环

接下来就将刚才保存的转储文件再写入手环当中。
首先返回到 App 的主界面,点击「写标签」
然后选择「写转储(克隆)」再选择转储
选中我们之前保存的校园卡转储文件。
然后会弹出一个选择扇区的框,这个时候将你的手环贴到手机的 NFC 识别区域。

1
要等 App 检测出标签后才可操作!如果弹出不支持该标签的界面,就先把手环远离手机然后再贴上去。

检测没问题之后点击「好的」,然后又要求选择密钥文件,同样选择之前保存的饭卡密钥以及「std.keys」。
最后点击「启动映射并写转储数据」

完成了!

到这里,所有的教程就结束啦!是的这样就完成了!让我们总结一下步骤吧:

  • 先读取校园卡的数据,破解并保存密钥。
  • 将 UID 数据写入白卡的 0 扇区。
  • 将白卡模拟进手环当中。
  • 通过手机加上保存下来的密钥,将校园卡的数据写入手环。

如果中途没有出现偏差的话你的手环已经成功模拟了你的校园卡。
你已经可以对你的那张饭卡说拜拜了~