使用Hashcat破解带盐哈希时如何修复OpenCL构建失败错误
修复Mac上Hashcat的OpenCL内核构建失败问题
我之前在2018款15英寸MacBook Pro上碰到过一模一样的问题,当时折腾了好几个小时才搞定,给你几个亲测有效的解决办法:
方法1:指定用CPU或Intel核显运行Hashcat
你的AMD显卡(设备3)出现了内核构建兼容问题,可以先绕开它,改用CPU或者Intel核显来运行:
- 强制使用CPU:执行Hashcat命令时加上
-d 1参数,比如:hashcat -d 1 -m 00010 your_hash:salt wordlist.txt - 改用Intel核显:加上
-d 2参数,比如:hashcat -d 2 -m 00010 your_hash:salt wordlist.txt
方法2:升级Hashcat到最新版本
你当前用的是6.1.1版本,这个版本对MacOS(尤其是Big Sur及以后版本)的AMD显卡OpenCL支持有不少bug,升级到最新版大概率能解决:
- 如果是用Homebrew安装的,直接在终端运行:
brew update && brew upgrade hashcat - 升级完成后再尝试你的破解命令,新版本修复了很多Mac平台的兼容性问题
方法3:调整AMD显卡的内存分配上限
你的AMD显卡默认可分配内存是1024MB,可能不足以构建某些复杂内核,尝试放开内存限制:
- 在终端先执行这条命令设置环境变量:
export GPU_MAX_ALLOC_PERCENT=100 - 然后再运行你的Hashcat破解命令,这会让Hashcat使用显卡的全部4GB可用内存
方法4:更新MacOS系统及显卡驱动
MacOS的自动更新有时候会漏掉显卡相关的补丁,手动检查更新能解决很多兼容问题:
- 打开「系统设置」→「通用」→「软件更新」,检查是否有系统或显卡驱动的更新
- 如果你的MacOS版本比较旧(比如Catalina),可以考虑升级到Monterey或Ventura(记得提前备份数据),新版本对AMD显卡的OpenCL支持更好
方法5:替换有问题的内核文件
如果以上方法都没用,可以手动替换那个失败的内核文件:
- 找到Hashcat的内核目录:
/usr/local/Cellar/hashcat/[你的版本号]/share/hashcat/OpenCL/ - 从Hashcat的官方源码仓库下载最新的
m00010_a0-pure.cl文件,替换掉本地的旧文件 - 替换完成后重新运行Hashcat命令
内容的提问来源于stack exchange,提问作者Xuanwen Zhang




