hashcat的使用及相关

本文介绍了Hashcat这一密码破解工具的使用方法,包括字典破解、组合字符串破解、暴力破解等,并详细解释了如何利用mask攻击提高破解效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

hashcat的使用及其相关

原因是我在玩hackthissite realistic的时候,遇到了一道题目是破解hash,看论坛上说是爆破就可以,但是我爆破了两个小时也没有效果,看了有人说是hash破解最快的方式是彩虹表,但是看看了彩虹表大多是100多个g,想想我就放弃了,最后是因为我要解密的hash是md4,我当做md5解,hashidentifier可以用来检验hash的类型

hashcat 官方wiki
我hashcat的版本

C:\Users\kele\Desktop
> hashcat64 --version
v4.0.1

hashcat 有四种基本的破解方式:
1. 字典破解
2. 组合字符串破解
3. 暴力破解(弃用)–mask attack(掩码破解)
4. 混合破解
还有基于规则的破解方式,还有切换大小写的不过可以归为规则破解

字典破解

-a 0 -m type hashfile dictionary1 dictionary2
貌似还可以用gpu加速

组合字符串破解

假如字典里面的内容是这样的
11
22
33

那么组合出来的就是:
1111
1122
1133
2222
2233
3333

指定左侧或者右侧的字符

     -j,  --rule-left=RULE              Single rule applied to each word on the left dictionary

    -k,  --rule-right=RULE             Single rule applied to each word on the right dictionary

举个栗子:
字典1:

    11
    22

字典2:

    33
    44

commands:

    -j '$-'
    -k '!$'

上面的$代理字典里面的单词,-j '$-'表示在单词右侧加一个--k '$!'表示在单词左侧加一个!
所以产生的组合是:

    11-33!
    22-33!
    11-44!
    22-44!

Mask Attack

这个东东,官方给出来的说明比较简单,就是说mask attack 比brute-force强在减少了密码表的数量,至于减少密码数量的算法没有过多介绍(基于hcmask文件),只是简单的提了一句通过一些常规的密码形式来减少密码数量,举个栗子:”Kele1997”,暴力破解的时候会枚举所有的可能,etc.. 但是mask attack的时候程序就会尝试只有首字母大写,因为大多数密码很少会在第二或者是第三的位置上有大写,通过这些规则来减少密码的候选数量

官方说mask attack比起brute-force来说没有任何缺点,因为mask attack 可以产生所有brute-force的密码

Charset 字符集

内置字符集
?l = abcdefghijklmnopqrstuvwxyz
?u = ABCDEFGHIJKLMNOPQRSTUVWXYZ
?d = 0123456789
?h = 0123456789abcdef
?H = 0123456789ABCDEF
?s = «space»!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
?a = ?l?u?d?s
?b = 0x00 - 0xff

程序目录里面有charsets包含各种各样诡异的字符,加入你的密码中有的话,你可以使用这些文件

hashcat 有四个参数用于指定自定义的字符集
–custom-charset1=CS
–custom-charset2=CS
–custom-charset3=CS
–custom-charset4=CS
这四个参数可以用缩写 -1, -2, -3 和 -4来代替. 你可以指定自定义的字符集来进行破解

The following command sets the first custom charset (-1) to russian language specific chars:
-1 charsets/special/Russian/ru_ISO-8859-5-special.hcchr

密码长度增量

我们不用指定密码的固定长度,我们可以通过指定–increment 这个参数来

 -i, --increment                |      | Enable mask increment mode                           |
     --increment-min            | Num  | Start mask incrementing at X                         | --increment-min=4
     --increment-max            | Num  | Stop mask incrementing at X                   

Hashcat mask files

-a 3 hash.txt mask_file.hcmask 加载hcmask文件,使用文件中的mask来爆破
hashcat 自带了几个hcmask文件,放在程序目录mask/下面

16进制字符

--hex-charset 后面的字符串是16进行

混合破解

生成的密码是有字典和暴力破解生成的字符组合而成的
举个栗子:example.dict

    password
    hello

hashcat64 -a 6 example.dict ?d?d?d?d
?d?d?d?d表示四位长的整数
所以最后生成的密码候选序列是:

    password0000
    password0001
    password0002
    .
    .
    .
    password9999

hashcat64 -a 6 ?d?d?d?d example.dict
结果:

0000password
0001password
.
.
.
9999password

使用规则模拟混合破解 (Using rules to emulate Hybrid attack 没法子翻译了)

使用maskprocessor利用规则产生暴力破解所需要的规则,然后生成的规则文件可以使用hashcat -r进行加载和字典混合成成密码候选
举个栗子:example.dict

hello
password

hash -o bf.rule '$?d $?d $?d $?d

生成的规则是这个样子的:bf.rule

$0 $0 $0 $0
$0 $0 $0 $1
$0 $0 $0 $2
$0 $0 $0 $3
$0 $0 $0 $4
.
.
.
$9 $9 $9 $9

