Hash值破解工具Hashcat使用
Hash值破解工具Hashcat使用
Hashcat介绍
HashCat系列软件拥有十分灵活的破解方式,可以满足绝大多数的破解需求。
Hashcat系列软件是比较牛逼的密码破解软件,系列软件包含Hashcat、oclHashcat;还有一个单独新出的oclRausscrack。其区别为Hashcat只支持cpu破解;oclHashcat和oclGausscrack则支持gpu加速。oclHashcat则分为AMD版和NIVDA版。
1.指定HASH类型
在HashCat中-m 参数可以指定要破解的HASH类型,运行hashcat主程序加上--help参数
在 hash modes:
中可以看到各种HASH类型的代号
不同版本的HashCat所支持的hash类型有所不同,如果没有指定--hash-type参数,那么程序默认为MD5类型。
2.指定破解模式
在HashCat中-a 参数可以可以指定破解模式,软件一共支持5种破解模式,分别为
0 Straight(字典破解) 1 Combination(组合破解) 3 Brute-force(掩码暴力破解) 6 Hybrid dict + mask(混合字典+掩码) 7 Hybrid mask + dict(混合掩码+字典)
3.使用
两个很重要的参数,前面已经介绍
-m (--hash-type=NUM) #指定hash种类
-a (--attack-mode=NUM) #指定破解模式
字典模式
-a 0:Straight
格式:
可以指定多个字典文件
1 | hashcat -a 0 -m xx <hashfile> <zidian1> <zidian2>... |
例子:
1 | hashcat -a 0 -m 0 test.txt /root/wordlist.txt |
掩码暴力破解模式
-a 3:Brute-force
格式:
1 | hashcat -a 3 -m xx <HASH文件> <掩码> |
例子:
1 | hashcat -a 3 -m 100 test.txt ?d?d?d?d?d?d?d?d |
注意:?d?d?d?d?d?d?d?d 对应8位纯数字组合; ?l?l?l?l?d?d?d?d 对应前4位小写字母,后4位数字组合
掩码的设置
Hashcat默认的掩码一共有9种:?l表示a-z,?u表示A-Z,?d表示0-9,?a表示键盘上所有的特殊字符,?s表示键盘上所有的可见字符,?h表示8bit 0xc0-0xff的十六进制,?D表示8bit的德语字符,?F表示8bit的法语字符,?R表示8bit的俄语字符。
如图所示:
下面是常用的掩码:
?l = abcdefghijklmnopqrstuvwxyz
?u = ABCDEFGHIJKLMNOPQRSTUVWXYZ
?d = 0123456789
?s = !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
?a = ?l?u?d?s
如果我要用掩码表示小写+数字怎么办呢?这就需要用到自定义字符集这个参数了。软件支持用户最多定义4组字符集,分别用来表示,在掩码中用?1、?2、?3、?4来表示
1 2 3 4 | --custom-charset1 [chars] --custom-charset2 [chars] --custom-charset3 [chars] --custom-charset4 [chars] |
比如设置 --custom-charset1=?l?d 那么就表示 ?1代表小写字母与数字组合,那么8位随机的数字与小写字母组合可以写成 ?1?1?1?1?1?1?1?1,完整的例子:
1 | hashcat test.txt -a 3 -m 0 --custom-charset1=?l?d ?1?1?1?1?1?1?1?1 |
如果要破解8位的小写+数字,那么需要设置自定义字符集1为--custom-charset1 ?l?d,已知密码的第一位为数字,长度为8位,后几位为大写+小写:
1 | hashcat test.txt -a 3 -m 0 --custom-charset2=?l?d ?d?1?1?1?1?1?1?1 |
再比如设置 --custom-charset2=xiao106347 那么就表示 ?2 代表字符串由 x i a o 1 0 6 3 4 7 组成的所有可能组合,完整例子:
1 | hashcat test.txt -a 3 -m 0 --custom-charset2=xiao106347 ?2?2?2?2?2?2?2?2 |
长度设置
对于已知长度的密码,可以使用固定长度的掩码进行破解。比如要破解11位数字,就可以这样写掩码?d?d?d?d?d?d?d?d?d?d?d。
对于想要破解一些未知长度的密码,希望软件在一定长度范围内进行尝试的,可以使用--increment参数,并且使用--increment-min ?定义最短长度,使用--increment-max ?定义最大长度。比如要尝试6-8位小写字母,可以这样写
1 | --increment --increment-min 6 --increment-max 8 ?l?l?l?l?l?l?l?l |
例子:破解8-11位数字+小写
1 | hashcat -m 100 -a 3 text.txt --increment --increment-min 8 --increment-max 11 --custom-charset1 ?l?d ?1?1?1?1?1?1?1?1?1?1?1 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具