跳到主要内容Hashcat 密码恢复工具用法详解 | 极客日志Shell / Bash算法
Hashcat 密码恢复工具用法详解
本文介绍 Hashcat v7+ 版本安装、基本命令语法、密文格式识别及五大攻击模式。涵盖字典、组合、暴力、混合及规则攻击方法,提供 Linux/Windows 环境配置、GPU 调优参数及实战示例,适用于渗透测试与密码强度评估。
墨染流年2 浏览 Hashcat 作为全球最快、最先进的密码恢复工具,具备高效的 GPU 加速、多模式攻击支持和高度优化的算法实现。Hashcat 支持超过 300 种哈希算法,并提供五种独特的攻击模式:直击攻击、组合攻击、暴力破解、混合攻击和基于规则的攻击。它不仅适用于渗透测试和取证分析,还能帮助安全研究人员评估密码强度,推动更安全的密码设计。
一、安装与环境配置
Hashcat 支持 Linux、Windows 和 macOS 平台,并充分利用 CPU、GPU(NVIDIA、AMD、Intel)和 FPGA 等硬件加速器。安装前,确保您的系统驱动更新:NVIDIA 用户需 CUDA 12.9+,AMD 用户需 ROCm 5.0+。
二、基本命令语法
Hashcat 命令遵循「选项→目标→资源」的逻辑结构,通用语法规范简洁清晰,可直接适配各类破解场景:
hashcat [核心选项][高级调优选项][待破解哈希/哈希文件][字典/掩码/规则文件]
核心参数速查表
| 参数 | 核心功能描述 |
|---|
-a <mode> | 指定攻击模式(0-7,核心常用:0=字典/3=纯掩码/6=字典 + 后缀掩码/7=前缀掩码 + 字典) |
-m <type> | 手动指定哈希类型(自动识别失败时必用,编号对应算法) |
-o <file> | 输出「哈希:明文」对应关系到文件(避免终端刷屏,便于归档) |
-w <level> | 工作负载等级(1-4):1=低负载(边用电脑边破解),4=满负载(纯破解环境) |
-r <rule> | 加载密码规则文件(字符替换/拼接/变形,扩展字典覆盖范围) |
--identify | 自动识别哈希类型(新手友好,无需手动查编号) |
--stdout | 仅输出候选密码(测试规则/掩码效果,不执行破解) |
-i | 增量攻击(按密码长度递增测试,避免遗漏短密码) |
--session=<name> | 保存破解会话(支持中断后恢复,大型任务必备) |
--restore | 恢复中断的破解任务(需配合 --session 使用,自动续跑) |
--force | 忽略系统兼容性检查(老 GPU/驱动、非标准环境适用,谨慎使用) |
-d <device-id> | 指定 GPU 设备(多卡环境精准调度,单卡可省略) |
-O | 优化哈希计算(针对短密码(≤32 位),速度提升 30%+,默认推荐开启) |
-s <offset> | 设置破解起始点(跳过已测试部分,恢复任务/分块破解用) |
-l <length> | 设置破解长度(限定单次测试的密码长度范围,配合增量攻击) |
-b | 基准测试(评估设备破解性能,输出哈希算法每秒破解速度) |
--show | 仅显示已破解的哈希 - 明文对(无需重新运行,直接提取结果) |
--remove | 破解成功后自动从哈希文件中删除已破解项(避免重复破解,适合批量任务) |
各参数实战示例
1. 攻击模式(-a)与哈希类型(-m)组合
hashcat -a 0 -m 0 md5_hashes.txt /usr/share/wordlists/rockyou.txt
hashcat -a 3 -m 1000 ntlm_hashes.txt ?d?d?d?d?d?d?d?d
hashcat -a 6 -m 1400 sha256_hashes.txt rockyou.txt ?s?s
hashcat -a 7 -m 2500 wpa2.cap ?d?d rockyou.txt
2. 结果输出(-o)与已破解结果提取(–show)
hashcat -a 0 -m 0 hashes.txt rockyou.txt -o ./output/md5_cracked.txt
hashcat -m 0 hashes.txt --show
hashcat -m 1000 ntlm_hashes.txt --show -o final_ntlm.txt
3. 工作负载(-w)与 GPU 调优(-d、–force、-O)
hashcat -a 0 -m 0 hashes.txt rockyou.txt -w 2
hashcat -a 0 -m 1000 hashes.txt rockyou.txt -w 4 -O
hashcat -a 3 -m 0 ?l?u?d?d?d?d -d 1,2 -w 4
hashcat -a 3 -m 0 ?d?d?d?d?d?d --force
4. 规则文件(-r)与候选密码预览(–stdout)
hashcat -a 0 -m 0 hashes.txt rockyou.txt -r /usr/share/hashcat/rules/best64.rule
hashcat -a 0 rockyou.txt -r leet.rule --stdout | head -10
hashcat -a 3 ?l?l?l --stdout | head -5
5. 增量攻击(-i)与破解范围控制(-s、-l)
hashcat -a 3 -m 0 ?l?u?d -i --increment-min=4 --increment-max=12
hashcat -a 3 -m 1000 ?l?d?l?d -i --increment-min=6 --increment-max=8 -l 2
hashcat -a 0 hashes.txt rockyou.txt -s 500000
6. 会话保存与恢复(–session、–restore)
hashcat -a 0 -m 2500 wpa2.cap rockyou.txt --session=wpa2_crack -w 3
hashcat --session=wpa2_crack --restore
hashcat --restore
7. 哈希类型识别(–identify)与基准测试(-b)
echo "e10adc3949ba59abbe56e057f20f883e" | hashcat --identify
hashcat -b -m 0 -w 4
hashcat -b -m 2500 -w 3
8. 批量破解优化(–remove)
hashcat -a 0 -m 0 batch_hashes.txt rockyou.txt --remove -o batch_cracked.txt
三、Hashcat 密文格式
密文识别原理
旧版 Hashcat 使用时需手动指定哈希类型(如 -m 0 为 MD5),但最新版本支持通过模式匹配和特征提取实现自动检测,覆盖 95% 以上的常见哈希。
- 格式解析:Hashcat 读取哈希字符串,解析其结构(如十六进制长度、盐值分隔符
: 或 $)。例如,MD5 哈希为 32 位十六进制,SHA1 为 40 位。
- 特征提取:使用预定义的正则表达式和签名数据库匹配。v7.1.2 的签名库扩展了 20+ 新算法,包括 Argon2id 和 BLAKE2b。
- 多哈希支持:处理复合哈希(如
md5(md5($pass))),通过二进制/十六进制输入标志区分。
- 边缘情况:若无法自动识别,Hashcat 会报错并建议
-m 值。原理基于高效的字符串匹配算法,确保在数百万哈希中秒级识别。
自动检测的优势:简化命令,减少错误。但在自定义或稀有哈希时,仍需手动指定。
手动构造哈希格式
当面对自定义哈希、稀有算法或特殊盐策略时,需按 Hashcat 标准化格式手动构造,核心格式分为两类:
(1)基础哈希格式(hash[:salt])
适用于无特殊标识符的哈希(如 MD5、SHA1、NTLM 带盐版本):
| 哈希类型 | 模式值 | 构造格式 |
|---|
| MD5(无盐) | 0 | 32 位十六进制 |
| MD5(pass.salt) | 10 | hash:salt |
| SHA1(pass+salt) | 110 | hash:salt |
| NTLM(无盐) | 1000 | 32 位十六进制 |
(2)带标识符哈希格式($identifier$param$hash)
适用于有标准格式的哈希(如 bcrypt、PBKDF2、Argon2),参数间用 $ 分隔:
| 哈希类型 | 模式值 | 构造格式 |
|---|
| bcrypt | 3200 | $2a$cost$salt$hash |
| PBKDF2-HMAC-SHA256 | 10900 | $pbkdf2-sha256$iter$salt$hash |
| Argon2id | 18300 | $argon2id$v=19$m=65536,t=3,p=4$salt$hash |
构造工具:Python 辅助脚本
import hashlib
password = b"hashcat"
salt = b"7050461"
hash_result = hashlib.md5(password + salt).hexdigest()
print(f"{hash_result}:{salt.decode()}")
import bcrypt
password = b"hashcat"
salt = bcrypt.gensalt(rounds=5)
hash_result = bcrypt.hashpw(password, salt)
print(hash_result.decode())
四、五大攻击模式详解
Hashcat 的 -a 选项定义攻击策略,支持五种模式,结合规则/掩码实现高效破解。
模式概述
| 模式 | 描述 | 适用场景 | 示例命令 |
|---|
| -a 0 | 直击/字典攻击(可选规则) | 常见弱密码 | hashcat -a 0 hash.txt rockyou.txt |
| -a 1 | 组合攻击 | 密码=词 1+ 词 2 | hashcat -a 1 hash.txt dict1.txt dict2.txt |
| -a 3 | 暴力/掩码攻击 | 已知模式 | hashcat -a 3 hash.txt ?l?l?l?l |
| -a 6 | 混合:字典 + 掩码(后缀) | 词 + 数字 | hashcat -a 6 hash.txt dict.txt ?d?d |
| -a 7 | 混合:掩码 + 字典(前缀) | 数字 + 词 | hashcat -a 7 hash.txt ?d?d dict.txt |
模式 0:字典攻击(-a 0)
核心逻辑
直接使用现成字典(如 rockyou.txt)测试密码,支持结合规则文件生成变体,适用于大多数弱密码场景。
实战示例
hashcat -a 0 -m 1000 ntlm_hashes.txt /usr/share/wordlists/rockyou.txt -w 4 -o cracked_ntlm.txt
hashcat -a 0 md5_hashes.txt rockyou.txt -r /usr/share/hashcat/rules/best64.rule -w 4
hashcat -a 0 rockyou.txt -r best64.rule --stdout | head -10
最佳实践
- 字典选择:优先使用 rockyou.txt(1400 万弱密码)、SecLists 集合(含各类场景字典);
- 规则搭配:基础场景用
best64.rule,复杂场景用 dive.rule(生成更多变体);
- 去重优化:使用
sort -u rockyou.txt > rockyou_unique.txt 去除重复密码,提升效率。
模式 1:组合攻击(-a 1)
核心逻辑
将两个字典的单词两两组合(词 1+ 词 2),适用于密码为「姓名 + 生日」「品牌 + 型号」等组合场景。
实战示例
hashcat -a 1 -m 100 sha1_hashes.txt names.txt years.txt -w 4
模式 3:暴力掩码攻击(-a 3)
核心逻辑
通过掩码定义密码结构(如长度、字符类型),遍历所有可能组合,适用于已知密码格式的场景(如 8 位数字密码、6 位字母 + 数字密码)。
掩码字符集速查表
| 掩码符号 | 含义 | 字符集 |
|---|
?l | 小写字母 | a-z(共 26 个) |
?u | 大写字母 | A-Z(共 26 个) |
?d | 数字 | 0-9(共 10 个) |
?s | 特殊字符 | !"#$%&'()*+,-./:;<=>?@[]^_`{ |
?h | 十六进制小写 | 0-9, a-f(共 16 个) |
?H | 十六进制大写 | 0-9, A-F(共 16 个) |
?a | 所有可打印字符 | ?l?u?d?s(共 95 个) |
?b | 所有字节 | 0x00-0xFF(共 256 个) |
?1-?4 | 自定义字符集 | 需通过 -1/-2/-3/-4 参数定义 |
?0 | 空字符集 | 无字符 |
实战示例
hashcat -a 3 -m 0 md5_hashes.txt "?d?d?d?d?d?d" -w 4
hashcat -a 3 -m 1400 sha256_hashes.txt -1 ?l -2 ?d -3 ?s "?1?1?1?1?2?2?3?3" -w 4
hashcat -a 3 -m 1000 ntlm_hashes.txt -1 ?l?d "?1?1?1?1" -i --increment-min=4 --increment-max=10 -w 4
模式 6/7:混合攻击(字典 + 掩码)
核心逻辑
- 模式 6(-a 6):字典词 + 掩码后缀(如 'password' + '123' → 'password123');
- 模式 7(-a 7):掩码前缀 + 字典词(如 '123' + 'password' → '123password');
适用于密码为「基础词 + 固定后缀/前缀」的场景(如系统默认密码、用户自定义弱密码)。
实战示例
hashcat -a 6 -m 0 md5_hashes.txt rockyou.txt "?d?d?d" -w 4
hashcat -a 7 -m 1000 ntlm_hashes.txt "?s?s?s" rockyou.txt -w 4
hashcat -a 6 -m 1400 sha256_hashes.txt rockyou.txt -1 ?d?u "?1?1" -w 4
hashcat -m 0 -a 6 ~/rockyou.txt '?b'
五、自定义规则变体
Hashcat 规则通过简单语法修改字典词,生成海量密码变体,从而提高破解成功率。
规则语法核心操作符
| 操作符 | 功能描述 | 示例 | 输入→输出 |
|---|
l | 全小写 | l | 'Password' → 'password' |
u | 全大写 | u | 'password' → 'PASSWORD' |
c | 首字母大写 | c | 'password' → 'Password' |
$x | 追加字符 x | $1 | 'password' → 'password1' |
^x | 前置字符 x | ^! | 'password' → '!password' |
[x-y] | 提取第 x-y 位字符 | [1-4] | 'password' → 'pass' |
M | 记忆当前词 | M$4 | 'abc' → 'abcabc'(4 表示追加记忆词) |
{n} | 重复前 n 个字符 | {2} | 'ab' → 'abab' |
: | 丢弃当前词(过滤无效词) | :iflen<4 | 'abc' → 丢弃(长度<4) |
自定义规则实战案例
案例 1:生成「基础词 + 年份 + 特殊字符」变体
hashcat -a 0 rockyou.txt -r year_special.rule --stdout | head -5
案例 2:过滤短密码并生成混合变体
hashcat -a 0 -m 0 md5_hashes.txt rockyou.txt -r filter_and_hybrid.rule -1 ?d -3 ?s -w 4
案例 3:多规则组合(链式应用)
hashcat -a 0 hashes.txt rockyou.txt -r /usr/share/hashcat/rules/best64.rule -r year_special.rule -w 4
规则调试与优化
- 性能控制:规则文件行数建议不超过 10 万行,避免占用过多 VRAM;
- 常用规则文件:Hashcat 内置规则(
/usr/share/hashcat/rules/):
best64.rule:基础通用规则(推荐首选);
dive.rule:复杂变体规则(适合强密码);
leetspeak.rule:替换字符(如 o→0、e→3)。
调试工具:使用 --debug-rules 查看规则执行过程:
hashcat -a 0 rockyou.txt -r custom.rule --stdout --debug-rules
微信扫一扫,关注极客日志
微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
相关免费在线工具
- 加密/解密文本
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
- Base64 字符串编码/解码
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
- Base64 文件转换器
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
- Markdown 转 HTML
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML 转 Markdown 互为补充。 在线工具,Markdown 转 HTML在线工具,online
- HTML 转 Markdown
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML 转 Markdown在线工具,online
- JSON 压缩
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online