然后使用hashcat -a 6 example.dict -r bf.rule -m 。。。。
最后生成的是这个样子:

    hello0 0 0 0
    password0 0 0 0
    hello0 0 0 1
    password0 0 0 1
    hello0 0 0 2
    password0 0 0 2
    .
    .
    .
    hello9 9 9 9
    password9 9 9 9

over

<think>好的,我现在需要帮助用户解决Hashcat中与OpenCL相关的错误问题。首先,我需要回顾用户提供的引用内容,看看是否有相关的解决方案。引用[1]提到安装显卡驱动和OpenCL运行时,验证环境,更新Hashcat,检查OpenCL平台。引用[4]则提到了一个具体的错误信息,关于未知的CPU 'generic',这可能与编译器或驱动版本有关。 首先,我应该按照引用[1]中的步骤来建议用户。安装正确的显卡驱动和OpenCL运行时是基础步骤,因为如果驱动缺失或版本不兼容,Hashcat就无法正确使用GPU。接下来,验证OpenCL环境是否正常工作,比如使用clinfo命令,这可以帮助用户确认OpenCL是否正确安装。 然后,检查Hashcat的版本,旧版本可能存在兼容性问题,所以更新到最新版本可能解决一些问题。引用[2]提到Hashcat开源后支持更多平台,但用户需要正确编译内核,特别是对于不同的操作系统。但用户的问题似乎是在Ubuntu 22.04上,所以可能需要关注Linux下的配置。 引用[3]提到Hashcat生成OpenCL内核代码的路径和文件,如果这些文件缺失或损坏,可能导致构建失败。用户需要检查这些文件是否存在,或者重新安装Hashcat以确保文件完整。 对于引用[4]中的具体错误,错误信息指出编译器无法识别目标CPU 'generic',这可能是因为Clang版本的问题。需要确认系统安装的Clang版本是否支持当前的OpenCL实现。可能需要安装特定版本的Clang或者调整编译选项。 另外,用户可能在运行Hashcat时没有正确指定平台或设备。使用--force参数可能绕过某些检查,但这不是根本解决办法。建议用户使用--opencl-platforms参数选择正确的平台,比如AMD或NVIDIA的。 总结步骤应该是:先安装驱动和运行时,验证环境,更新Hashcat,检查文件完整性,处理特定错误如Clang问题,最后调整运行参数。同时,如果问题依然存在,可能需要更深入的调试,如查看构建日志或重新编译Hashcat。 还需要提醒用户注意不同硬件厂商的驱动差异,比如AMD和NVIDIA可能需要不同的处理步骤。此外,查看错误日志中的详细输出,可以帮助定位具体问题,比如内核代码中的错误或缺失的文件路径。 最后,生成相关问题,帮助用户进一步排查可能的其他问题,比如性能优化或不同攻击模式的配置。</think>### Hashcat OpenCL错误解决方案 #### 1. **安装显卡驱动与OpenCL运行时** - **AMD显卡**:需安装`amdgpu-pro`驱动及`rocm-opencl-runtime` ```bash sudo apt install rocm-opencl-runtime ``` - **NVIDIA显卡**:需安装`nvidia-opencl-dev`包 ```bash sudo apt install nvidia-opencl-dev ``` - 验证驱动安装: ```bash clinfo | grep "Device Name" # 确认识别到GPU设备[^1] ``` #### 2. **修复OpenCL内核编译错误** - **错误示例**:`error: unknown target CPU 'generic'` 可能因Clang版本与OpenCL不兼容导致。需安装`clang-14`或更高版本: ```bash sudo apt install clang-14 sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-14 100 ``` - **内核文件完整性检查**: 若报错涉及`shared.cl`等文件,尝试重新生成或修复OpenCL内核文件: ```bash sudo hashcat -I # 强制重建内核缓存[^3] ``` #### 3. **更新Hashcat至最新版本** - 通过Git仓库获取最新代码: ```bash git clone https://github.com/hashcat/hashcat.git cd hashcat && make && sudo make install ``` - **关键修复**:新版可能已解决特定OpenCL平台兼容性问题[^2]。 #### 4. **指定OpenCL平台与设备** - 若存在多GPU平台(如集成显卡+独立显卡),需手动指定: ```bash hashcat --force --opencl-platforms 1 -m 0 example.hash # 选择第二个平台(索引从0开始) ``` - 添加`--force`参数可跳过部分环境检查,但需谨慎使用[^4]。 #### 5. **调试与日志分析** - 启用详细日志定位问题: ```bash hashcat -d 3 --logfile debug.log example.hash # 输出详细设备日志 ``` - **关键日志字段**: - `Kernel build failed`:查看关联的`.cl`文件路径 - `CL_BUILD_PROGRAM_FAILURE`:检查OpenCL运行时版本与驱动匹配性 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值