AMD Radeon R9 M370X not being used, Mac
#1
Hey all,

I am fairly new to this game, but I've been trying to get my GPU to be recognized by hashcat.  As far as I understand it, the AMD Radeon R9 M370X supports openCL, but hashcat is not using it.

As far as the drivers go, they are whatever came with my Mac, and without upgrading the OS, it looks like I can't update the drivers.  Here's what I'm working with, dated, I know:

OSX: 10.11.6
MacBook Pro (Retina, 15-inch, Mid 2015)
Processor 2.8 GHz Intel Core i7
Memory 16 GB 1600 MHz DDR3
Graphics Intel Iris Pro 1536 MB

It sees the Intel guy, but not this one

AMD Radeon R9 M370X:

  Chipset Model: AMD Radeon R9 M370X
  Type: GPU
  Bus: PCIe
  PCIe Lane Width: x8
  VRAM (Total): 2048 MB
  Vendor: ATI (0x1002)
  Device ID: 0x6821
  Revision ID: 0x0083
  ROM Revision: 113-C5670E-945
  gMux Version: 4.0.20 [3.2.8]
  EFI Driver Version: 01.00.945


Not sure if there is anything I can do?  I'd love to get more power as I'm currently in a password breaking contest at school and at a miserable 218 kH/s I doubt I'll win.

Thanks for any help!
Reply
#2
the numbers always depend on the type of hashes. for instance 218 kH/s for a bcrypt hash with cost factor $09$ would be quite impressive Wink
218 kH/s doesn't mean anything without any info about the hash type (and parameters, cost factors if applicable)

