之前写过一篇利用 PN532 复制小区门禁卡,前段时间买了个小米手环5NFC版,内置了 NFC 门禁卡功能,如果可以将门禁卡直接写入小米手环,那就可以实现彻底不用带门禁卡了。
然而,由于小米手环默认不支持加密门禁卡的复制,其原理是检测门禁卡中是否有加密扇区,只要检测到加密扇区就会提示该门禁卡为加密门禁卡,不支持复制。因此需要采取一些手段绕过这个限制。
绕开加密门禁卡模拟限制的思路
小米手环提供了两种复制门禁卡的方式:一是生成一张 ID 随机的空白卡,然后可以在剩余扇区写入门禁卡数据;二是复制一张已有的门禁卡,ID 完全一样,但是必须是未加密的卡片否则无法复制。
这里我选择的是第二种方式,只有这种方式可以获得一张跟原来的卡一模一样的门禁卡(ID完全相同),所以只要将原卡变成未加密的卡,就可以绕开限制在小米手环上进行复制操作。等到小米手环成功复制了原卡的 ID 之后,再将剩余的加密数据写入就能实现再小米手环上模拟加密门禁卡的目的。
硬件准备
- PN532 读卡器模块 + CH340G TTL 转 USB 连接线
- 一张0扇区可写的空白 UID 卡
- Windows 电脑
- 小米手环5 NFC版(或者其他支持 NFC 的小米手环)
软件准备
之前复制门禁卡的操作中我用的是 Raspberry Pi + mfoc, 但是后来我发现 MifareOneTool 功能非常齐全而且 UI 很友好,所以这次我决定直接在 Windows 上使用 MifareOneTool。
Dump原卡数据
将 PN532 通过 TTL 转 USB 连接线(CH340G)连接到 Windows 电脑,使用 MifareOneTool 的 一键解原卡 功能将门禁卡数据 dump 出来,如果遇到加密扇区会尝试进行破解,时间会稍微久一些,耐心等待即可。
生成一张未加密卡
将上一步 dump 出来的文件复制一份,使用 MifareOneTool 自带的Hex编辑器打开,将其中所有的加密扇区删除或者修改成未加密的,然后将修改后的数据通过 MifareOneTool 的 写UID卡 功能写入事先准备的0扇区可写的空白卡。这样我们就获得了一张 ID 与原卡相同但是未包含任何加密扇区的卡。
在小米手环上复制未加密卡
打开小米运动 app,选择门卡模拟,然后选择 非加密卡模拟,将刚才生成的非加密卡复制到小米手环中,这样我们就在小米手环里创建了一张 ID 与原卡相同但是未包含原卡加密数据的卡,同时也绕开了小米手环无法模拟加密卡的限制。
将原卡的加密数据写入小米手环
将模拟了门卡的小米手环放在 PN532 模块上,再次使用 MifareOneTool 的 写普通卡 功能将事先 dump 出来的 未修改的 原卡数据直接写入小米手环,由于需要小米手环保持在刷卡模式,所以有时候会写入失败,没关系多试几次总能成功。
如果一切顺利,我们就成功将加密门禁卡的全部扇区(包括0扇区和所有加密扇区)写入了小米手环,去刷门禁试试吧。
Leave a Comment