Hashcat 使用手册(快速上手与进阶)

免责声明:请仅在你有权限的系统/样本上使用密码破解工具。未经授权破解他人密码是违法行为。

1. 概述

Hashcat 是目前最流行、功能最全的密码恢复/破解工具之一,支持 CPU 与 GPU(OpenCL/Metal/CUDA)的高性能破解。它把“hash type”(通过 -m 指定)和“attack mode”(通过 -a 指定)分离,支持规则、mask、字典、组合等混合攻击方式。


2. 基本命令结构

hashcat [options] -m <hash-type> -a <attack-mode> <hashfile> <dict_or_mask_or_stdin>
# 或简写
hashcat -m 0 -a 0 hashes.txt rockyou.txt

常用选项:

  • -m, --hash-type:hash 类型编号(如 MD5=0)。

  • -a, --attack-mode:攻击模式编号(0=wordlist, 3=mask 等)。

  • -o <outfile>:输出已破解结果文件。

  • --show:显示已破解的密码(查看 potfile)。

  • -I:列出可用设备信息(devices info)。

  • -b--benchmark:基准测试(benchmark)。

  • -w <1..4>:工作负载(workload)驱动性能/响应权衡。

  • -O:使用 optimized kernel(更快但限制最大密码长度)。

  • -d <devIDs>:选择设备 ID(逗号分隔)。

  • --session <name>:指定会话名以便恢复。

  • --status / --status-timer:定时显示状态。

  • --restore:从上次断点恢复会话。

更多帮助:hashcat --help


3. 常见 hash 类型与 -m 模式编号(常用)

以下列出 CTF/渗透中最常见的 hash-mode(并非全表,更多请查看官方 wiki / cheatsheet)。

描述

hash-mode (-m)

MD5

0

SHA1

100

SHA256

1400

SHA512

1700

MD4

900

NTLM

1000

bcrypt (Blowfish, crypt(3) \(2y\))

3200

MD5(Unix: md5crypt)

500

LM

3000

MySQL323

200

MySQL411

300

注:Hash 模式编号会随着版本扩展,遇到不确定 hash 时可以查官方 example_hasheshashcat --help


