Hashcat 笔记与使用指南
Hashcat 笔记与使用指南
时隔 3 年,Hashcat 迎来了重要更新。
🚀 主要更新内容(v6.2.6 → v7.1.2)
1. 算法支持大幅扩展
- 新增 70 余种 哈希算法,覆盖场景广泛:
- 企业系统(AS/400、Citrix、SAP)
- 区块链钱包(Bitcoin、MetaMask、Dogechain)
- 现代 KDF(Argon2、scrypt)
- 多层哈希组合(如
bcrypt(sha256($pass)))
2. 计算后端多元化
- 新增 HIP 后端(AMD GPU 的 OpenCL 替代方案)
- 新增 Metal 后端(macOS ARM/Intel 原生 GPU 支持)
- 新增 Microsoft OpenCL D3D12 支持
- 增强 Docker 支持(支持 Linux/Windows + AMD GPU)
3. 攻击能力增强
- 规则引擎更强大,支持字符类规则
- 自定义字符集数量从 4 个增至 8 个
- 支持 RAR3 的 真 UTF-8 密码
- 新增
--bypass-delay参数,可跳过低效攻击
4. 性能与监控优化
- 全面硬件监控(AMD/Intel GPU/CPU 状态、Apple 平台功耗)
- 自动化性能调优引擎
- 基准测试可指定范围(
--benchmark-min/max)
5. 开发者与用户体验提升
- 新增 20 余款 提取脚本(APFS、BitLocker、VeraCrypt 等)
- 推出 Assimilation Bridge,支持嵌入式 Python 解释器
- 引入 Test-Edge 离线测试框架
- 新增多篇官方文档(Python 插件开发、macOS 构建等)
📊 新增算法/模式示例
| 类别 | 子类 | 新增算法/模式示例 | 版本 | 备注 |
|---|---|---|---|---|
| 基础算法与KDF | 密码学原语 | AES-GCM、CAST、PBKDF1-SHA1、RC4-40/72/104/128、RIPEMD-320 | v7.0.0 / v7.1.1 | 更多底层哈希与加密算法 |
| 现代KDF | Argon2 (i/d/id)、scrypt (Jane ROMix / Yescrypt) | v7.0.0 | 抗 ASIC/GPU 的高强度密钥派生 | |
| HMAC构造 | HMAC-BLAKE2S、HMAC-RIPEMD160/320 | v7.0.0 | 增加多种 HMAC 变体 | |
| 终端/应用算法 | 企业系统 | AS/400 DES、Citrix NetScaler、SAP CODVN H、Cisco-ISE SHA256 | v7.1.1 / v7.0.0 | 企业级身份验证哈希 |
| 区块链与钱包 | Bitcoin (P2PKH/P2WPKH)、Dogechain、MetaMask、Bisq .wallet | v7.0.0 / v7.1.1 | 加密货币钱包哈希 | |
| 密码管理器 | 1Password、LastPass、Keepass4、Bitwarden | v7.0.0 / v7.1.x | 密码管理软件导出哈希 | |
| 国密算法 | 中国标准 | SM3 (Unix $sm3$)、ShangMi 3 (SM3) |
v7.1.1 / v7.0.0 | 中国商用密码算法支持 |
详细更新日志)
📂 支持的哈希类型(部分示例)
1 | # | Name | Category |
完整hash示例列表hashcat-Hash表
或使用
1
2 hashcat -hh
hashcat "hash值"
🛠 安装与使用
下载
Windows:Releases · hashcat/hashcat
Linux:
1
2
3
4
5
6
7
8
9# 旧版本(可能为 6.2.6)
apt install hashcat
# 新版手动安装
apt install p7zip-full
wget https://github.com/hashcat/hashcat/releases/download/v7.1.2/hashcat-7.1.2.7z
7z x hashcat-7.1.2.7z
chmod +x hashcat.bin
./hashcat.bin -h
选项列表
| 选项(短/长) | 类型 | 说明 | 示例 |
|---|---|---|---|
| -m, –hash-type | 数字 | 哈希类型,见下方参考(否则自动检测) | -m 1000 |
| -a, –attack-mode | 数字 | 攻击模式,见下方参考 | -a 3 |
| -V, –version | 打印版本信息 | ||
| -h, –help | 打印帮助。使用 -hh 显示所有支持的哈希模式 | -h 或 -hh | |
| –quiet | 抑制输出 | ||
| –hex-charset | 假定字符集以十六进制给出 | ||
| –hex-salt | 假定盐值以十六进制给出 | ||
| –hex-wordlist | 假定字典中的单词以十六进制给出 | ||
| –force | 忽略警告 | ||
| –deprecated-check-disable | 启用已弃用的插件 | ||
| –status | 启用状态屏幕的自动更新 | ||
| –status-json | 启用状态输出的 JSON 格式 | ||
| –status-timer | 数字 | 设置状态屏幕更新间隔为 X 秒 | –status-timer=1 |
| –stdin-timeout-abort | 数字 | 如果标准输入在 X 秒内无输入,则中止 | –stdin-timeout-abort=300 |
| –machine-readable | 以机器可读格式显示状态视图 | ||
| –keep-guessing | 哈希破解后继续猜测(寻找碰撞) | ||
| –self-test-disable | 在启动时禁用自测功能 | ||
| –loopback | 将新破解的明文添加到归纳目录 | ||
| –markov-hcstat2 | 文件 | 指定要使用的 hcstat2 文件 | –markov-hcstat2=my.hcstat2 |
| –markov-disable | 禁用马尔可夫链,模拟经典暴力破解 | ||
| –markov-classic | 启用经典马尔可夫链(非按位置) | ||
| –markov-inverse | 启用逆向马尔可夫链(非按位置) | ||
| -t, –markov-threshold | 数字 | 停止接受新马尔可夫链的阈值 X | -t 50 |
| –metal-compiler-runtime | 数字 | 在 Metal 内核编译运行 X 秒后中止 | –metal-compiler-runtime=180 |
| –runtime | 数字 | 在运行 X 秒后中止会话 | –runtime=10 |
| –session | 字符串 | 定义特定会话名称 | –session=mysession |
| –restore | 从 –session 恢复会话 | ||
| –restore-disable | 不写入恢复文件 | ||
| –restore-file-path | 文件 | 恢复文件的具体路径 | –restore-file-path=x.restore |
| -o, –outfile | 文件 | 定义破解哈希的输出文件 | -o outfile.txt |
| –outfile-format | 字符串 | 输出文件格式,用逗号分隔 | –outfile-format=1,3 |
| –outfile-json | 在输出文件中强制使用 JSON 格式 | ||
| –outfile-autohex-disable | 禁用输出明文中的 $HEX[] 格式 | ||
| –outfile-check-timer | 数字 | 设置输出文件检查间隔为 X 秒 | –outfile-check-timer=30 |
| –wordlist-autohex-disable | 禁用字典中 $HEX[] 的自动转换 | ||
| -p, –separator | 字符 | 哈希列表和输出文件的分隔符 | -p : |
| –stdout | 不破解哈希,仅打印候选密码 | ||
| –show | 比较哈希列表与 potfile;显示已破解的哈希 | ||
| –left | 比较哈希列表与 potfile;显示未破解的哈希 | ||
| –username | 启用忽略哈希文件中的用户名 | ||
| –dynamic-x | 忽略哈希中的 $dynamic_X$ 前缀 | ||
| –remove | 启用破解后移除哈希 | ||
| –remove-timer | 数字 | 每 X 秒更新输入哈希文件 | –remove-timer=30 |
| –potfile-disable | 不写入 potfile | ||
| –potfile-path | 文件 | potfile 的具体路径 | –potfile-path=my.pot |
| –encoding-from | 编码 | 强制内部字典编码从 X 转换 | –encoding-from=iso-8859-15 |
| –encoding-to | 编码 | 强制内部字典编码转换为 X | –encoding-to=utf-32le |
| –debug-mode | 数字 | 定义调试模式(仅在使用规则时支持混合模式) | –debug-mode=4 |
| –debug-file | 文件 | 调试规则的输出文件 | –debug-file=good.log |
| –induction-dir | 目录 | 指定用于循环的归纳目录 | –induction=inducts |
| –outfile-check-dir | 目录 | 指定监控第三方输出文件的目录 | –outfile-check-dir=x |
| –logfile-disable | 禁用日志文件 | ||
| –hccapx-message-pair | 数字 | 仅加载 hccapx 中匹配 X 的消息对 | –hccapx-message-pair=2 |
| –nonce-error-corrections | 数字 | 用于替换 AP nonce 最后字节的 BF 大小范围 | –nonce-error-corrections=16 |
| –keyboard-layout-mapping | 文件 | 特殊哈希模式的键盘布局映射表 | –keyb=german.hckmap |
| –truecrypt-keyfiles | 文件 | 要使用的密钥文件,用逗号分隔 | –truecrypt-keyf=x.png |
| –veracrypt-keyfiles | 文件 | 要使用的密钥文件,用逗号分隔 | –veracrypt-keyf=x.txt |
| –veracrypt-pim-start | 数字 | VeraCrypt 个人迭代乘数起始值 | –veracrypt-pim-start=450 |
| –veracrypt-pim-stop | 数字 | VeraCrypt 个人迭代乘数结束值 | –veracrypt-pim-stop=500 |
| -b, –benchmark | 运行选定哈希模式的基准测试 | ||
| –benchmark-all | 运行所有哈希模式的基准测试(需配合 -b) | ||
| –benchmark-min | 设置基准测试最小哈希模式(需配合 -b) | –benchmark-min=100 | |
| –benchmark-max | 设置基准测试最大哈希模式(需配合 -b) | –benchmark-max=1000 | |
| –speed-only | 返回攻击的预期速度,然后退出 | ||
| –progress-only | 返回理想的进度步长和处理时间 | ||
| -c, –segment-size | 数字 | 设置从字典文件缓存的大小为 X MB | -c 32 |
| –bitmap-min | 数字 | 设置位图允许的最小位数为 X | –bitmap-min=24 |
| –bitmap-max | 数字 | 设置位图允许的最大位数为 X | –bitmap-max=24 |
| –bridge-parameter1 | 字符串 | 设置 Bridge 的通用参数1 | |
| –bridge-parameter2 | 字符串 | 设置 Bridge 的通用参数2 | |
| –bridge-parameter3 | 字符串 | 设置 Bridge 的通用参数3 | |
| –bridge-parameter4 | 字符串 | 设置 Bridge 的通用参数4 | |
| –cpu-affinity | 字符串 | 锁定到 CPU 设备,用逗号分隔 | –cpu-affinity=1,2,3 |
| –hook-threads | 数字 | 设置钩子的线程数(每计算单元) | –hook-threads=8 |
| -H, –hash-info | 显示每个哈希模式的信息 | -H 或 -HH | |
| –example-hashes | –hash-info 的别名 | ||
| –backend-ignore-cuda | 启动时不尝试打开 CUDA 接口 | ||
| –backend-ignore-hip | 启动时不尝试打开 HIP 接口 | ||
| –backend-ignore-metal | 启动时不尝试打开 Metal 接口 | ||
| –backend-ignore-opencl | 启动时不尝试打开 OpenCL 接口 | ||
| -I, –backend-info | 显示系统/环境/后端 API 信息 | -I 或 -II | |
| -d, –backend-devices | 字符串 | 要使用的后端设备,用逗号分隔 | -d 1 |
| -Y, –backend-devices-virtmulti | 数字 | 在真实设备上生成 X 个虚拟实例 | -Y 8 |
| -R, –backend-devices-virthost | 数字 | 设置用于创建虚拟实例的真实设备 | -R 1 |
| –backend-devices-keepfree | 数字 | 保持设备内存的指定百分比为空闲 | –backend-devices-keepfree=5 |
| -D, –opencl-device-types | 字符串 | 要使用的 OpenCL 设备类型,用逗号分隔 | -D 1 |
| -O, –optimized-kernel-enable | 启用优化内核(限制密码长度) | ||
| -M, –multiply-accel-disable | 禁用内核加速与处理器数量相乘 | ||
| -w, –workload-profile | 数字 | 启用特定的工作负载配置文件,见下方池 | -w 3 |
| -n, –kernel-accel | 数字 | 手动调优工作负载,设置外循环步长为 X | -n 64 |
| -u, –kernel-loops | 数字 | 手动调优工作负载,设置内循环步长为 X | -u 256 |
| -T, –kernel-threads | 数字 | 手动调优工作负载,设置线程数为 X | -T 64 |
| –backend-vector-width | 数字 | 手动覆盖后端向量宽度为 X | –backend-vector-width=4 |
| –spin-damp | 数字 | 使用 CPU 进行设备同步,百分比 | –spin-damp=10 |
| –hwmon-disable | 禁用温度和风扇速度读取与触发 | ||
| –hwmon-temp-abort | 数字 | 如果温度达到 X 摄氏度,则中止 | –hwmon-temp-abort=100 |
| –scrypt-tmto | 数字 | 手动覆盖 scrypt 的 TMTO 值为 X | –scrypt-tmto=3 |
| -s, –skip | 数字 | 从开始处跳过 X 个单词 | -s 1000000 |
| -l, –limit | 数字 | 限制从开始处 + 跳过的单词数为 X | -l 1000000 |
| –keyspace | 显示密钥空间 base:mod 值并退出 | ||
| –total-candidates | 显示总候选数(base*mod)并退出 | ||
| -j, –rule-left | 规则 | 应用于左字典每个单词的单个规则 | -j ‘c’ |
| -k, –rule-right | 规则 | 应用于右字典每个单词的单个规则 | -k ‘^-‘ |
| -r, –rules-file | 文件 | 应用于字典每个单词的多个规则 | -r rules/best64.rule |
| -g, –generate-rules | 数字 | 生成 X 个随机规则 | -g 10000 |
| –generate-rules-func-min | 数字 | 强制每个规则最少 X 个函数 | |
| –generate-rules-func-max | 数字 | 强制每个规则最多 X 个函数 | |
| –generate-rules-func-sel | 字符串 | 随机规则引擎有效的规则运算符池 | –generate-rules-func-sel=ioTlc |
| –generate-rules-seed | 数字 | 强制设置 RNG 种子为 X | |
| -1, –custom-charset1 | 字符集 | 用户定义字符集 ?1 | -1 ?l?d?u |
| -2, –custom-charset2 | 字符集 | 用户定义字符集 ?2 | -2 ?l?d?s |
| -3, –custom-charset3 | 字符集 | 用户定义字符集 ?3 | |
| -4, –custom-charset4 | 字符集 | 用户定义字符集 ?4 | |
| -5, –custom-charset5 | 字符集 | 用户定义字符集 ?5 | |
| -6, –custom-charset6 | 字符集 | 用户定义字符集 ?6 | |
| -7, –custom-charset7 | 字符集 | 用户定义字符集 ?7 | |
| -8, –custom-charset8 | 字符集 | 用户定义字符集 ?8 | |
| –identify | 显示输入哈希支持的所有算法 | –identify my.hash | |
| -i, –increment | 启用掩码递增模式 | ||
| -ii,–increment-inverse | 从右向左递增 | ||
| –increment-min | 数字 | 从 X 开始掩码递增 | –increment-min=4 |
| –increment-max | 数字 | 在 X 停止掩码递增 | –increment-max=8 |
| -S, –slow-candidates | 启用较慢(但高级)的候选生成器 | ||
| –bypass-delay | 数字 | 检查绕过阈值之间的延迟秒数 | –bypass-delay=5 |
| –bypass-threshold | 数字 | 避免被绕过的最小发现数量 | –bypass-threshold=5 |
| –brain-server | 启用大脑服务器 | ||
| –brain-server-timer | 数字 | 每 X 秒更新大脑服务器转储(最小60) | –brain-server-timer=300 |
| -z, –brain-client | 启用大脑客户端,激活 -S | ||
| –brain-client-features | 数字 | 定义大脑客户端功能,见下方 | –brain-client-features=3 |
| –brain-host | 字符串 | 大脑服务器主机(IP 或域名) | –brain-host=127.0.0.1 |
| –brain-port | 端口 | 大脑服务器端口 | –brain-port=13743 |
| –brain-password | 字符串 | 大脑服务器认证密码 | –brain-password=bZfhCvGUSjRq |
| –brain-session | 十六进制 | 覆盖自动计算的大脑会话 | –brain-session=0x2ae611db |
| –brain-session-whitelist | 十六进制 | 仅允许给定会话,用逗号分隔 | –brain-session-whitelist=0x2ae611db |
| –color-cracked | 启用已破解哈希的彩色输出 |
⚙️ 常用参数详解
核心选项
| 参数 | 说明 | 示例 |
|---|---|---|
-m |
哈希类型(见上方列表) | -m 0(MD5) |
-a |
攻击模式(见下文) | -a 3(掩码攻击) |
-o |
输出文件 | -o result.txt |
--show |
显示已破解的哈希 | --show |
--status |
自动刷新状态屏幕 | --status |
-b |
基准测试 | -b |
-I |
显示系统/GPU 信息 | -I |
攻击模式(-a)
| 模式 | 名称 | 说明 |
|---|---|---|
| 0 | Straight | 字典攻击 |
| 1 | Combination | 组合多个字典 |
| 3 | Brute-force/Mask | 掩码攻击 |
| 6 | Hybrid Wordlist + Mask | 字典+掩码(左字典右掩码) |
| 7 | Hybrid Mask + Wordlist | 掩码+字典(左掩码右字典) |
| 9 | Association | 关联攻击(特定场景极快) |
内置字符集(用于掩码攻击)
| 字符集 | 表示 | 示例 |
|---|---|---|
?l |
小写字母 | abc...z |
?u |
大写字母 | ABC...Z |
?d |
数字 | 0-9 |
?s |
特殊字符 | !@#$%... |
?a |
所有字符(?l?u?d?s) |
|
?b |
0x00–0xff |
OpenCL 设备类型(-D, --opencl-device-types)
| # | 设备类型 |
|---|---|
| 1 | CPU |
| 2 | GPU |
| 3 | FPGA、DSP、协处理器 |
输出文件格式(--outfile-format,需配合 -o)
| # | 格式 | 说明 |
|---|---|---|
| 1 | hash[:salt] | 哈希[:盐值] |
| 2 | plain | 明文 |
| 3 | hex_plain | 十六进制明文 |
| 4 | crack_pos | 破解位置 |
| 5 | timestamp absolute | 绝对时间戳 |
| 6 | timestamp relative | 相对时间戳 |
规则调试模式
| # | 格式 | 说明 |
|---|---|---|
| 1 | Finding-Rule | 查找规则 |
| 2 | Original-Word | 原始单词 |
| 3 | Original-Word:Finding-Rule | 原始单词 + 查找规则 |
| 4 | Original-Word:Finding-Rule:Processed-Word | 原始单词 + 查找规则 + 处理后单词 |
| 5 | Original-Word:Finding-Rule:Processed-Word:Wordlist | 包含单词表信息的完整调试信息 |
大脑客户端功能(--brain-client-features)
| # | 功能 | 说明 |
|---|---|---|
| 1 | Send hashed passwords | 发送哈希密码 |
| 2 | Send attack positions | 发送攻击位置 |
| 3 | Send hashed passwords and attack positions | 发送哈希密码和攻击位置 |
工作负载配置(-w, --workload-profile)
| # | 性能等级 | 运行时间 | 功耗 | 桌面影响 | 说明 |
|---|---|---|---|---|---|
| 1 | Low | 2 ms | 低 | 极小 | 性能低,适合后台任务 |
| 2 | Default | 12 ms | 经济 | 明显 | 平衡性能与用户体验 |
| 3 | High | 96 ms | 高 | 无响应 | 高性能,可能导致桌面卡顿 |
| 4 | Nightmare | 480 ms | 极高 | 无桌面交互 | 极致性能,类似无头模式 |
基础信息参数
-h, --help 帮助信息
显示帮助文档,使用 -hh 可查看所有支持的哈希模式。
1 | hashcat -h |

