入住万科小区后,每次出入都要经过两次门禁,导致虽然装了智能锁,但还是要带门禁卡,所以一直想着怎样把门禁复制到手机 NFC 上。一加7 pro 在 11 月已推送了门禁卡功能,但只支持未加密的门禁卡,万科的一卡通都是加密过的,所以直接复制不了。
加密卡也分半加密或全加密,属于哪种类型,可以手机下载 MifareClassicTool (MCT) 查看,部分扇位可以看到内容的就是半加密,所有扇位内容都看不到的就是全加密卡,全加密卡的话,建议直接放弃,破解密钥需要太多时间了。
经过在酷安浏览 NFC 相关内容,发现是有方法可以实现复制的,但需要一个 PN532 的 NFC 解密设备和 CUID 空白卡,复制流程如下:
- 使用 PN532 解密半加密的原卡内容
- 把门禁卡的 0 扇区的 0 块的 UID 和厂商号写入 CUID 空白卡(这样空白卡就变成未加密卡了)
- 使用手机 NFC 模拟 CUID 空白卡
- 使用 PN532 或另一带 NFC 功能的手机把余下加密的所有扇区信息写下手机模拟的门禁卡
一、使用 PN532 解密半加密的原卡内容
pn532 如何连接电脑就不详述了,要解密原门禁卡密钥,需要下载windows 软件MifareOneTool,把门卡放到 PN532 上,然后选择高级模式 -> HardNested
,软件就会开始执行爆力破解,在我 i6700K 电脑上,平均破解一个密钥需要 6 小时。。。一般进度到 30%~50% 就能破解到,只要还是看 RP😂
扇区号填写需要破解密钥的扇区,1 个扇区有 A/B 两个密钥,所以一个扇区是需要破解两次的。
破解 10 扇区的 A 密钥:
破解 10 扇区的 B 密钥:
破解原理可以看下面文章:一卡通(M1卡)破解过程记录——获取扇区密钥
二、0 扇区 0 块写入 CUID 空白卡
写入 CUID 使用手机的 MifareClassicTool 。首先需要保存原门禁卡的已解密的 dump 文件。
1.MCT 中选择编辑/增加密钥文件
,在std.keys
中增加刚才破解出来的密钥,一行一个
2.手机靠近原门禁卡,使用读标签
功能读取所有扇区的内容出来,并保存为转储文件。
3.选择编辑/分析转储文件
打开刚才保存的转储文件,复制 0 扇区 0 块的内容。
4.手机靠近 CUID 空白卡,选择写标签
功能,使用写块
把刚刚复制的内容写入0
扇区0
块,如下图所示
这样就得到了一个可以被手机 NFC 功能复制的未加密门禁卡
三、使用手机 NFC 模拟 CUID 空白卡
正常都能模拟成功,但这里因为手机厂商的限制,有个坑,后面会说明
四、把原卡加密内容写入手机模拟门禁
假如手上有另一台带 NFC 功能的手机,可以在另一手机也安装 MCT 直接写,手机选择刚刚模拟的门禁为默认卡就可以
MCT 中选择写标签->写转储(克隆)
,选择之前保存的转储文件,勾上所有扇区并确认,这样就能把原卡所有内容完整复制到手机模拟的门禁了😆
假如只有一台手机,可以在 windows 上通过 PN532 使用MifareOneTool
写。不过 MCT 的转储文件在MifareOneTool
中不能识别,需要先转为 MFD 文件,还好 MCT 的 github 库中提供了转换工具。
访问https://github.com/ikarus23/MifareClassicTool/tree/master/tools/dump-file-converter下载mct2eml.py
和eml2mfd.py
工具,把 MCT 的转储文件(保存在手机/MifareClassicTool/dump-files/
目录下)转换为 MFD 格式文件。
python mct2eml.py path_to_mct_dump eml_dump.eml
python eml2mfd.py path_to_eml_dump mfd_dump.mfd
手机选择模拟的门禁卡,靠近 PN532,在 MCT 中选择高级操作模式->写M1
,选中刚刚转换的 mfd_dump.mfd 文件,就能开始写入了
五、拿模拟好的手机下楼刷卡
啲~一声,假如门开了,那么恭喜你,终于模拟成功了,假如门禁完全没反应,门开不了,那就是遇到上面第三点说的坑了——小区门禁校验了厂商号,而手机 NFC 限制不能覆写厂商号。
现在主流厂商的手机模拟门禁功能都是限制了写厂商号,假如你小区的门禁是有校验厂商号的话,建议你放弃吧,这个没解了。。。曲线救国的方法就是改使用手机 NFC 卡贴或使用手机空白卡功能让物业登记给下权限
相关参考资料: