首页 > 算法与数据结构 > 最新文章

hashcat使用教程

CSDN博客 2026-04-25 14:29:21 人看过


hashcat 是一款功能强大、高速的密码恢复工具,支持多种哈希  类 型破解,兼容CPU、GPU(CUDA/OpenCL/HIP/Metal)等硬件加速,是渗透测试和密码安全领域的核心工具之一。它支持暴力破解、字典破解、掩码破解、混合破解等多种攻击模式,可处理数千种哈希算法(如MD5、SHA系列、Windows LM/NTLM、Linux影子密码、WiFi WPA/WPA2哈希等),并提供规则自定义、会话恢复、性能优化等丰富功能,适用于密码恢复、安全审计和渗透测试场景。

核心命令格式

命令格式说明
hashcat [options]… hash|hashfile|hccapxfile [dictionary|mask|directory]…基础执行格式:通过选项指定破解参数,后接目标哈希(单个哈希/哈希文件/WiFi hccapx文件),最后指定破解源(字典/掩码/目录)

常用参数说明(按功能分类)

1. 基础配置参数

短参数/长参数类型描述示例
-m, –hash-type数字指定哈希类型(未指定则自动检测,参考哈希类型编号)-m 1000(对应NTLM哈希)
-a, –attack-mode数字指定攻击模式(参考攻击模式编号)-a 3(掩码暴力破解)
-V, –version显示工具版本hashcat -V
-h, –help显示帮助信息hashcat -h
–quiet抑制输出(仅显示关键结果)hashcat –quiet -m 0 hash.txt dict.txt
–force忽略警告信息(强制执行)hashcat –force -m 0 hash.txt dict.txt

2. 攻击模式与字符集参数

短参数/长参数类型描述示例
-1, –custom-charset1字符集自定义字符集?1(可组合内置字符集)-1 ?l?d?u(?1包含小写字母+数字+大写字母)
-2, –custom-charset2字符集自定义字符集?2-2 ?l?d?s(?2包含小写字母+数字+特殊字符)
-3, –custom-charset3字符集自定义字符集?3-3 ?A?0(?3包含大写字母+数字)
-4, –custom-charset4字符集自定义字符集?4-4 !@#$%(?4包含指定特殊字符)
-i, –increment启用掩码增量模式(按长度递增尝试)hashcat -a 3 -i -m 0 hash.txt ?l?l?l
–increment-min数字增量模式起始长度–increment-min=4(从4位开始)
–increment-max数字增量模式结束长度–increment-max=8(到8位结束)

3. 输出与结果管理参数

短参数/长参数类型描述示例
-o, –outfile文件指定破解结果输出文件-o result.txt(结果保存到result.txt)
–outfile-format字符串输出格式(多格式用逗号分隔)–outfile-format=1,3(格式1:哈希:密码;格式3:密码)
–show对比哈希列表与potfile(已破解记录文件),显示已破解哈希hashcat –show -m 1000 hash.txt
–left对比哈希列表与potfile,显示未破解哈希hashcat –left -m 1000 hash.txt
–potfile-disable禁用potfile(不保存破解记录)hashcat –potfile-disable -m 0 hash.txt dict.txt
–potfile-path文件指定自定义potfile路径–potfile-path=my.pot(使用my.pot保存记录)

4. 会话与  性能优化              参数

短参数/长参数类型描述示例
–session字符串定义会话名称(用于恢复会话)–session=ntlm_crack(会话名:ntlm_crack)
–restore从指定会话恢复破解(需配合–session)hashcat –restore –session=ntlm_crack
-w, –workload-profile数字指定工作负载配置(1=低负载,2=中负载,3=高负载,默认3)-w 2(中负载,平衡性能与系统占用)
-b, –benchmark对指定哈希类型进行性能测试hashcat -b -m 1000(测试NTLM哈希破解速度)
–backend-devices字符串指定使用的硬件设备(逗号分隔)-d 1(使用第1个GPU设备)
-O, –optimized-kernel-enable启用优化内核(提升速度,限制密码长度)hashcat -O -m 1000 -a 3 hash.txt ?l?d?u?l?d?u

5. 规则与字典参数

短参数/长参数类型描述示例
-r, –rules-file文件指定规则文件(对字典单词应用规则变形)-r rules/best64.rule(使用best64规则)
-j, –rule-left规则对字典单词应用单个左侧规则-j ‘c’(首字母大写,如”test”→”Test”)
-k, –rule-right规则对字典单词应用单个右侧规则-k ‘^-‘(在单词前加”-“,如”test”→”-test”)
-s, –skip数字跳过字典前X个单词-s 10000(跳过前10000个单词)
-l, –limit数字限制字典读取数量(从跳过位置开始算)-l 5000(仅读取5000个单词)

