📝 基础知识

如图所示,本文仅讨论最常见的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-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