4. 常见攻击模式(-a

编号

attack mode

说明

0

wordlist / straight

字典/规则组合(最常用)

1

combination

组合两个字典(dict1 + dict2)

3

brute-force / mask

mask 暴力(高效)

6

hybrid wordlist + mask

字典前缀 + mask 后缀

7

hybrid mask + wordlist

mask 前缀 + 字典后缀

例如:-a 0 表示用字典攻击;-a 3 表示用 mask 暴力。


5. 常用命令与示例

字典攻击(最常见)

hashcat -m 0 -a 0 hashes.txt /path/to/wordlists/rockyou.txt

带规则的字典攻击

hashcat -m 1000 -a 0 ntlm.hash rockyou.txt -r rules/best64.rule

Mask / 暴力破解(指定字符集和长度)

# 尝试所有 8 位小写字母密码
hashcat -m 0 -a 3 hashes.txt ?l?l?l?l?l?l?l?l
# 更短的例子:6 位,字母+数字
hashcat -m 0 -a 3 hashes.txt ?l?l?l?l?d?d

混合(字典 + mask)

# word + 2 digits 后缀(常用于密码为单词+两位数字)
hashcat -m 0 -a 6 hashes.txt rockyou.txt ?d?d

组合字典(两个字典拼接)

hashcat -m 0 -a 1 hashes.txt dict1.txt dict2.txt

尝试 NTLM 示例并把结果输出

hashcat -m 1000 -a 0 ntlm.hash rockyou.txt -o cracked.txt --show

6. Mask 语法(常用占位符)

  • ?l:小写字母 (abcdefghijklmnopqrstuvwxyz)

  • ?u:大写字母 (ABCDEFGHIJKLMNOPQRSTUVWXYZ)

  • ?d:数字 (0123456789)

  • ?s:特殊字符(space + punctuation)

  • ?a:所有可打印字符(?l?u?d?s)

  • ?b:二进制(0x00..0xFF) — 少用

  • ?1 ?2 ...:自定义字符集(通过 -1 参数定义)

示例:

# 自定义第一个字符集为数字和小写字母
hashcat -m 0 -a 3 hash.txt -1 ?l?d ?1?1?1?1?1

7. 规则(rules)

  • 规则文件存放在 rules/ 目录(安装包自带常用规则文件 like best64.rule, rockyou-30000.rule 等)。

  • 用法:-r rules/best64.rule,规则逐条应用到字典单词上,能快速扩大命中空间(例如加数字、字符替换、大小写变化等)。

  • 示例:

hashcat -m 0 -a 0 hash.txt rockyou.txt -r rules/best64.rule

8. 设备、性能与调优

列出设备

hashcat -I

基准测试

hashcat -b        # 或 hashcat --benchmark

常用调优参数

  • -w <1..4>:workload profile(1 最低、4 最高)。

  • -O:启用 optimized kernel(更快但限制密码最大长度)。

  • -n <value>:设置并行线程(tune for GPU)。

  • -u <value>:设置迭代次数(loop-tuning)。

  • -d <devIDs>:选择设备(多个设备时可指定)。

  • --force:强制忽略某些警告(慎用)。

注意(mac / Apple Silicon)

在 macOS(尤其 Apple Silicon)上,OpenCL/Metal 驱动兼容性可能导致某些 kernel 编译失败或设备不被利用;遇到问题时可先用 CPU 模式或在 Linux + 专用 GPU 上执行高强度任务以稳定性能。


9. 会话管理、状态、恢复

  • 指定 session 名:--session myjob

  • 开启状态显示:--status --status-timer=10(每 10s 显示状态)

  • 中断后恢复:使用 --restore(会读取 .restore 文件)

  • 查看已破解结果:hashcat --show -m <mode> hashes.txt(从 potfile 显示)

  • potfile 默认位置通常在当前工作目录或 ~/.hashcat,可用 --potfile-path 指定


10. 常用实战案例(CTF 场景)

场景 A:已知是 MD5,直接用 rockyou

hashcat -m 0 -a 0 md5_hashes.txt rockyou.txt -o cracked.txt

场景 B:NTLM + 规则(windows 常见)

hashcat -m 1000 -a 0 ntlm.hash rockyou.txt -r rules/best64.rule -o ntlm_cracked.txt

场景 C:发现是 bcrypt(慢),先用字典尝试

hashcat -m 3200 -a 0 bcrypt.hash rockyou.txt --show

bcrypt 属于慢哈希(成本高),使用 GPU 仍然慢,CTF 中通常通过字典与规则优先尝试。

场景 D:针对密码由“单词 + 2位数字”构成

hashcat -m 0 -a 6 hash.txt rockyou.txt ?d?d

11. 常见问题与排查

  • 没列出 GPU / 设备不可用:运行 hashcat -I 检查驱动和平台;mac 上可能因为 OpenCL/Metal 支持问题;在 Linux 上驱动与 CUDA/OpenCL 一般更稳定。

  • Kernel 编译或 CL_OUT_OF_RESOURCES 错误:尝试降低 -w,使用 -O 亦可能触发限制,或使用 --backend 相关选项;在 Windows 上需关闭 GPU driver timeout(不推荐在生产机做)。

  • 速度慢:先用 hashcat -b 基准,确认是否启用优化内核和设备利用率;使用规则前先测试字典能否命中。

  • AX/特殊格式报错(line length exception):通常是 -m 模式与 hash 格式不匹配,检查 hash 长度/格式或用 example_hashes 对照。


12. 高级技巧与安全注意

  • 分布式 / 多卡:使用 -d 指定设备或在多台机器上分发不同 mask 区间。

  • 限制风险:在 Windows 上强制长时间 GPU 运行可能导致系统不稳定或黑屏(driver timeout)。

  • 数据管理:使用 --session--restore 管理长任务,输出已破解用 --show,并合理备份 potfile。

  • 效率优先策略:先字典+规则、再 hybrid、最后 mask 暴力(mask 用于找结构明确的短密码)。

  • 法律合规:仅在授权范围内使用;CTF 实验环境除外。


13. 参考链接(便于你查更多细节)

  • Hashcat 官方 wiki / example_hashes(hash 模式例子)。

  • Hashcat Cheatsheet / 常用模式表(Black Hills InfoSec)—快速参考表。

  • FreeCodeCamp Hashcat 教程(实战示例)。

  • Hashcat 论坛(遇到特定错误可以搜索或发帖)。


如果你需要我把这个 Markdown 导出为 PDF,或生成一个一键运行的 bash 安装/检测脚本,我也可以直接做。