附:常用攻击模式(–attack-mode)

编号攻击模式描述
0Straight(字典模式)直接使用字典中的单词尝试破解
1Combination(组合模式)组合两个字典中的单词尝试破解
3Brute-force(掩码暴力破解)通过掩码定义字符集和长度,暴力尝试
6Hybrid Wordlist + Mask(混合模式1)字典单词 + 掩码后缀
7Hybrid Mask + Wordlist(混合模式2)掩码前缀 + 字典单词

附:常用哈希类型(–hash-type)

编号哈希类型描述
0MD5MD5哈希算法
100SHA-1SHA-1哈希算法
1000NTLMWindows NTLM哈希
3200bcryptbcrypt哈希(Linux/网站密码常用)
2500WPA/WPA2WiFi WPA/WPA2握手包哈希(需hccapx文件)

附:内置字符集代码

代码包含字符
?l小写字母(a-z)
?u大写字母(A-Z)
?d数字(0-9)
?s特殊字符(!@#$%^&*等)
?a所有可打印字符(?l?u?d?s)
?h十六进制字符(0-9, a-f)
?H十六进制字符(0-9, A-F)

hashcat 完整使用教程

1. 基础字典破解(Straight模式)

场景:破解单个MD5哈希(哈希值:d41d8cd98f00b204e9800998ecf8427e,对应空密码),使用系统自带字典rockyou.txt。

# 命令 hashcat -a 0 -m 0 d41d8cd98f00b204e9800998ecf8427e /usr/share/wordlists/rockyou.txt -o md5_result.txt -v # 参数说明 # -a 0:字典模式 # -m 0:MD5哈希类型 # d41d8cd98f00b204e9800998ecf8427e:目标哈希 # /usr/share/wordlists/rockyou.txt:Kali自带字典(需解压:gunzip rockyou.txt.gz) # -o md5_result.txt:结果保存到md5_result.txt # -v:详细输出

结果查看:执行后打开md5_result.txt,可看到“d41d8cd98f00b204e9800998ecf8427e:”(空密码)的破解结果。

2. 掩码暴力破解(Brute-force模式)

场景:破解  Windows NTLM哈希(哈希值:31d6cfe0d16ae931b73c59d7e0c089c0,对应空密码),尝试4-6位由“小写字母+数字”组成的密码,启用增量模式。

# 命令 hashcat -a 3 -m 1000 31d6cfe0d16ae931b73c59d7e0c089c0 -1 ?l?d -i --increment-min=4 --increment-max=6 ?1?1?1?1?1?1 -o ntlm_brute_result.txt -O -v # 参数说明 # -a 3:掩码暴力破解模式 # -m 1000:NTLM哈希类型 # 31d6cfe0d16ae931b73c59d7e0c089c0:目标NTLM哈希 # -1 ?l?d:自定义字符集?1为“小写字母+数字” # -i:启用增量模式(按密码长度递增尝试) # --increment-min=4:从4位密码开始尝试 # --increment-max=6:到6位密码结束尝试 # ?1?1?1?1?1?1:掩码(6个位置,每个位置使用?1字符集,增量模式下会自动匹配4-6位长度) # -o ntlm_brute_result.txt:结果保存到指定文件 # -O:启用优化内核(提升GPU破解速度) # -v:详细输出破解过程

补充说明:若已知密码格式(如首字母大写、末尾含特殊字符),可自定义多字符集组合。例如破解“1位大写字母+4位数字+1位特殊字符”的密码,命令为:
hashcat -a 3 -m 0 md5_hash.txt -1 ?u -2 ?d -3 ?s ?1?2?2?2?2?3 -o custom_mask_result.txt

3. 字典+规则破解(提升字典覆盖率)

场景:破解SHA-1哈希(哈希值:da39a3ee5e6b4b0d3255bfef95601890afd80709,对应空密码),使用rockyou.txt字典并应用best64规则(对字典单词进行变形,如首字母大写、末尾加数字等)。

# 命令 hashcat -a 0 -m 100 da39a3ee5e6b4b0d3255bfef95601890afd80709 /usr/share/wordlists/rockyou.txt -r /usr/share/hashcat/rules/best64.rule -o sha1_rule_result.txt -v # 参数说明 # -a 0:字典模式 # -m 100:SHA-1哈希类型 # da39a3ee5e6b4b0d3255bfef95601890afd80709:目标SHA-1哈希 # /usr/share/wordlists/rockyou.txt:基础字典 # -r /usr/share/hashcat/rules/best64.rule:应用hashcat自带的best64规则(Kali默认路径) # -o sha1_rule_result.txt:结果输出文件 # -v:详细输出

规则作用:best64规则包含64种常见密码变形逻辑,例如将“test”变为“Test”“test1”“TEST”等,可大幅提升字典对复杂密码的破解成功率。

4. 混合模式破解(字典+掩码)

场景:破解Linux bcrypt哈希(哈希值:2a10$xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,假设密码格式为“字典单词+2位数字后缀”),使用混合模式(字典+掩码)。

# 命令 hashcat -a 6 -m 3200 bcrypt_hash.txt /usr/share/wordlists/rockyou.txt ?d?d -o bcrypt_hybrid_result.txt -w 2 -v # 参数说明 # -a 6:混合模式(字典单词+掩码后缀) # -m 3200:bcrypt哈希类型 # bcrypt_hash.txt:存储目标bcrypt哈希的文件(每行一个哈希) # /usr/share/wordlists/rockyou.txt:基础字典(提供前缀单词) # ?d?d:掩码后缀(2位数字,匹配密码末尾的数字组合) # -w 2:中负载工作模式(平衡CPU/GPU占用与破解速度) # -o bcrypt_hybrid_result.txt:结果输出文件 # -v:详细输出

反向混合模式:若密码格式为“2位数字前缀+字典单词”,可使用-a 7(掩码前缀+字典单词),命令为:
hashcat -a 7 -m 3200 bcrypt_hash.txt ?d?d /usr/share/wordlists/rockyou.txt -o bcrypt_hybrid_rev_result.txt

5. WiFi WPA/WPA2哈希破解(hccapx文件)

场景:破解WiFi WPA/WPA2握手包生成的hccapx文件(需提前用  aircrack-ng 等工具捕获握手包并转换为hccapx格式),使用字典暴力破解。

# 步骤1:确认hccapx文件有效性 file wifi_handshake.hccapx  # 输出应包含“hccapx file” # 步骤2:执行破解命令 hashcat -a 0 -m 2500 wifi_handshake.hccapx /usr/share/wordlists/rockyou.txt -o wifi_result.txt --status --status-timer=10 -v # 参数说明 # -a 0:字典模式 # -m 2500:WPA/WPA2哈希类型(对应hccapx文件) # wifi_handshake.hccapx:目标WiFi握手包hccapx文件 # /usr/share/wordlists/rockyou.txt:WiFi密码字典(建议使用专用WiFi字典如wifi.txt) # -o wifi_result.txt:破解结果(包含WiFi名称、BSSID、密码) # --status:启用状态自动更新 # --status-timer=10:每10秒更新一次破解状态(进度、速度等) # -v:详细输出

结果解读:破解成功后,wifi_result.txt中会显示类似“wifi_ssid:password”的内容,直接获取WiFi密码。

6. 会话管理(暂停与恢复破解)

场景:破解大型哈希文件(含1000个NTLM哈希),需中途暂停,后续恢复破解进度。

# 步骤1:启动带会话名的破解任务 hashcat -a 0 -m 1000 large_ntlm_hashes.txt /usr/share/wordlists/rockyou.txt -o large_ntlm_result.txt --session=ntlm_large -v # 步骤2:中途暂停破解(在另一个终端执行) hashcat --session=ntlm_large --force --quit  # 或直接按Ctrl+C(hashcat会自动保存会话) # 步骤3:恢复会话 hashcat --restore --session=ntlm_large -v # 参数说明 # --session=ntlm_large:定义会话名为“ntlm_large”(用于标识和恢复任务) # --restore:从指定会话恢复破解(自动读取会话保存的进度文件) # --quit:主动暂停会话(可选,Ctrl+C更便捷)

会话文件位置:默认会话文件保存在~/.hashcat/sessions/目录下,包含破解进度、已尝试密码数量等信息。

7. 结果管理(查看已破解/未破解哈希)

场景:破解完成后,筛选大型哈希文件中的已破解和未破解哈希。

# 查看已破解哈希(对比哈希文件与potfile) hashcat --show -m 1000 large_ntlm_hashes.txt -o cracked_ntlm.txt # 查看未破解哈希 hashcat --left -m 1000 large_ntlm_hashes.txt -o uncracked_ntlm.txt # 参数说明 # --show:显示已破解的哈希(格式:哈希:密码) # --left:显示未破解的哈希(仅输出哈希值) # -m 1000:指定哈希类型(需与破解时一致) # cracked_ntlm.txt:已破解哈希输出文件 # uncracked_ntlm.txt:未破解哈希输出文件

potfile说明:hashcat默认将破解记录保存在~/.hashcat/hashcat.potfile中,--show--left通过对比该文件筛选结果。

8. 性能测试(基准测试与设备选择)

场景:测试当前设备对NTLM哈希的破解速度,选择最优硬件(CPU/GPU)。

# 步骤1:查看系统支持的硬件设备 hashcat -I  # 列出所有可用的后端设备(CPU、GPU等),记录设备ID(如GPU设备ID为1) # 步骤2:对NTLM哈希进行基准测试(默认使用所有设备) hashcat -b -m 1000 -v # 步骤3:指定单个GPU设备进行测试(如设备ID=1) hashcat -b -m 1000 -d 1 -v # 参数说明 # -I:显示硬件设备信息(后端类型、设备ID、名称等) # -b:基准测试模式(测试指定哈希类型的破解速度) # -m 1000:测试NTLM哈希类型 # -d 1:指定使用设备ID=1的硬件(如独立显卡) # -v:详细输出测试结果(含每秒尝试密码数[H/s])

结果应用:根据测试结果选择速度最快的设备(通常GPU速度远高于CPU),后续破解时用-d 设备ID指定该设备。

9. 自定义字符集与复杂掩码破解

场景:破解已知格式为“2位大写字母+4位数字+1位特殊字符”的MD5哈希,需自定义字符集组合。

# 命令 hashcat -a 3 -m 0 target_hash.txt -1 ?u -2 ?d -3 ?s ?1?1?2?2?2?2?3 -o custom_charset_result.txt -v # 参数说明 # -1 ?u:自定义字符集1为大写字母(A-Z) # -2 ?d:自定义字符集2为数字(0-9) # -3 ?s:自定义字符集3为特殊字符(!@#等) # ?1?1?2?2?2?2?3:掩码规则(2位大写+4位数字+1位特殊字符) # 其他参数同前

10. 批量哈希文件破解

场景:破解包含多个不同类型哈希的文件(需提前确认所有哈希类型一致),如批量破解多个MD5哈希。

# 准备哈希文件(hashes.txt,每行一个哈希) echo "d41d8cd98f00b204e9800998ecf8427e" > hashes.txt echo "5f4dcc3b5aa765d61d8327deb882cf99" >> hashes.txt # 执行批量破解 hashcat -a 0 -m 0 hashes.txt /usr/share/wordlists/rockyou.txt -o batch_result.txt --remove # 参数说明 # --remove:破解成功后自动从原哈希文件中移除已破解项 # 其他参数同前

11. 规则生成与自定义规则破解

场景:生成100条随机规则并应用于字典破解,提升对未知密码格式的破解概率。

# 生成随机规则并保存到文件 hashcat -g 100 --generate-rules-seed 123 > custom_rules.rule # 使用自定义规则破解 hashcat -a 0 -m 1000 ntlm_hashes.txt /usr/share/wordlists/rockyou.txt -r custom_rules.rule -o custom_rule_result.txt -v # 参数说明 # -g 100:生成100条随机规则 # --generate-rules-seed 123:指定随机种子(保证规则可复现) # custom_rules.rule:自定义规则文件 # 其他参数同前

12. 脑功能(Brain)分布式破解

场景:多设备协同破解同一批哈希,避免重复计算(需多设备网络互通)。

# 设备1(服务器端)启动脑服务 hashcat --brain-server --brain-password mypass --session brain_session -v # 设备2(客户端)连接服务器 hashcat --brain-client --brain-host 192.168.1.100 --brain-port 13743 --brain-password mypass --session brain_session -a 0 -m 0 hashes.txt dict.txt -v # 参数说明 # --brain-server:启用脑服务器模式 # --brain-client:启用脑客户端模式 # --brain-host/--brain-port:服务器IP和端口 # --brain-password:脑服务认证密码 # 其他参数同前

适用场景:大规模哈希破解任务,多设备分工协作提升效率。

常见问题与注意事项

哈希类型识别:若不确定哈希类型,可先用hashid工具识别,再用-m指定类型,或让hashcat自动检测(不推荐,可能误判)。

字典准备:Kali默认字典路径为/usr/share/wordlists/,建议优先使用rockyou.txt(需解压:gunzip /usr/share/wordlists/rockyou.txt.gz)。

性能优化:GPU破解速度远高于CPU,建议安装对应显卡驱动(NVIDIA需安装CUDA,AMD需安装OpenCL);使用-O启用优化内核(限短密码)。

密码长度限制:启用优化内核(-O)时,部分哈希类型有密码长度限制(如NTLM限15位以内),长密码需禁用-O

法律风险:仅可对授权的哈希或自己的系统进行破解,未经授权的密码破解可能违反法律法规。

 

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章