Code:
hashcat --version
(must say hashcat 6.0, see https://github.com/hashcat/hashcat/releases/)

Code:
clinfo

Code:
hashcat -I
Reply
#3
Ah yes! That would have been helpful!

Its the code 500 or Cisoco-IOS $1$ MD5 hash.

full command: hashcat -m 500 -a 3 hashfile.txt maskfile.txt -O

My version is v6.0.0-4-g5628317d - fresh install today

clinfo didn't work. Not sure if that is in my $PATH. I did a find for it from root using find / -name clinfo 2> /dev/null with no results.

hashcat -I

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

OpenCL Platform ID #1
Vendor..: Apple
Name....: Apple
Version.: OpenCL 1.2 (Jun 15 2018 20:52:09)

Backend Device ID #1
Type...........: CPU
Vendor.ID......: 4
Vendor.........: Intel
Name...........: Intel(R) Core(TM) i7-4980HQ CPU @ 2.80GHz
Version........: OpenCL 1.2
Processor(s)...: 8
Clock..........: 2800
Memory.Total...: 16384 MB (limited to 4096 MB allocatable in one block)
Memory.Free....: 16320 MB
OpenCL.Version.: OpenCL C 1.2
Driver.Version.: 1.1

Backend Device ID #2 (Alias: #3)
Type...........: GPU
Vendor.ID......: 4
Vendor.........: Intel
Name...........: Iris Pro
Version........: OpenCL 1.2
Processor(s)...: 40
Clock..........: 1300
Memory.Total...: 1536 MB (limited to 384 MB allocatable in one block)
Memory.Free....: 1472 MB
OpenCL.Version.: OpenCL C 1.2
Driver.Version.: 1.2(Jun 22 2018 00:28:45)

Backend Device ID #3 (Alias: #2)
Type...........: GPU
Vendor.ID......: 1
Vendor.........: AMD
Name...........: AMD Radeon R9 M370X Compute Engine
Version........: OpenCL 1.2
Processor(s)...: 10
Clock..........: 300
Memory.Total...: 2048 MB (limited to 512 MB allocatable in one block)
Memory.Free....: 1984 MB
OpenCL.Version.: OpenCL C 1.2
Driver.Version.: 1.2 (Jun 22 2018 00:26:19)
Reply
#4
try
Code:
hashcat -d 3 -m 500 -b

for clinfo (install homebrew first):
Code:
brew install clinfo

BTW: I think the alias problem is related to https://github.com/hashcat/hashcat/issues/2460 (#2 and #3 GPUs shouldn't be aliases, because different models of GPUs)
Reply
#5
Ah, That first command did bypass Device #2 and did the benchmark on #3

Matthews-MacBook-Pro-2:hashcat MattChamplin$ hashcat -d 3 -m 500 -b
hashcat (v6.0.0-4-g5628317d) 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.

OpenCL API (OpenCL 1.2 (Jun 15 2018 20:52:09)) - Platform #1 [Apple]
====================================================================
* Device #1: Intel(R) Core(TM) i7-4980HQ CPU @ 2.80GHz, skipped
* Device #2: Iris Pro, skipped
* Device #3: AMD Radeon R9 M370X Compute Engine, 1984/2048 MB (512 MB allocatable), 10MCU

Benchmark relevant options:
===========================
* --backend-devices=3
* --optimized-kernel-enable

Hashmode: 500 - md5crypt, MD5 (Unix), Cisco-IOS $1$ (MD5) (Iterations: 1000)

Speed.#3.........: 214.0 kH/s (49.40ms) @ Accel:256 Loops:250 Thr:64 Vec:1

Started: Mon Jun 22 02:15:29 2020
Stopped: Mon Jun 22 02:15:36 2020

So yeah. Looks like it's related to that tread you posted. However, I'm not sure exactly what it's suggesting? Should I use --force or not?
Reply
#6
To tell the truth, this is actually quite a new problem (discovered after the recent 6.0.0. release) and the development team unfortunately has no such devices to debug with...

The github issue tries to find a solution, but until now the suggested solutions do NOT seem very clever or at least they do not target the root of the problem. Maybe you could contribute to this issue and try to find what exactly is "different" between these 2 devices (if it really is not the PCIe slot etc, which normally indicates that a device is different from another device on most other platforms and operating systems, see https://github.com/hashcat/hashcat/blob/....c#L40-L44 and https://github.com/hashcat/hashcat/issues/2083 , https://github.com/hashcat/hashcat/pull/2086 , https://github.com/hashcat/hashcat/issues/2460)

Maybe we can distinguish the devices by number of processors (but the problem could be that some drivers could report slightly more cores/processors and that would make the comparison fail on other platforms or with other drivers):
Code:
if (src->device_processors != dst->device_processors) return false;

Code:
make clean
git pull
git checkout 5628317
# for base64 command you might need this on macOS:
# brew install coreutils
echo ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kLmMgYi9zcmMvYmFja2VuZC5jCmluZGV4IDdmNzk4NzlmLi41MjM3ZWMwNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQuYworKysgYi9zcmMvYmFja2VuZC5jCkBAIC00Nyw2ICs0NywxMCBAQCBzdGF0aWMgYm9vbCBpc19zYW1lX2RldmljZSAoY29uc3QgaGNfZGV2aWNlX3BhcmFtX3QgKnNyYywgY29uc3QgaGNfZGV2aWNlX3BhcmFtXwogCiAgIGlmIChzcmMtPm9wZW5jbF9kZXZpY2VfdHlwZSAhPSBkc3QtPm9wZW5jbF9kZXZpY2VfdHlwZSkgcmV0dXJuIGZhbHNlOwogCisgIC8vIG1hY09TIHN0aWxsIGNhbid0IGRpc3Rpbmd1aXNoIHRoZSBkZXZpY2VzIGJ5IFBDSWUgYnVzOgorCisgIGlmIChzcmMtPmRldmljZV9wcm9jZXNzb3JzICE9IGRzdC0+ZGV2aWNlX3Byb2Nlc3NvcnMpIHJldHVybiBmYWxzZTsKKwogICByZXR1cm4gdHJ1ZTsKIH0KIAo= | base64 -d > alias_fix.diff
git apply alias_fix.diff
make

./hashcat -m 500 -b
Reply