vdohney/keepass-password-dumper 的 Python 移植版本 (CVE-2023-32784) — 原始 C# 实现及底层技术的全部功劳归于 vdohney。
该脚本扫描进程内存转储,查找 KeePass 2.x 的 SecureTextBoxEx 在用户输入主密码时遗留的渲染字符串,并恢复该密码除第一个字符外的所有字符。可选地,它随后使用 keepassxc-cli 针对 KDBX 文件暴力破解未知的第一个字符。
该缺陷位于自定义的 SecureTextBoxEx 控件中:对于每个输入的字符,.NET 会在托管内存中保留一个残留字符串,形式为 ●a、●●s、●●●s、……,从中可以恢复除第一个字符外的所有密码字符。
如果您使用了 KeePass ≤ 2.53.1,请假定主密码已泄露:
C:\Windows\memory.dmp),powercfg /h off),cipher /w:),以防止残留内容从先前分配的扇区中被提取,$PATH 中的 keepassxc-cli(仅在使用 --kdbx 时需要)在 Debian / Ubuntu 上,如果您计划进行暴力破解,请安装 KeePassXC CLI:
sudo apt install keepassxc
# 恢复候选字符并打印
python3 keepass_dumper.py memory.dmp
# 将生成的候选列表转储到文件
python3 keepass_dumper.py memory.dmp -p candidates.txt
# 恢复并针对 KDBX 暴力破解缺失的第一个字符
python3 keepass_dumper.py memory.dmp --kdbx db.kdbx
运行 python3 keepass_dumper.py --help 查看完整选项列表。