-V, --version 版本信息
显示当前 Hashcat 版本。
1 | hashcat -V |

-I, --backend-info 显示系统环境信息
查看系统硬件、后端 API 和设备信息。
1 | hashcat -I |

-b, --benchmark 基准测试
对指定哈希类型进行性能测试。
- 测试特定哈希:
-m 0 - 测试所有哈希:
--benchmark-all - 测试范围:
--benchmark-min 100 --benchmark-max 2000

核心攻击参数
-m, --hash-type 哈希类型
指定要破解的哈希类型(参考HASH列表)。
1 | hashcat -m 0 哈希值或文件 |
(-m 0)为MD5
-a, --attack-mode 攻击模式
选择攻击策略,数字对应不同模式(详见攻击模式)。

文件输出参数
-o, --outfile 保存破解结果
将破解成功的哈希和密码保存到指定文件。
1 | hashcat -a 0 -m 0 哈希 字典.txt -o result.txt |
--outfile-format 输出格式
配合 -o 使用,控制输出内容格式。
--show 显示已破解的哈希
查看 potfile 中已破解的哈希。
1 | hashcat --show 哈希文件 |
下面是破解后未加--show

下面是加了--show

--potfile-disable 禁用 potfile 记录
不将破解结果写入 hashcat.potfile。
1 | hashcat --potfile-disable ... |

