如何用 hashcat 恢复密码哈希:从安装到出结果
hashcat 是一个开源(MIT License)的密码恢复工具,支持 Linux、Windows、macOS,可跑在 CPU、GPU、APU 等任何带 OpenCL 运行时的设备上,内置 450+ 种哈希类型。要跑通一次恢复,你需要四样东西:正确的 GPU/CPU 运行时、hashcat 本体、目标哈希的类型编号(hash-mode)、以及候选密码来源(字典或掩码)。下面按这个顺序走一遍。
一、装好运行时和 hashcat
hashcat 本身是单个可执行文件,但计算后端依赖厂商运行时。官网列出的驱动要求:
| 硬件 | 需要的运行时 |
|---|---|
| NVIDIA GPU | NVIDIA CUDA Toolkit |
| AMD GPU(Linux) | AMD Radeon Software for Linux + ROCm |
| AMD GPU(Windows) | AMD Adrenalin Edition + AMD HIP SDK |
| Intel GPU | Intel Graphics Compute Runtime(NEO) |
| Intel / AMD CPU | Intel CPU Runtime for OpenCL 或 PoCL |
从官网 Download 区下载对应平台的二进制包(当前版本 v7.1.2,2025.08.23 发布),或从 GitHub 仓库取最新开发版。下载页同时提供 PGP 签名,需要校验完整性时可用签名公钥(Key ID 2048R/8A16544F)验证。
装完先确认设备能被识别:
hashcat -I
预期输出会列出可用的 OpenCL 平台和设备(如 CUDA、HIP、OpenCL 后端及其设备名)。如果这里为空或报错,说明运行时没装对,先解决这一步再往下走。
二、确定 hash-mode
hashcat 用数字编号区分哈希类型,这是最容易出错的一步——模式选错,跑再久也不会有结果。
- 用
hashcat --example-hashes可以查看各模式的示例哈希和编号。 - 官网 Algorithms 区列出了已实现的算法,包括 MD4、MD5、SHA1、SHA2 系列(224/256/384/512)、SHA3 系列、RIPEMD-160/320、BLAKE2b/BLAKE2s、Whirlpool、Keccak、SM3、GOST 系列,以及大量加盐/嵌套变体,例如
md5($pass.$salt)、md5($salt.$pass)、md5($salt.md5($pass))、sha256(utf16le($pass))等。
判断方法:拿一条你知道明文的哈希做对照,或者看哈希的格式特征(长度、是否带盐、盐的位置)。例如 32 位十六进制且无盐通常是 MD5(模式 0),带 $salt$ 前缀的则要选对应的加盐模式。
三、准备候选密码
hashcat 支持两类主要输入:
- 字典攻击(-a 0):从文件或 stdin 读取候选密码。适合已有泄露字典、词表或自建列表的场景。
- 掩码攻击(-a 3):用字符集和占位符穷举,例如
?l?l?l?l?d?d表示 4 个小写字母加 2 个数字。适合已知密码结构的情况。
此外还支持 hex-salt 和 hex-charset,处理非文本字节时用得上。
四、运行恢复
基本命令结构:
hashcat -m <hash-mode> -a <attack-mode> <hash文件或哈希> <字典或掩码>
例如用字典跑 MD5:
hashcat -m 0 -a 0 hashes.txt wordlist.txt
用掩码跑 6 位小写字母:
hashcat -m 0 -a 3 hashes.txt ?l?l?l?l?l?l
几个实用行为:
- 多哈希 / 多设备:可以一次传入多个哈希,也可以在同系统内同时用多块设备,甚至混合设备类型。
- 会话与恢复:支持 session 和 restore,中断后能接着跑;也支持交互式暂停/恢复。
- 性能调优:自动性能调优和自动 keyspace 排序(markov-chains)默认参与,一般不用手动干预。
- 温度保护:内置 thermal watchdog,GPU 过热时会自动降速。
- 分布式:可通过 overlay 组网做分布式破解。
五、查看结果与继续
破解成功的明文会写入 potfile(默认在 hashcat 目录或 ~/.hashcat/ 下)。查看已恢复的密码:
hashcat -m 0 hashes.txt --show
如果一次没跑完,用 --restore 恢复上次会话,或重新执行同一命令(hashcat 会跳过 potfile 中已破解的条目)。
常见卡点
-I看不到设备:运行时没装或版本不匹配,按第一节的表格对照安装。- 模式选错:跑完无结果但哈希确实来自该算法,多半是 hash-mode 编号不对,用
--example-hashes核对。 - 字典太小或掩码范围不对:候选空间不覆盖真实密码,换字典或调整掩码字符集。
- 性能异常低:可能落在了 CPU 后端或驱动未正确加载,用
-I确认实际使用的设备。
hashcat 只应用于你拥有或已获授权测试的哈希;对他人系统使用属于未授权访问。