用 PN532 破解并模拟门卡
本篇的起因是对于小区门卡完美模拟的追求。
本来在「小米钱包」的空白卡功能上线之后,我觉得直接去找物管就完事儿了,也免得我买设备回来搞我这张半加密卡的麻烦。然而…
前言
高考完了!终于有时间可以放心水博文了~
本篇的起因是对于小区门卡完美模拟的追求。本来在「小米钱包」的空白卡功能上线之后,我觉得直接去找物管就完事儿了,也免得我买设备回来搞我这张半加密卡的麻烦。
然后物管是这样回答的:
我:我想麻烦你们帮我写下门卡,可以吗?
物:?
我:就是我这个是空白卡,你把数据写进来我就可以用手机开门了。
物:啊…?这个… 好像不行,他们那边会烧设备的。
我:???那行吧。
所以我就买了 PN532,目前相对来说很便宜的一个卡片读写硬件,来尝试自己写入门卡到手机。
准备工作
- PN532 本体 x1,一般卖家都提供焊接服务,想自己 DIY 的可不选。
- 把它连接到电脑的任何辅助工具 x1,包括但不限于 USB-TTL 或线等
- 驱动程序 x1
- 可以用来读写卡、破解密钥的软件 x1
- 电脑 x1
- 支持 NFC 以及门卡模拟的手机 x1
- 另外一部带 Root 权限且支持 NFC 的手机 / 空白 (C/UF)UID 卡 x1
费用:PN532 ¥35 左右;白卡视类别不同价格价格略有差异,不会高于¥2/张。
PN532 配置其实很简单,只需要安装对应系统的驱动即可,再按照排线定义接好插上电脑即可。
破解门卡
我手里这张门卡是半加密卡(虽然我并不知道加密区有啥用),扇区 10-14 没有使用默认 Key。
以我使用的 MifareOne Tool 为例:
- 插上之后「检测连接」,如驱动正常将会提示找到 NFC 设备。
- 放上卡片,「扫描卡片」,可以看到卡片基本信息(请注意关注 SAK 值)
- 「检测加密」,可以判断卡片加密类型(全加密、半加密、未加密)
- 半加密和未加密(且 SAK 受支持)的卡片可以直接「一键解原卡」,(待软件利用 mfoc 漏洞得出加密区块密钥后)生成 Dump 或 mfd 文件;若为全加密卡,则需使用 mfcuk 得到至少一个扇区的密钥后,再利用 mfoc 进行操作。
生成 Dump 文件后,即可拿走原卡,准备模拟门卡。
模拟门卡
若为无加密卡,你甚至可以跳过上面的步骤直接用手机模拟。
半加密 / 全加密卡需要先把 ID 写到预先准备的空白卡 / 用带 Root 权限的手机模拟,再用自己的手机模拟空白卡 / 带 Root 权限的手机,然后向卡内其他区块写入之前 Dump 的内容。
写卡时使用「写M1卡」即可。(SAK=08)
坑
1. 小区门刷不开,单元门能搞开
这很大概率是因为小米的模拟卡不可修改 0 扇区,且小米自行替换了厂商标识符(0 块最后 16 位)为 D2 00 00 01 00 00 00 00
。不管你原卡是啥样小米模拟后这里都是这样。
比如我家楼下,只检测 ID 所以很好办,但是小区门就应该无解。(无能物业大嫌い)
(最难受的是我的真·门卡都刷不开小区的一扇门,一定是物业瞎改数据库了吧)
2. 模拟卡读/写不了
SAK=28?这模拟出来是一张 CPU 卡,这个工具貌似搞不定,我也没用其他的工具。
但是有的门禁系统兼容 SAK=08,有的门禁系统(电梯?)需要 SAK=28,取决于实际情况。
小米以前模拟出来貌似是 SAK=28,现在则是 08;黑加是 SAK=28,模拟白卡是 SAK=08。
3. 全加密卡爆破报错,提示 mfcuk_key_recovery_block() (error code=0x03)
这个是工具没有处理 NACK 导致的,可以使用打了补丁的版本:DrSchottky/mfcuk 并添加额外参数 -w 6
建议自行编译。如果确实需要使用他人预编译的版本,请参考:
已失效链接:度盘 提取码我也不知道,我不记得当时有没有提取码了,原理也许和上面也有差别。
结语
网上搜索坑一,发现不少网友也遇到这个问题。小米的模拟也不知道是出于安全着想还是怎么的而没有开放 0 扇区写入的功能,我暂且蒙在古里。
接下来的博文应该会有三篇:
- Dell Inspiron 7590 顶配版不负责评测 & Hackintosh 指北(你戴咕咕咕,预计下单后一个多月才能拿到笔记本)
- 日本十日自由行の游记(由于各种不确定因素还不知道能不能去成,但概率很大)
- 高中三年的破事水
那么,下次再见~
用 PN532 破解并模拟门卡