--status 自动刷新状态屏幕
启用后无需手动按 s 键更新进度。
1 | hashcat --status ... |

--hash-info 哈希模式信息
显示指定哈希模式的详细信息。
1 | hashcat --hash-info -m 0 |
一般情况下推荐官方网站查询hashcat wiki

--machine-readable 机器可读格式
以适合脚本处理的格式显示状态信息。
1 | hashcat --machine-readable ... |

性能调优参数
-O, --optimized-kernel-enable 开启内核优化
启用优化内核,但密码长度限制为 32 字符。
1 | hashcat -O ... |

``-w, –workload-profile` 工作负载配置
平衡性能与系统响应能力(1-4 级)。
1 | hashcat -w 3 ... |
-d, --backend-devices 选择计算设备
指定使用哪些 GPU/CPU 设备。
1 | hashcat -d 1,2 ... |

不选择时,默认位所有设备工作
-D, --opencl-device-types 设备类型筛选
限制使用的设备类型(CPU=1, GPU=2, 其他=3)。
1 | hashcat -D 2 ... |
此选项时设备类型详见[OpenCL Device Types](#OpenCL 设备类型(-D, --opencl-device-types))
会话管理参数
--session 和 --restore 保存与恢复会话
保存当前破解任务,支持断点续破。
1 | # 保存会话 |
🎪 攻击模式详解
模式 0:字典攻击(Straight)
最基本的攻击方式,直接使用字典中的单词进行尝试。
1 | hashcat -a 0 -m 0 哈希值 字典.txt |
模式 1:组合攻击(Combination)
将两个字典中的单词进行组合。
1 | hashcat -a 1 -m 0 哈希值 字典1.txt 字典2.txt |
组合规则示例:
- 字典1:
pass,12345 - 字典2:
alice,bob - 结果:
passalice,passbob,12345alice,12345bob
应用规则:
-j:应用于左侧字典的规则-k:应用于右侧字典的规则
1 | hashcat -a 1 -m 0 哈希值 dict1.txt dict2.txt -j '$-' -k '$!' |
1 | yellow-car! |
命令中的引号只是用来转义$符号的,因为有些情况会将$-在shell中解释为变量,在每个操作系统和每个shell解释器转义都不相同,建议查找操作系统和shell解释器手册
并且,在官方文档中有一句提示
1 | 你可能会看到,在Hashcat的状态中,其中一个字典被标记为“base”(攻击的核心基础),而另一个被标记为“mod”(应用于攻击的“修饰符”)。Hashcat会根据文件的相对大小,动态地内部决定哪个是“base”,哪个是“mod”,以提高效率。这是用户无法干预的,且不会影响输出结果(只会影响速度)。 |
模式 3:掩码攻击(Mask Attack)
替代传统暴力破解,使用字符集和位置模式。
1 | hashcat -a 3 -m 0 哈希值 ?l?l?d?d?d?d |
常见掩码示例:
| 掩码 | 说明 | 示例 |
|---|---|---|
?d?d?d?d?d?d |
6位纯数字 | 123456 |
?u?l?l?s?d?d?d?d |
大写+小写+特殊+数字 | Abc!1234 |
password?d?d?d?d |
固定前缀+4位数字 | password1234 |
自定义字符集:
1 | -1 ?l?d # 自定义字符集1:小写字母+数字 |
[?1]:第 1 个自定义字符集(--custom-charset1或-1)将被设置为该值,可选。[?2]:第 2 个自定义字符集(--custom-charset2或-2)将被设置为该值,可选。[?3]:第 3 个自定义字符集(--custom-charset3或-3)将被设置为该值,可选。[?4]:第 4 个自定义字符集(--custom-charset4或-4)将被设置为该值,可选。[mask]:掩码,可以使用由[?1]、[?2]、[?3]或[?4]定义的自定义字符集,也可以使用任何预定义的字符集(如?l、?u、?d、?h、?H、?s、?a、?b),还可以包含固定字符(示例值:pass?1?d?d?2?l?l)。
现支持8个自定义字符集具体可查看(选项列表)
掩码文件(.hcmask):
1 | # maskfile.hcmask |
1 | hashcat -m 0 -a 3 哈希值 maskfile.hcmask |
增量模式:
1 | hashcat -a 3 --increment --increment-min 4 --increment-max 6 哈希值 ?a?a?a?a?a?a?a?a |
--increment:启用增量模式参数详情--increment-min 4:将候选密码的最小长度设置为 4参数详情--increment-max 6:将候选密码的最大长度设置为 6参数详情?a?a?a?a?a?a?a?a:掩码是内置字符集 ?a(“all”,包括大小写字符、数字和特殊字符)的 8 个字符长的字符串内置字符集
任何情况下,掩码攻击中,掩码都是必须的
模式 6 & 7:混合攻击(Hybrid Attack)
模式6:字典+掩码
1 | hashcat -a 6 -m 0 哈希值 字典.txt ?d?d?d?d |
字典:password, hello → 结果:password0000, password0001, …, hello9999
模式7:掩码+字典
1 | hashcat -a 7 -m 0 哈希值 ?d?d?d?d 字典.txt |
扩展:
[hybrid_atttack_with_rules hashcat wiki]
模式 9:关联攻击(Association Attack)
- 你有一个大型的加盐哈希列表。
- 同时,你对哈希列表中的每个哈希都有一些“提示”或“信息”
关联攻击,它只对hash表中,每个hash使用的关联信息进行攻击
使用场景
- 慢速单哈希攻击:如果你想用单个单词加上一些规则来攻击一个慢速的单哈希,可以使用大写的
-S参数。 - 多词表支持:虽然这与攻击的效率相悖,但在某些情况下,使用多个词表是有意义的。例如,如果密码中有大量子字符串是后来添加的(如 Yubikey 按键生成的字符串、站点特定的字符串或用户使用的公司名称)。
构建测试数据集:首先创建一个包含用户名和哈希的测试数据集。
1
2
3
4
5$ head -10000 example.dict > wordlist.txt
$ shuf wordlist.txt | sponge wordlist.txt
$ tools/test.pl passthrough 3200 < wordlist.txt > hashlist.txt
$ perl -e 'open (IN, "wordlist.txt"); my @a = <IN>; close (IN); open (IN, "hashlist.txt"); my @b = <IN>; close (IN); for (my $i = 0; $i < scalar @a; $i++) { chomp $a[$i]; chomp ($b[$i]); printf ("%s:%s\n", $a[$i], $b[$i]); } print scalar @b' > final.txt
$ rm wordlist.txt hashlist.txt拆分数据集:将用户名和哈希分开,以便使用新的攻击模式。
1
2$ cut -d: -f1 < final.txt > wordlist.txt
$ cut -d: -f2 < final.txt > hashlist.txt传统攻击模式:使用传统的
-a 0攻击模式,观察所需时间。1
$ ./hashcat -m 3200 hashlist.txt wordlist.txt -o result.txt
结果可能需要数小时才能完成。
新攻击模式:使用新的
-a 9攻击模式。1
$ ./hashcat -m 3200 hashlist.txt wordlist.txt -o result.txt -a 9
结果在几秒钟内就能完成,因为它直接使用了与哈希关联的用户名作为密码。
基于规则的攻击(-a 0 -r)
最复杂的攻击方式,支持强大的密码变换规则。
1 | # 创建规则文件 rule1.rule |
📊 示例汇总表
| 攻击模式 | 命令示例 | 适用场景 |
|---|---|---|
| 字典攻击 | hashcat -a 0 -m 0 hash dict.txt |
有可用字典 |
| 组合攻击 | hashcat -a 1 -m 0 hash dict1.txt dict2.txt |
密码由两部分组成 |
| 掩码攻击 | hashcat -a 3 -m 0 hash ?l?l?d?d?d?d |
知道密码格式 |
| 混合攻击 | hashcat -a 6 -m 0 hash dict.txt ?d?d?d?d |
密码有固定后缀 |
| 关联攻击 | hashcat -a 9 -m 3200 hashfile userfile |
有额外关联信息 |
使用技巧
自动识别哈希类型
1
hashcat 哈希值

同时破解多个哈希
1
hashcat -a 0 -m 0 hashes.txt dict.txt
限制密码长度
1
--increment-min 8 --increment-max 12
🧪 常见破解示例
本次示例都以字典破解为例,其他实验可以自行尝试
1. 字典破解 MD5
1 | hashcat -a 0 -m 0 哈希值或哈希文件 字典路径 |
2. 掩码破解 MD5
1 | hashcat -a 3 -m 0 哈希值 ?l?l?d?d?d?d |
3. 破解加盐 MD5
1 | hashcat -a 0 -m 10 '哈希:salt' 字典路径 |
1 | 579d9ec9d0c3d687aaa91289ac2854e4:123 |


4.使用字典爆破Bcrypt
引号只是用来转义,同上文中的$
1 | hashcat -a 0 -m 3200 '$2a$09$PiCiFNspSlTBE9CakVs8ZOqx0xa03X9wOm01gMasHch4929TpEWCC' "E:\400W常用密码(整理).txt" |
也可破解多个,同上文中MD5破解
5.破解WIFI密码
首先要有握手包,并且新版的hashcat,已经不支持旧版的格式,需要使用hcxtools工具中的hcxpcapngtool将包转为hashcat支持的格式
也可以使用hashcat官方提供的网页转换工具hashcat hcxpcapngtool - advanced password recovery
示例
1 | hashcat -a 0 -m 22000 .\WIFI\201.hc22000 "E:\400W常用密码(整理).txt" |

6.破解MySQL数据库密码
1 | hashcat -a 0 -m 300 6bb4837eb74329105ee4568dda7dc67ed2ca2ad9 dict.txt |

7.破解MSSQL
值为
1 | 0x010000000000a759cb9caac46bd28de0b3e2c382753deb0f83df |
1 | hashcat -a 0 -m 132 '0x010000000000a759cb9caac46bd28de0b3e2c382753deb0f83df' "E:\400W常用密码(整理).txt" |

密码为:123456
8.破解压缩包密码
RAR
先使用John the Ripper获取hash值
1 | rar2john /home/kali/Desktop/1.rar |

值为
1 | $rar5$16$258426df09f80311004fd5c06094f883$15$614487d8b960e25811590fc850e42e9b$8$41e1d1a01de9bc64 |

只有一个(Windows运行的话,建议把值放在文件里)
1 | hashcat -a 0 -m 13000 .\WIFI\rar.txt "E:\400W常用密码(整理).txt" |

密码为:123456
ZIP
先使用John the Ripper获取hash值
1 | zip2john /home/kali/Desktop/test.zip |

获取的值要去掉路径
1 | $pkzip$1*1*2*0*3a0*964*bdf4e427*0*2b*8*3a0*bdf4*751ff9011c6fb0b9d766ae8c0ae7a2af95ebbcd67fced5ca1490e2be9178fb7f5f35e19b44abcfa65046ff3b55e68a4fb4880f6d9cf2da4a73a9ca7520498732f2e4ad4e913abd39ed5d18cd8f7e14a7fdda8dd93448c391459bebdcd1949aca27bc85712fb5bf9e9fea0e85cd8d27374eed72cf152e621fbaa880199eb200bc1cbd707a1b82c04ac3cbe27d461a02d693efcb0d7183186da731ba96384dec112603e29ba0944f150c765aba4be0b6d05edd89af21fb1b6f215d08f72b25270445d7cf9db704a7ee7682e3d12bf153c39257d69fbf3cdf8e05fde88e3560c597c0d22b07a20a9288d44d705831957cf76a1af40901267b2d11572275df9798f23b1cd6cf2e658544f0fa7521e12fbf05c474a8d68a3fbc352a7b81c4d621c1d30cbc4459fd793f1dcd3242d4e55208e2c8324af826dfa0038d25ebf9e7856a7dbb9af66808f5f694b921084fb2d23374f93dfed17a474789504c88fade74e5e6e9de860d441c31e5f6eff4428e2cdbb396de95d3cc0797e4ce9fbbf8ce256d4a71acd1514492e48c6a2b821b0de1c9b3a4a98031f27227f72802c33fef58f4c2ca187af858541b56d0ea990df00a6ac735755761149d8c0fb87f4b3339360ff37c349a7e894b3a416a38a9466c7e2bbdbf325e94ee58a48a01dad85a3b939b83c8eb77d19962cb500f847803184d47140beb2bd700c6861ce2019f5534630d8fc1cd17abbaf8d87f896292654e76f18969a22b4c400203989489386eff0844b0346576d0330139f2aab11e6555cee9fa9b8d2b101c0e00dc2ef37ec3874f152283944480e240668f5b426176ad234ec4823e600c1f027f584ceb35bcdd64215b125fdc0426651fd6f8914270a2dcf9496eab2242a80b2e94efe356d859b8e69f236c4c667295c10de867deb2408b440ed97b13b963681869310f9d90c580e656679194e58f9627d4de558eb9750b5b015635056983b2cd589e58eddeb965a97b977d7efb2cebe0dfd2998c08dfdd8c458add41c119e8dc0a8509a138f5ad75c92f367d44a978a50cc23ae05c05a9b4c676278114e2754dfab8d885826d812e9efee6b277239f7e9d6c91aef80ee51fdfa8f7e01efc1ffa53746a373af7156d53cac10fac308683efcf2e99758b468a4ea7694a9d53a604c0a38704b962aa9c88a1f329e6843a04b4b66e145ffa0eb9952fdf2f4b2876008ac5e158963f39f791e8883635dae77a006daaefea0bfa84b84d39d8594f0d5880b120b9def0684581566f63949a538792abbbd7ffb6a9973280ea8a931fc2eefa838e18789b87cdbd*$/pkzip$ |

识别出三种模式,可以一个个试
1 | hashcat -a 0 -m 17220 '$pkzip$1*1*2*0*3a0*964*bdf4e427*0*2b*8*3a0*bdf4*751ff9011c6fb0b9d766ae8c0ae7a2af95ebbcd67fced5ca1490e2be9178fb7f5f35e19b44abcfa65046ff3b55e68a4fb4880f6d9cf2da4a73a9ca7520498732f2e4ad4e913abd39ed5d18cd8f7e14a7fdda8dd93448c391459bebdcd1949aca27bc85712fb5bf9e9fea0e85cd8d27374eed72cf152e621fbaa880199eb200bc1cbd707a1b82c04ac3cbe27d461a02d693efcb0d7183186da731ba96384dec112603e29ba0944f150c765aba4be0b6d05edd89af21fb1b6f215d08f72b25270445d7cf9db704a7ee7682e3d12bf153c39257d69fbf3cdf8e05fde88e3560c597c0d22b07a20a9288d44d705831957cf76a1af40901267b2d11572275df9798f23b1cd6cf2e658544f0fa7521e12fbf05c474a8d68a3fbc352a7b81c4d621c1d30cbc4459fd793f1dcd3242d4e55208e2c8324af826dfa0038d25ebf9e7856a7dbb9af66808f5f694b921084fb2d23374f93dfed17a474789504c88fade74e5e6e9de860d441c31e5f6eff4428e2cdbb396de95d3cc0797e4ce9fbbf8ce256d4a71acd1514492e48c6a2b821b0de1c9b3a4a98031f27227f72802c33fef58f4c2ca187af858541b56d0ea990df00a6ac735755761149d8c0fb87f4b3339360ff37c349a7e894b3a416a38a9466c7e2bbdbf325e94ee58a48a01dad85a3b939b83c8eb77d19962cb500f847803184d47140beb2bd700c6861ce2019f5534630d8fc1cd17abbaf8d87f896292654e76f18969a22b4c400203989489386eff0844b0346576d0330139f2aab11e6555cee9fa9b8d2b101c0e00dc2ef37ec3874f152283944480e240668f5b426176ad234ec4823e600c1f027f584ceb35bcdd64215b125fdc0426651fd6f8914270a2dcf9496eab2242a80b2e94efe356d859b8e69f236c4c667295c10de867deb2408b440ed97b13b963681869310f9d90c580e656679194e58f9627d4de558eb9750b5b015635056983b2cd589e58eddeb965a97b977d7efb2cebe0dfd2998c08dfdd8c458add41c119e8dc0a8509a138f5ad75c92f367d44a978a50cc23ae05c05a9b4c676278114e2754dfab8d885826d812e9efee6b277239f7e9d6c91aef80ee51fdfa8f7e01efc1ffa53746a373af7156d53cac10fac308683efcf2e99758b468a4ea7694a9d53a604c0a38704b962aa9c88a1f329e6843a04b4b66e145ffa0eb9952fdf2f4b2876008ac5e158963f39f791e8883635dae77a006daaefea0bfa84b84d39d8594f0d5880b120b9def0684581566f63949a538792abbbd7ffb6a9973280ea8a931fc2eefa838e18789b87cdbd*$/pkzip$' "E:\400W常用密码(整理).txt" |

破解成功密码是:123456
7-zip
先使用John the Ripper获取hash值
1 | 7z2john /home/kali/Desktop/test.7z |

值为
1 | $7z$2$19$0$$16$fa463c743ccb5e6830349530fdf16c3c$3186943015$864$862$61cecf7ccce0f205ee2a1250b144473612981002f19275fe210267f89950ea45968b279d9ab54e380557281d009b43c745062afb53aa8708271637715ff671665a1131a7234ae6ac2802008ef2cd506e48d5fd25187fac42c35b4d7282c2889b5fcae0ce778ddb7fe65b184d3157612a8ff88d39c3268e843503a1de201b9f15fc9a88fd18254388c304addc255004de04e42cfe01aaa9f8bf49d303263a94de5ded927d1c1542226b80cb80602f9f0935faca86bae5f1b3b8fd64a44cc76f371601f6d782aa795745ef01a7e9836add966a5f322a6af65660050c22ffd0a9a31fe4605b6d4658676ffe19e0d5fcd026f8e9e921e601b2f5bd9f0d79c99f3078f14bef4873a2b69f67898edfb56ceceb6a8dd71e4536c3e73d3d1957d5204b69b5133fe343852aaa9419c9b486d28a97f0f0fd3039220b3fd6e0d7de9a9aa2f4a05b7e4dd8abd3ed10f8b81b60e3f67004c1d448b4b1affe2011d7b71240c85fa492019545c4289e6c5248e9b2d11fbb764edbd4958a035800446008379fa680e6e1094b50e23b9b9f87e275fa2cf4e218eef857c3506847c139f2dd85ee3c5d4d049ae1272bc646b54039a47bb40cdf5364c57666a001328ec61cb91b6185f107c7a791b2bc5fd47b4b093b024f991115fef57956ce3fe632ad2661c2ae7354e019de76bf028f68c52138383b0202fc88b1d9f7fd29cd725b1ed8ac9a1b2fb7616e59a5497b61c29300c894f0232ee58c444ad2c3f26f5e7374ffe78c33f999ec96b5692f2b18b73dd134806964f79ff00b0bc5d302129bae259e8f40b1ab59adf57e17bd59550f79dfcfb074ee54bcd5e8ff8dffc4638857b1c6371ddd6fa535d09232930a1454323d8e52b186517f5133ec2e30ed3f81b148305a5b645f779392c9673024bbd249b32adcf3cd8ae01ad1e0a6393cb58ea1c927df75e4c61a72b8cb5e5b078b393cc9b04191626f485f27914a9f5f8e7824c41ff8381d2a25624c667dfb3a128c937f1490efb8023211ba9e38fe70574d2a222698677e2ea582332f7eb5363461c250a49b8e1b4517b6ff3153ca673bc72124b73f08a8ef0e6eecaa23c55a334b088898a34ca544a3c17405c12bc97b6daeedeede65d113d51dd6b8e78004264d5c721c17cf1a240aac1d918f79b4ad6bf3e279f0fde0a1196f72c562c0dc19be48a393e982a722a59e4f3819f55a820780aba1a5bc0d0273$2404$00 |

还有一句提示,一个hash对应多个密码,加上--keep-guessing破解出第一个继续破解
只有一个
1 | hashcat -a 0 -m 11600 '$7z$2$19$0$$16$fa463c743ccb5e6830349530fdf16c3c$3186943015$864$862$61cecf7ccce0f205ee2a1250b144473612981002f19275fe210267f89950ea45968b279d9ab54e380557281d009b43c745062afb53aa8708271637715ff671665a1131a7234ae6ac2802008ef2cd506e48d5fd25187fac42c35b4d7282c2889b5fcae0ce778ddb7fe65b184d3157612a8ff88d39c3268e843503a1de201b9f15fc9a88fd18254388c304addc255004de04e42cfe01aaa9f8bf49d303263a94de5ded927d1c1542226b80cb80602f9f0935faca86bae5f1b3b8fd64a44cc76f371601f6d782aa795745ef01a7e9836add966a5f322a6af65660050c22ffd0a9a31fe4605b6d4658676ffe19e0d5fcd026f8e9e921e601b2f5bd9f0d79c99f3078f14bef4873a2b69f67898edfb56ceceb6a8dd71e4536c3e73d3d1957d5204b69b5133fe343852aaa9419c9b486d28a97f0f0fd3039220b3fd6e0d7de9a9aa2f4a05b7e4dd8abd3ed10f8b81b60e3f67004c1d448b4b1affe2011d7b71240c85fa492019545c4289e6c5248e9b2d11fbb764edbd4958a035800446008379fa680e6e1094b50e23b9b9f87e275fa2cf4e218eef857c3506847c139f2dd85ee3c5d4d049ae1272bc646b54039a47bb40cdf5364c57666a001328ec61cb91b6185f107c7a791b2bc5fd47b4b093b024f991115fef57956ce3fe632ad2661c2ae7354e019de76bf028f68c52138383b0202fc88b1d9f7fd29cd725b1ed8ac9a1b2fb7616e59a5497b61c29300c894f0232ee58c444ad2c3f26f5e7374ffe78c33f999ec96b5692f2b18b73dd134806964f79ff00b0bc5d302129bae259e8f40b1ab59adf57e17bd59550f79dfcfb074ee54bcd5e8ff8dffc4638857b1c6371ddd6fa535d09232930a1454323d8e52b186517f5133ec2e30ed3f81b148305a5b645f779392c9673024bbd249b32adcf3cd8ae01ad1e0a6393cb58ea1c927df75e4c61a72b8cb5e5b078b393cc9b04191626f485f27914a9f5f8e7824c41ff8381d2a25624c667dfb3a128c937f1490efb8023211ba9e38fe70574d2a222698677e2ea582332f7eb5363461c250a49b8e1b4517b6ff3153ca673bc72124b73f08a8ef0e6eecaa23c55a334b088898a34ca544a3c17405c12bc97b6daeedeede65d113d51dd6b8e78004264d5c721c17cf1a240aac1d918f79b4ad6bf3e279f0fde0a1196f72c562c0dc19be48a393e982a722a59e4f3819f55a820780aba1a5bc0d0273$2404$00' "E:\400W常用密码(整理).txt" --keep-guessing |
加上--keep-guessing是因为有时候第一个破解出的密码并不一定是真实密码


密码其实是:123456
9.破解Linux密码
在/etc/shadow文件中

值为(.不要忘了)
1 | $6$z316qP1U8fjOiyF9$Y5fW1xbnlTUOI3FTAzR4GTN/0Cb4DZD5y9sYCbjEU29KxH4vN9jY4MNnfmwTSE1XjlkNjfNanWF/1uY79jUIq. |

格式
1 | 用户名(username):加密后的密码($type$salt$encrypted):最后一次修改密码的日期(比如19429):最小修改密码间隔(0):最大修改密码间隔(99999):密码过期前的警告天数(7):密码过期后的宽限天数():账户失效日期():保留字段() |
$type
1 | 1 代表采用了MD5加密方式 |
示例
1 | hashcat.exe -a 0 -m 1800 '$6$z316qP1U8fjOiyF9$Y5fW1xbnlTUOI3FTAzR4GTN/0Cb4DZD5y9sYCbjEU29KxH4vN9jY4MNnfmwTSE1XjlkNjfNanWF/1uY79jUIq.' "E:\400W常用密码(整理).txt" |

密码为:password
10.破解Windows密码
NTLM—HASH
正常情况需要用猕猴桃获取hash

我们这里就不使用了,我们使用在线生成NTLM哈希 - 工具匠

值为
1 | 32ed87bdb5fdc5e9cba88547376818d4 |

示例
1 | hashcat -a 0 -m 1000 '32ed87bdb5fdc5e9cba88547376818d4' "E:\400W常用密码(整理).txt" |

密码为:123456
LM-HASH
这里正常也需要猕猴桃获取,为了方便我这里就直接生成了
LM Hash
- 密码最多14个字符,超过部分被截断。
- 所有字母被转换为大写。
- 如果密码不足14个字符,用空字符(0x00)填充。
- 生成为一个32位的hash,前16位代表这前7个字符,后16位代表后7个字符
- 如果后16位固定位
aad3b435b51404ee那么密码小于等于7个字符

值为
1 | 44efce164ab921caaad3b435b51404ee |
由上述可知aad3b435b51404ee为空密码,我们只破解前16位即可
1 | 44efce164ab921ca |

示例
1 | hashcat -a 0 -m 3000 '44efce164ab921ca' "E:\400W常用密码(整理).txt" |

密码为:123456
NTLM和LM可看[3.1 本地认证——NTLM哈希和LM哈希_lm(lan manager)哈希-CSDN博客](https://blog.csdn.net/GloryGod/article/details/132478730#:~:text=LM Hash 的全名为”LAN Manager Hash”,是微软为了提高 Windows操作系统的安全性而采用的散列加密 算法,其本质是DES加密。 尽管,Hash较容易被破解,但为了保证系统的兼容性,Windows只是将LM Hash禁用了(从Windows vista和 Windows Server2008版本开始, Windows操作系统默认禁用 LM Hash)。)
11.破解JWT
去这里生成一个加密的jwt

值为
1 | eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.keH6T3x1z7mmhKL1T3r9sQdAxxdzB6siemGMr_6ZOwU |

示例
1 | hashcat -a 0 -m 16500 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.keH6T3x1z7mmhKL1T3r9sQdAxxdzB6siemGMr_6ZOwU' "E:\400W常用密码(整理).txt" |

密码为:123456
12.破解PDF
先使用John the Ripper获取hash值

值为
1 | $pdf$4*4*128*-3904*0*16*26ac7a3c91bd422286fb1c081e5e4ae3*32*5014f14464acbaae9c3dce5e1e3f3d52d8d298b0b04543b03b4a1aee0f26b84d*32*c431fab9cc5ef7b59c244b61b745f71ac5ba427b1b9102da468e77127f1e69d6 |

示例
1 | hashcat -a 0 -m 10500 '$pdf$4*4*128*-3904*0*16*26ac7a3c91bd422286fb1c081e5e4ae3*32*5014f14464acbaae9c3dce5e1e3f3d52d8d298b0b04543b03b4a1aee0f26b84d*32*c431fab9cc5ef7b59c244b61b745f71ac5ba427b1b9102da468e77127f1e69d6' "E:\400W常用密码(整理).txt" |

密码为:123456
13.破解SM3
1 | ./hashcat.bin 207CF410532F92A47DEE245CE9B11FF71F578EBD763EB3BBEA44EBD043D018FB |

1 | ./hashcat.bin -m 31100 -a 0 207CF410532F92A47DEE245CE9B11FF71F578EBD763EB3BBEA44EBD043D018FB /root/weakpass_4.txt |

📌 总结
Hashcat 作为世界上最快的密码恢复工具之一,支持多种哈希算法、攻击模式与硬件加速,适用于渗透测试、数字取证与密码研究等场景。
本文仅供参考学习,请在合法授权范围内使用。
