hashcat 需要哪种 OpenCL 运行时?CPU 与 GPU 驱动怎么选

hashcat 本身不附带 OpenCL 运行时,它通过 OpenCL 调用 CPU、GPU、APU 等设备。因此能否跑起来,取决于你是否按硬件品牌装对了对应的运行时或驱动:AMD GPU 在 Linux 上需要 “AMD Radeon Software for Linux” 加 ROCm,在 Windows 上需要 “AMD Adrenalin Edition” 加 “AMD HIP SDK”;Intel 和 AMD 的 CPU 需要 “Intel CPU Runtime for OpenCL” 或 PoCL;Intel GPU 需要 “Intel Graphics Compute Runtime”(即 NEO);NVIDIA GPU 则走 “NVIDIA CUDA Toolkit”,不依赖 OpenCL 运行时。装好后用 hashcat -I 查看设备是否被识别,再用 -b 做基准测试确认能实际运算。

OpenCL 在 hashcat 里扮演什么角色

hashcat 的定位是“多平台(CPU、GPU、APU 等,一切带 OpenCL 运行时的设备)”。这句话点明了机制:hashcat 把计算任务下发给 OpenCL 运行时,由运行时再去驱动具体硬件。所以:

  • OpenCL 运行时是硬件厂商提供的中间层,不是 hashcat 自带的组件;
  • 同一台机器上可以同时存在多个运行时,hashcat 会枚举出所有可用设备;
  • 如果某个设备没有对应运行时,hashcat 就看不到它,自然也用不上。

这也解释了为什么“装了 hashcat 却提示没有设备”——问题通常出在运行时,而不是 hashcat 本身。

按硬件选运行时

硬件 需要的组件 说明
AMD GPU(Linux) “AMD Radeon Software for Linux” + “ROCm” 两者都要,缺一不可
AMD GPU(Windows) “AMD Adrenalin Edition” + “AMD HIP SDK” 驱动与 SDK 配合
Intel / AMD CPU “Intel CPU Runtime for OpenCL” 或 PoCL 二选一即可
Intel GPU “Intel Graphics Compute Runtime”(NEO) 面向 Intel 核显/独显
NVIDIA GPU “NVIDIA CUDA Toolkit” 走 CUDA 路径,不依赖 OpenCL 运行时

几个容易踩的点:

  • AMD 平台要装两样东西。只装显卡驱动(Adrenalin 或 Radeon Software)往往不够,还需要 HIP SDK 或 ROCm 提供计算运行时。
  • CPU 也能参与运算。Intel 和 AMD 的 CPU 都可以通过 “Intel CPU Runtime for OpenCL” 或 PoCL 被 hashcat 使用,适合没有独显或想混合使用的场景。
  • NVIDIA 用户不必纠结 OpenCL。按资料,NVIDIA GPU 的要求是 CUDA Toolkit,走的是 CUDA 路线。
  • PoCL 是 CPU 场景的替代选项。当不方便安装厂商运行时,PoCL 可以作为 CPU 侧的 OpenCL 实现。

装好后怎么验证

安装完成后,按下面两步确认设备真的可用:

  1. 列出设备:运行 hashcat -I。预期结果是列出被识别到的平台和设备(如 CPU、各 GPU 型号)。如果列表为空或缺少某块卡,说明对应运行时没装好或版本不匹配。
  2. 跑基准测试:运行 hashcat -b。预期结果是输出各算法在当前设备上的速度。能跑出数字,说明运行时链路是通的;报错或直接退出,则回到上一步排查。

-I 解决“有没有被看到”,-b 解决“能不能真的算”。两者都通过,才算环境就绪。

常见卡点

  • 只装了驱动,没装计算运行时:AMD 平台最常见,补上 ROCm 或 HIP SDK。
  • 多设备混用:hashcat 支持“在同一系统中使用多种设备类型”,但前提是每种设备各自的运行时都装齐。
  • 版本不匹配:运行时与驱动版本差异可能导致设备枚举失败,尽量使用厂商推荐的配套版本。
  • 误以为 hashcat 自带 OpenCL:它只负责调用,运行时要自己准备。

把运行时按硬件装对,再用 -I 和 -b 验证,hashcat 就能正常识别并使用你的 CPU 或 GPU 了。

hashcat.net
World's fastest and most advanced password recovery utility