3

I'm trying to run hashcat on a MacBook Pro.

Running hashcat -I to check the devices' informations yields:

hashcat (v6.2.5-38-g8b61f60e8) starting in backend information mode

OpenCL Info:
============

OpenCL Platform ID #1
  Vendor..: Apple
  Name....: Apple
  Version.: OpenCL 1.2 (Aug 11 2021 00:46:43)

  Backend Device ID #1
    Type...........: CPU
    Vendor.ID......: 8
    Vendor.........: Intel
    Name...........: Intel(R) Core(TM) i7-8850H CPU @ 2.60GHz
    Version........: OpenCL 1.2 
    Processor(s)...: 12
    Clock..........: 2600
    Memory.Total...: 16384 MB (limited to 2048 MB allocatable in one block)
    Memory.Free....: 8160 MB
    OpenCL.Version.: OpenCL C 1.2 
    Driver.Version.: 1.1

  Backend Device ID #2
    Type...........: GPU
    Vendor.ID......: 8
    Vendor.........: Intel Inc.
    Name...........: Intel(R) UHD Graphics 630
    Version........: OpenCL 1.2 
    Processor(s)...: 24
    Clock..........: 1150
    Memory.Total...: 1536 MB (limited to 192 MB allocatable in one block)
    Memory.Free....: 704 MB
    OpenCL.Version.: OpenCL C 1.2 
    Driver.Version.: 1.2(Oct 12 2021 18:42:39)

  Backend Device ID #3
    Type...........: GPU
    Vendor.ID......: 1
    Vendor.........: AMD
    Name...........: AMD Radeon Pro 560X Compute Engine
    Version........: OpenCL 1.2 
    Processor(s)...: 16
    Clock..........: 300
    Memory.Total...: 4096 MB (limited to 1024 MB allocatable in one block)
    Memory.Free....: 3968 MB
    OpenCL.Version.: OpenCL C 1.2 
    Driver.Version.: 1.2 (Oct 12 2021 18:37:05)

Hashcat is correctly recognizing all three devices (1 CPU + 2 GPUs) and showing that the latest version of the OpenCL driver is installed. If I run it in benchmark mode, it correctly displays all three devices as well:

hashcat -b
hashcat (v6.2.5-38-g8b61f60e8) starting in benchmark mode

Benchmarking uses hand-optimized kernel code by default.
You can use it in your cracking session by setting the -O option.
Note: Using optimized kernel code limits the maximum supported password length.
To disable the optimized kernel code in benchmark mode, use the -w option.

* Device #2: Apple's OpenCL drivers (GPU) are known to be unreliable.
             You have been warned.

* Device #3: Apple's OpenCL drivers (GPU) are known to be unreliable.
             You have been warned.

OpenCL API (OpenCL 1.2 (Aug 11 2021 00:46:43)) - Platform #1 [Apple]
====================================================================
* Device #1: Intel(R) Core(TM) i7-8850H CPU @ 2.60GHz, 8160/16384 MB (2048 MB allocatable), 12MCU
* Device #2: Intel(R) UHD Graphics 630, 704/1536 MB (192 MB allocatable), 24MCU
* Device #3: AMD Radeon Pro 560X Compute Engine, 3968/4096 MB (1024 MB allocatable), 16MCU

Benchmark relevant options:
===========================
* --opencl-device-types=1,2,3
* --optimized-kernel-enable

However, it only makes use of the CPU. If I try to force it to use device #2, (using the option -D 2) it displays the following message:

* Device #2: Not enough allocatable device memory for this attack.

And if I try to force it to use the second GPU (device #3), it prompts:

No devices found/left.

Even if the device was correctly recognized before.

What could be causing this problem?

1 Answers1

2

Try running with -d 3 -D 2 flags.

  1. -D 2 will force the hashcat to only look for GPUs. (-D is for specifying device type)

  2. -d 3 will force it to use the Radeon Pro 560X Compute Engine. (-d is for specifying the backend device number)

I didn't see that they already tried these options separately, but I was having a discussion on Discord with somebody having same issue, and it was resolved when both the flags were used together.

schroeder
  • 123,438
  • 55
  • 284
  • 319