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
2
3
4
5
6
7
8
9
10
   # | Name                                                       | Category
======+============================================================+======================================
0 | MD5 | Raw Hash
100 | SHA1 | Raw Hash
5500 | NetNTLMv1 / NetNTLMv1+ESS | Network Protocol
27000 | NetNTLMv1 / NetNTLMv1+ESS (NT) | Network Protocol
5600 | NetNTLMv2 | Network Protocol
27100 | NetNTLMv2 (NT) | Network Protocol
1000 | NTLM | Operating System
3200 | bcrypt $2*$, Blowfish (Unix) | Operating System

完整hash示例列表hashcat-Hash表

或使用

1
2
hashcat -hh
hashcat "hash值"

🛠 安装与使用

下载

  • WindowsReleases · 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

image-20251202121013568

-V, --version 版本信息

显示当前 Hashcat 版本。

1
hashcat -V

image-20251202121038774

-I, --backend-info 显示系统环境信息

查看系统硬件、后端 API 和设备信息。

1
hashcat -I

image-20251202121118223

-b, --benchmark 基准测试

对指定哈希类型进行性能测试。

  • 测试特定哈希:-m 0
  • 测试所有哈希:--benchmark-all
  • 测试范围:--benchmark-min 100 --benchmark-max 2000

image-20251202121146621

核心攻击参数

-m, --hash-type 哈希类型

指定要破解的哈希类型(参考HASH列表)。

1
hashcat -m 0 哈希值或文件

(-m 0)为MD5

-a, --attack-mode 攻击模式

选择攻击策略,数字对应不同模式(详见攻击模式)。

image-20250109085531597

文件输出参数

-o, --outfile 保存破解结果

将破解成功的哈希和密码保存到指定文件。

1
hashcat -a 0 -m 0 哈希 字典.txt -o result.txt

--outfile-format 输出格式

配合 -o 使用,控制输出内容格式。

--show 显示已破解的哈希

查看 potfile 中已破解的哈希。

1
hashcat --show 哈希文件

下面是破解后未加--show

image-20251202105224060

下面是加了--show

image-20251202105110146

--potfile-disable 禁用 potfile 记录

不将破解结果写入 hashcat.potfile。

1
hashcat --potfile-disable ...

image-20251202105128000

--status 自动刷新状态屏幕

启用后无需手动按 s 键更新进度。

1
hashcat --status ...

image-20250109090853609

--hash-info 哈希模式信息

显示指定哈希模式的详细信息。

1
hashcat --hash-info -m 0

一般情况下推荐官方网站查询hashcat wiki

image-20250109091121000

--machine-readable 机器可读格式

以适合脚本处理的格式显示状态信息。

1
hashcat --machine-readable ...

image-20250109091415336

性能调优参数

-O, --optimized-kernel-enable 开启内核优化

启用优化内核,但密码长度限制为 32 字符。

1
hashcat -O ...

image-20251202105010333

