[MacPorts] #68483: hashcat @6.2.5_0: "No devices found/left" message on Apple M1 Max chip
MacPorts
noreply at macports.org
Mon Oct 16 01:38:46 UTC 2023
#68483: hashcat @6.2.5_0: "No devices found/left" message on Apple M1 Max chip
--------------------+---------------------------
Reporter: JDLH | Owner: gaming-hacker
Type: defect | Status: assigned
Priority: Normal | Milestone:
Component: ports | Version: 2.8.1
Keywords: | Port: hashcat
--------------------+---------------------------
hashcat is a tool designed to run on GPUs, not CPUs. It has a range of
code to detect available GPUs. It appears to be unable to use the GPU of
the Apple M1 Max chip on my mac.
**To reproduce**: Perform any crack attempt, e.g. the one described in
their [https://github.com/hashcat/hashcat/blob/master/example0.sh
example0.sh]:
{{{
% hashcat -m 0 -t 32 -a 7 /opt/local/share/doc/hashcat/example0.hash
'?a?a?a?a' /opt/local/share/doc/hashcat/example.dict
}}}
**Observed behaviour**:
{{{
% hashcat -m 0 -t 32 -a 7 /opt/local/share/doc/hashcat/example0.hash
'?a?a?a?a' /opt/local/share/doc/hashcat/example.dict
hashcat (v6.2.5) starting
No devices found/left.
Started: Sun Oct 15 18:21:43 2023
Stopped: Sun Oct 15 18:21:43 2023
}}}
The message "No devices found/left" seems to say that hashcat was unable
to find the M1 Max GPU, so gave up.
**Expected behaviour**:
No error message, "No devices found/left".
Hashcat successfully cracks the example password.
**Discussion**:
My Mac is a MacBookPro18,2, with an Apple M1 Max chip having 10 cores (8
performance and 2 efficiency).
This is what Hashcat detects for my GPUs:
{{{
% hashcat -I
hashcat (v6.2.5) starting in backend information mode
OpenCL Info:
============
OpenCL Platform ID #1
Vendor..: Apple
Name....: Apple
Version.: OpenCL 1.2 (Aug 17 2023 05:46:52)
Backend Device ID #1
Type...........: GPU
Vendor.ID......: 2
Vendor.........: Apple
Name...........: Apple M1 Max
Version........: OpenCL 1.2
Processor(s)...: 32
Clock..........: 1000
Memory.Total...: 49152 MB (limited to 4608 MB allocatable in one
block)
Memory.Free....: 24512 MB
OpenCL.Version.: OpenCL C 1.2
Driver.Version.: 1.2 1.0
}}}
The `-D 2` option apparently forces hashcat to choose a GPU over a CPU to
use for its work. When I include that option, I get a runtime error:
{{{
% hashcat -D 2 -m 0 -t 32 -a 7 /opt/local/share/doc/hashcat/example0.hash
'?a?a?a?a' /opt/local/share/doc/hashcat/example.dict
hashcat (v6.2.5) starting
* Device #1: Apple's OpenCL drivers (GPU) are known to be unreliable.
You have been warned.
OpenCL API (OpenCL 1.2 (Aug 17 2023 05:46:52)) - Platform #1 [Apple]
====================================================================
* Device #1: Apple M1 Max, 24512/49152 MB (4608 MB allocatable), 32MCU
Minimum password length supported by kernel: 0
Maximum password length supported by kernel: 256
Dictionary cache built:
* Filename..: /opt/local/share/doc/hashcat/example.dict
* Passwords.: 128416
* Bytes.....: 1069601
* Keyspace..: 128416
* Runtime...: 0 secs
Hashes: 6494 digests; 6494 unique digests, 1 unique salts
Bitmaps: 16 bits, 65536 entries, 0x0000ffff mask, 262144 bytes, 5/13
rotates
Optimizers applied:
* Zero-Byte
* Early-Skip
* Not-Salted
* Not-Iterated
* Single-Salt
* Raw-Hash
ATTENTION! Pure (unoptimized) backend kernels selected.
Pure kernels can crack longer passwords, but drastically reduce
performance.
If you want to switch to optimized kernels, append -O to your commandline.
See the above message to find out about the exact limits.
Watchdog: Hardware monitoring interface not found on your system.
Watchdog: Temperature abort trigger disabled.
Initializing backend runtime for device #1. Please be
patient...UNSUPPORTED (log once): buildComputeProgram: cl2Metal failed
clBuildProgram(): CL_BUILD_PROGRAM_FAILURE
Compilation failed:
program_source:7:10: fatal error: 'inc_vendor.h' file not found
#include "inc_vendor.h"
^~~~~~~~~~~~~~
* Device #1: Kernel /opt/local/share/hashcat/OpenCL/shared.cl build
failed.
Started: Sun Oct 15 18:30:21 2023
Stopped: Sun Oct 15 18:30:25 2023
}}}
Adding the `-O` option does not change the end result: failure, with the
same message.
The
[https://hashcat.net/wiki/doku.php?id=frequently_asked_questions#installation
Hashcat project's installation FAQ] mentions Windows and Linux, but not
macOS. It mentions OpenCL, AMD, and nVidia, but not Apple or Apple's
[https://developer.apple.com/documentation/metal/ Metal framework]. Their
[https://hashcat.net/wiki/doku.php?id=frequently_asked_questions#how_can_i_make_sure_that_my_gpu_is_supported
Supported GPUs FAQ] similarly does not mention Apple or Apple Silicon or
M1. It is interesting that the error message does mention "metal",
however.
--
Ticket URL: <https://trac.macports.org/ticket/68483>
MacPorts <https://www.macports.org/>
Ports system for macOS
More information about the macports-tickets
mailing list