📝 基础知识

如图所示,本文仅讨论最常见的Mifare卡,以下全文中卡片也默认指M1卡
M1卡安全程度
半加密漏洞卡 < 全加密漏洞卡 < 半加密无漏洞卡 < 全加密无漏洞卡
加密程度:半加密、全加密
半加密:一部分扇区被加密,通常也就是保存数据的分区
全加密:全部扇区均被加密,即使有些可能不保存数据
漏洞有无:漏洞卡、无漏洞卡
漏洞卡:该卡可以通过已知密钥嵌套攻击破解出其它密钥
无漏洞卡:该卡无法仅通过卡片本身破解出任何密钥
📖 字典解卡
打开小海豚的NFC应用,开始读卡。把卡放到背面,此时小海豚便会自动开始字典解卡
点击未被破解的卡文件能看到“字典解卡”,点击并将卡放在背面,则会重新跑以上两种字典解卡
1.用户字典
用户字典包含了保存过的密钥,小海豚会优先调用它解卡
你也可以手动向用户字典添加密钥
/ext/nfc/assets/mf_classic_dict_user.nfc
2.爆破字典
用户字典无法解卡时会自动切换爆破字典继续试密钥,此时也说明该卡未被破解过。由于小海豚的字典有限(2000多个密钥)成功率低,所以此时可以直接停止,并将卡文件保存到本地。
爆破属于破解的一种,例如用穷举法试密钥。因性能有限,该法不适合小海豚进行。
🔐 破解密钥
漏洞破解

打开Mifare Nested应用,点击收集随机数并将卡片放在背面,小海豚会探测卡是否存在漏洞
旧版半加密卡大概率带有卡漏洞。探测漏洞需耐心等待,过程可能花费30秒—10分钟
⚠️如果显示“未发现漏洞,该卡不易被破解”等信息,需先进行侦测解卡
显示“已收集到随机数时”,将小海豚连接至电脑,使用FlipperNested程序分析出密钥
(官方程序-需要Python)
(图形程序-Windows&Mac)
PIP install FlipperNested #安装
FlipperNested #运行除了可以破解小海豚的随机数文件外,还可以直接破解本地电脑中的随机数文件
FlipperNestedRecovery-GUI
桌面端软件,是 FlipperNestedRecovery 工具的图形用户界面,独立运行无需安装Python
https://github.com/oldip/FlipperNestedRecovery-GUI
可以直接连接 Flipper zero 使用,支持指定的卡片 UID 和通信端口,支持保留 Nonce
支持选择本地 Nonce 文件来计算密钥。
该工具能完全替代小海豚内置的MFKey应用程序。若小海豚使用 FlipperNested 破解,PC端可直接运行程序。若小海豚使用NFC读取收集了 Nonce ,需将内部存储的 Nonce 文件下载到电脑运行破解。电脑的算力和破解速度是绝对碾压小海豚的。

再次打开Mifare Nested应用,点击“检查电脑端破解出的密钥”,此时全部密钥均会被添加到用户字典。现在重新进行字典解卡并保存。
侦测破解

点击未被破解的卡文件能看到“侦测解卡”,点击以开始
首先,你必须找到使用该卡的读头,或该卡对应的门禁。
启动侦测解卡,将小海豚背面靠近读头。有时需要多次拿开并重新靠近。直到小海豚提示完成收集随机数
⚠️如果多次尝试靠近读头但没有反应,说明该读头防侦测破解。尝试换读头侦测
打开手机APP上的Tools,启动MFkey32(或启动小海豚内置MFkey32,但速度很慢)
等待随机数分析完成,分析出的密钥会被自动添加到用户字典。现在重新进行字典解卡并保存。
对于全加密卡,一个读头通常只能获取一部分密钥。但获取密钥后主观而言它已经变成了半加密卡。如果存在漏洞,则能直接解卡。所以接下来重新字典解卡并保存,然后再尝试漏洞破解
如果不幸这是无漏洞卡,需要去寻找更多的读卡设备。例如闸门,电梯,单元门等任何可刷目标卡的读头,侦测多次直到密钥全部解出。
Recovering MIFARE Classic keys - Flipper Zero - Documentation