``-w, –workload-profile` 工作负载配置

平衡性能与系统响应能力(1-4 级)。

1
hashcat -w 3 ...

-d, --backend-devices 选择计算设备

指定使用哪些 GPU/CPU 设备。

1
hashcat -d 1,2 ...

image-20251202105343435

不选择时,默认位所有设备工作

-D, --opencl-device-types 设备类型筛选

限制使用的设备类型(CPU=1, GPU=2, 其他=3)。

1
hashcat -D 2 ...

此选项时设备类型详见[OpenCL Device Types](#OpenCL 设备类型(-D, --opencl-device-types))

会话管理参数

--session--restore 保存与恢复会话

保存当前破解任务,支持断点续破。

1
2
3
4
5
# 保存会话
hashcat --session mysession ...

# 恢复会话
hashcat --restore --session mysession

🎪 攻击模式详解

模式 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
2
3
4
5
6
7
8
yellow-car!
green-car!
black-car!
blue-car!
yellow-bike!
green-bike!
black-bike!
blue-bike!

命令中的引号只是用来转义$符号的,因为有些情况会将$-在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
2
3
-1 ?l?d  # 自定义字符集1:小写字母+数字
-2 ?u?s # 自定义字符集2:大写字母+特殊字符
hashcat -a 3 -m 0 哈希值 -1 ?l?d -2 ?u?s ?1?1?2?2
  • [?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
2
# maskfile.hcmask
?l?d?u,?l?d,?l?d*!$@_,?1?2?2?2?2?2?2?3?3?3?3?d?d?d?d
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. 构建测试数据集:首先创建一个包含用户名和哈希的测试数据集。

    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
  2. 拆分数据集:将用户名和哈希分开,以便使用新的攻击模式。

    1
    2
    $ cut -d: -f1 < final.txt > wordlist.txt
    $ cut -d: -f2 < final.txt > hashlist.txt
  3. 传统攻击模式:使用传统的 -a 0 攻击模式,观察所需时间。

    1
    $ ./hashcat -m 3200 hashlist.txt wordlist.txt -o result.txt

    结果可能需要数小时才能完成。

  4. 新攻击模式:使用新的 -a 9 攻击模式。

    1
    $ ./hashcat -m 3200 hashlist.txt wordlist.txt -o result.txt -a 9

    结果在几秒钟内就能完成,因为它直接使用了与哈希关联的用户名作为密码。

基于规则的攻击(-a 0 -r)

最复杂的攻击方式,支持强大的密码变换规则。

1
2
3
4
5
6
7
8
9
# 创建规则文件 rule1.rule
$1 # 在末尾添加数字1
c # 首字母大写

# 应用规则
hashcat -a 0 -m 0 哈希值 字典.txt -r rule1.rule

# 多规则组合
hashcat --stdout -r rule1.rule -r rule2.rule 字典.txt

📊 示例汇总表

攻击模式 命令示例 适用场景
字典攻击 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. 自动识别哈希类型

    1
    hashcat 哈希值

    image-20251202122724218

  2. 同时破解多个哈希

    1
    hashcat -a 0 -m 0 hashes.txt dict.txt
  3. 限制密码长度

    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

image-20251202121400341

image-20251202121441837

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"

image-20250109133858691

6.破解MySQL数据库密码

1
hashcat -a 0 -m 300 6bb4837eb74329105ee4568dda7dc67ed2ca2ad9 dict.txt

image-20251202121554050

7.破解MSSQL

值为

1
0x010000000000a759cb9caac46bd28de0b3e2c382753deb0f83df
1
hashcat -a 0 -m 132 '0x010000000000a759cb9caac46bd28de0b3e2c382753deb0f83df' "E:\400W常用密码(整理).txt"

image-20251202121713226

密码为:123456

8.破解压缩包密码

RAR

先使用John the Ripper获取hash值

1
rar2john /home/kali/Desktop/1.rar

image-20250109143829485

值为

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

image-20250109143957596

只有一个(Windows运行的话,建议把值放在文件里)

1
hashcat -a 0 -m 13000 .\WIFI\rar.txt "E:\400W常用密码(整理).txt"

image-20250109144625428

密码为:123456

ZIP

先使用John the Ripper获取hash值

1
zip2john /home/kali/Desktop/test.zip

image-20250109141233689

获取的值要去掉路径

1
$pkzip$1*1*2*0*3a0*964*bdf4e427*0*2b*8*3a0*bdf4*751ff9011c6fb0b9d766ae8c0ae7a2af95ebbcd67fced5ca1490e2be9178fb7f5f35e19b44abcfa65046ff3b55e68a4fb4880f6d9cf2da4a73a9ca7520498732f2e4ad4e913abd39ed5d18cd8f7e14a7fdda8dd93448c391459bebdcd1949aca27bc85712fb5bf9e9fea0e85cd8d27374eed72cf152e621fbaa880199eb200bc1cbd707a1b82c04ac3cbe27d461a02d693efcb0d7183186da731ba96384dec112603e29ba0944f150c765aba4be0b6d05edd89af21fb1b6f215d08f72b25270445d7cf9db704a7ee7682e3d12bf153c39257d69fbf3cdf8e05fde88e3560c597c0d22b07a20a9288d44d705831957cf76a1af40901267b2d11572275df9798f23b1cd6cf2e658544f0fa7521e12fbf05c474a8d68a3fbc352a7b81c4d621c1d30cbc4459fd793f1dcd3242d4e55208e2c8324af826dfa0038d25ebf9e7856a7dbb9af66808f5f694b921084fb2d23374f93dfed17a474789504c88fade74e5e6e9de860d441c31e5f6eff4428e2cdbb396de95d3cc0797e4ce9fbbf8ce256d4a71acd1514492e48c6a2b821b0de1c9b3a4a98031f27227f72802c33fef58f4c2ca187af858541b56d0ea990df00a6ac735755761149d8c0fb87f4b3339360ff37c349a7e894b3a416a38a9466c7e2bbdbf325e94ee58a48a01dad85a3b939b83c8eb77d19962cb500f847803184d47140beb2bd700c6861ce2019f5534630d8fc1cd17abbaf8d87f896292654e76f18969a22b4c400203989489386eff0844b0346576d0330139f2aab11e6555cee9fa9b8d2b101c0e00dc2ef37ec3874f152283944480e240668f5b426176ad234ec4823e600c1f027f584ceb35bcdd64215b125fdc0426651fd6f8914270a2dcf9496eab2242a80b2e94efe356d859b8e69f236c4c667295c10de867deb2408b440ed97b13b963681869310f9d90c580e656679194e58f9627d4de558eb9750b5b015635056983b2cd589e58eddeb965a97b977d7efb2cebe0dfd2998c08dfdd8c458add41c119e8dc0a8509a138f5ad75c92f367d44a978a50cc23ae05c05a9b4c676278114e2754dfab8d885826d812e9efee6b277239f7e9d6c91aef80ee51fdfa8f7e01efc1ffa53746a373af7156d53cac10fac308683efcf2e99758b468a4ea7694a9d53a604c0a38704b962aa9c88a1f329e6843a04b4b66e145ffa0eb9952fdf2f4b2876008ac5e158963f39f791e8883635dae77a006daaefea0bfa84b84d39d8594f0d5880b120b9def0684581566f63949a538792abbbd7ffb6a9973280ea8a931fc2eefa838e18789b87cdbd*$/pkzip$

image-20250109141428802

识别出三种模式,可以一个个试

1
hashcat -a 0 -m 17220 '$pkzip$1*1*2*0*3a0*964*bdf4e427*0*2b*8*3a0*bdf4*751ff9011c6fb0b9d766ae8c0ae7a2af95ebbcd67fced5ca1490e2be9178fb7f5f35e19b44abcfa65046ff3b55e68a4fb4880f6d9cf2da4a73a9ca7520498732f2e4ad4e913abd39ed5d18cd8f7e14a7fdda8dd93448c391459bebdcd1949aca27bc85712fb5bf9e9fea0e85cd8d27374eed72cf152e621fbaa880199eb200bc1cbd707a1b82c04ac3cbe27d461a02d693efcb0d7183186da731ba96384dec112603e29ba0944f150c765aba4be0b6d05edd89af21fb1b6f215d08f72b25270445d7cf9db704a7ee7682e3d12bf153c39257d69fbf3cdf8e05fde88e3560c597c0d22b07a20a9288d44d705831957cf76a1af40901267b2d11572275df9798f23b1cd6cf2e658544f0fa7521e12fbf05c474a8d68a3fbc352a7b81c4d621c1d30cbc4459fd793f1dcd3242d4e55208e2c8324af826dfa0038d25ebf9e7856a7dbb9af66808f5f694b921084fb2d23374f93dfed17a474789504c88fade74e5e6e9de860d441c31e5f6eff4428e2cdbb396de95d3cc0797e4ce9fbbf8ce256d4a71acd1514492e48c6a2b821b0de1c9b3a4a98031f27227f72802c33fef58f4c2ca187af858541b56d0ea990df00a6ac735755761149d8c0fb87f4b3339360ff37c349a7e894b3a416a38a9466c7e2bbdbf325e94ee58a48a01dad85a3b939b83c8eb77d19962cb500f847803184d47140beb2bd700c6861ce2019f5534630d8fc1cd17abbaf8d87f896292654e76f18969a22b4c400203989489386eff0844b0346576d0330139f2aab11e6555cee9fa9b8d2b101c0e00dc2ef37ec3874f152283944480e240668f5b426176ad234ec4823e600c1f027f584ceb35bcdd64215b125fdc0426651fd6f8914270a2dcf9496eab2242a80b2e94efe356d859b8e69f236c4c667295c10de867deb2408b440ed97b13b963681869310f9d90c580e656679194e58f9627d4de558eb9750b5b015635056983b2cd589e58eddeb965a97b977d7efb2cebe0dfd2998c08dfdd8c458add41c119e8dc0a8509a138f5ad75c92f367d44a978a50cc23ae05c05a9b4c676278114e2754dfab8d885826d812e9efee6b277239f7e9d6c91aef80ee51fdfa8f7e01efc1ffa53746a373af7156d53cac10fac308683efcf2e99758b468a4ea7694a9d53a604c0a38704b962aa9c88a1f329e6843a04b4b66e145ffa0eb9952fdf2f4b2876008ac5e158963f39f791e8883635dae77a006daaefea0bfa84b84d39d8594f0d5880b120b9def0684581566f63949a538792abbbd7ffb6a9973280ea8a931fc2eefa838e18789b87cdbd*$/pkzip$' "E:\400W常用密码(整理).txt"

image-20250109141637281

破解成功密码是:123456

7-zip

先使用John the Ripper获取hash值

1
7z2john /home/kali/Desktop/test.7z

image-20250109141916169

值为

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

image-20250109142053741

还有一句提示,一个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是因为有时候第一个破解出的密码并不一定是真实密码

image-20250109143024263

image-20250109143047862

密码其实是:123456

9.破解Linux密码

/etc/shadow文件中

image-20250109145629195

值为(.不要忘了)

1
$6$z316qP1U8fjOiyF9$Y5fW1xbnlTUOI3FTAzR4GTN/0Cb4DZD5y9sYCbjEU29KxH4vN9jY4MNnfmwTSE1XjlkNjfNanWF/1uY79jUIq.

image-20250109145938663

格式

1
用户名(username):加密后的密码($type$salt$encrypted):最后一次修改密码的日期(比如19429):最小修改密码间隔(0):最大修改密码间隔(99999):密码过期前的警告天数(7):密码过期后的宽限天数():账户失效日期():保留字段()

$type

1
2
3
4
5
6
7
8
1 代表采用了MD5加密方式
2 Blowfish,是最早的版本,有一些缺陷,不推荐使用
2a Blowfish,是修复了一些缺陷后的版本,但仍然有一些问题,不推荐使用
2b Blowfish,是修复了2a中的问题后的版本,是安全、常用的版本
2y Blowfish,Eksblowfish版本
y 是Yescrypt加密方式的前缀,是Blowfish加密方式的一个变种,提供了更高的安全性和性能 (hashcat不支持)
5 代表采用了SHA256加密方式
6 代表采用了SHA512加密方式

示例

1
hashcat.exe -a 0 -m 1800 '$6$z316qP1U8fjOiyF9$Y5fW1xbnlTUOI3FTAzR4GTN/0Cb4DZD5y9sYCbjEU29KxH4vN9jY4MNnfmwTSE1XjlkNjfNanWF/1uY79jUIq.' "E:\400W常用密码(整理).txt"

image-20250109150254255

密码为:password

10.破解Windows密码

NTLM—HASH

正常情况需要用猕猴桃获取hash

image-20250109153705065

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

image-20250109155744608

值为

1
32ed87bdb5fdc5e9cba88547376818d4

image-20251202121821034

示例

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

image-20251202121945499

密码为:123456

LM-HASH

这里正常也需要猕猴桃获取,为了方便我这里就直接生成了

LM哈希 - 工具匠

LM Hash

  • 密码最多14个字符,超过部分被截断。
  • 所有字母被转换为大写。
  • 如果密码不足14个字符,用空字符(0x00)填充。
  • 生成为一个32位的hash,前16位代表这前7个字符,后16位代表后7个字符
  • 如果后16位固定位aad3b435b51404ee那么密码小于等于7个字符

image-20250109162228662

值为

1
44efce164ab921caaad3b435b51404ee

由上述可知aad3b435b51404ee为空密码,我们只破解前16位即可

1
44efce164ab921ca

image-20251202122019845

示例

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

image-20251202122216504

密码为: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

JSON Web Tokens - jwt.io

去这里生成一个加密的jwt

image-20250109170314308

值为

1
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.keH6T3x1z7mmhKL1T3r9sQdAxxdzB6siemGMr_6ZOwU

image-20251202122248423

示例

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

image-20251202122325549

密码为:123456

12.破解PDF

先使用John the Ripper获取hash值

image-20250109165728921

值为

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

image-20250109165833443

示例

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

image-20250109165914361

密码为:123456

13.破解SM3

1
./hashcat.bin 207CF410532F92A47DEE245CE9B11FF71F578EBD763EB3BBEA44EBD043D018FB

image-20251202113150109

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

image-20251202113217485

📌 总结

Hashcat 作为世界上最快的密码恢复工具之一,支持多种哈希算法、攻击模式与硬件加速,适用于渗透测试、数字取证与密码研究等场景。

本文仅供参考学习,请在合法授权范围内使用。

参考

hashcat - advanced password recovery

start [hashcat wiki]

hashcat Forum