hashcat on OS X – getting it going!

So I’ve been out of the GPU cracking game for a while as I’ve been running a MacBook on OS X.

After doing a little digging tonight and reading up on the latest version of hashcat (v3.00) it became apparent to me that hashcat now runs on OS X platforms. At last! Thanks to @hashcat (atom) for making the software open source!

For those of you wanting to get it going on OS X (soon to be macOS) here’s what you have to do.

First get the latest source code available:

1
2
3
4
5
6
7
8
MacBook:Downloads phillips321$ git clone https://github.com/hashcat/hashcat.git
Cloning into 'hashcat'...
remote: Counting objects: 11330, done.
remote: Compressing objects: 100% (151/151), done.
remote: Total 11330 (delta 107), reused 0 (delta 0), pack-reused 11179
Receiving objects: 100% (11330/11330), 13.86 MiB | 6.47 MiB/s, done.
Resolving deltas: 100% (9355/9355), done.
Checking connectivity... done.

Then we need to download the latest OpenCL:

1
2
3
4
5
6
7
8
MacBook:Downloads phillips321$ mkdir -p hashcat/deps
MacBook:Downloads phillips321$ git clone https://github.com/KhronosGroup/OpenCL-Headers.git hashcat/deps/OpenCL
Cloning into 'hashcat/deps/OpenCL'...
remote: Counting objects: 243, done.
remote: Total 243 (delta 0), reused 0 (delta 0), pack-reused 243
Receiving objects: 100% (243/243), 193.58 KiB | 0 bytes/s, done.
Resolving deltas: 100% (158/158), done.
Checking connectivity... done.

Now simply build the code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
MacBook:Downloads phillips321$ cd hashcat/
MacBook:hashcat phillips321$ make
gcc -D_POSIX -pipe -W -Wall -std=c99 -Iinclude/ -IOpenCL/ -Ideps/OpenCL-Headers/ -O2 -c -o obj/ext_OpenCL.NATIVE.o src/ext_OpenCL.c
gcc -D_POSIX -pipe -W -Wall -std=c99 -Iinclude/ -IOpenCL/ -Ideps/OpenCL-Headers/ -O2 -c -o obj/shared.NATIVE.o src/shared.c
gcc -D_POSIX -pipe -W -Wall -std=c99 -Iinclude/ -IOpenCL/ -Ideps/OpenCL-Headers/ -O2 -c -o obj/rp_kernel_on_cpu.NATIVE.o src/rp_kernel_on_cpu.c
src/ext_OpenCL.c:400:5: warning: implicitly declaring library function 'snprintf' with type 'int (char *, unsigned long, const
      char *, ...)'
[-Wimplicit-function-declaration]
    snprintf (options_update, len, "%s -cl-opt-disable", options);
    ^
src/ext_OpenCL.c:400:5: note: include the header <stdio.h> or explicitly provide a declaration for 'snprintf'
1 warning generated.
gcc -D_POSIX -pipe -W -Wall -std=c99 -Iinclude/ -IOpenCL/ -Ideps/OpenCL-Headers/ -O2    -o hashcat src/hashcat.c obj/ext_OpenCL.NATIVE.o obj/shared.NATIVE.o obj/rp_kernel_on_cpu.NATIVE.o -lpthread  -DCOMPTIME=1468103529 -DVERSION_TAG="v3.00-52-g3fa2d10" -DINSTALL_FOLDER="/usr/local/bin" -DSHARED_FOLDER="/usr/local/share/hashcat" -DDOCUMENT_FOLDER="/usr/local/share/doc/hashcat"
src/hashcat.c:13820:9: warning: unused variable 'need_nvapi' [-Wunused-variable]
    int need_nvapi   = 0;
        ^
src/hashcat.c:13822:9: warning: unused variable 'need_xnvctrl' [-Wunused-variable]
    int need_xnvctrl = 0;
        ^
2 warnings generated.

Finally onto the test:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
MacBook:hashcat phillips321$ ./example0.sh
hashcat (v3.00-52-g3fa2d10) starting...
OpenCL Platform #1: Apple              
=========================
- Device #1: Intel(R) Core(TM) i7-3635QM CPU @ 2.40GHz, skipped
- Device #2: HD Graphics 4000, 384/1536 MB allocatable, 16MCU
- Device #3: GeForce GT 650M, 256/1024 MB allocatable, 2MCU
Hashes: 6494 hashes; 6494 unique digests, 1 unique salts
Bitmaps: 16 bits, 65536 entries, 0x0000ffff mask, 262144 bytes, 5/13 rotates
Applicable Optimizers:
* Zero-Byte
* Precompute-Init
* Precompute-Merkle-Demgard
* Meet-In-The-Middle
* Early-Skip
* Not-Salted
* Not-Iterated
* Single-Salt
* Raw-Hash
- Device #2: Kernel m00000_a1.cf940205.kernel not found in cache! Building may take a while...
- Device #2: Kernel markov_le.cf940205.kernel not found in cache! Building may take a while...
- Device #3: Kernel m00000_a1.b0228507.kernel not found in cache! Building may take a while...
- Device #3: Kernel markov_le.b0228507.kernel not found in cache! Building may take a while...
Generated dictionary stats for example.dict: 1080240 bytes, 129988 words, 136302297088 keyspace          
ccda5674a0ad1937a46a6cae69c674bb:chan12345678
c80693e7f09211327d9f5c1a0ac0439b:sike2005                
[s]tatus [p]ause [r]esume [b]ypass [c]heckpoint [q]uit => q
Session.Name...: hashcat
Status.........: Aborted
Input.Left.....: Mask (?a?a?a?a) [4]
Input.Right....: File (example.dict)
Hash.Target....: File (example0.hash)
Hash.Type......: MD5
Time.Started...: Sat Jul  9 23:33:04 2016 (2 secs)
Time.Estimated.: Sat Jul  9 23:46:33 2016 (13 mins, 21 secs)
Speed.Dev.#2...: 93005.2 kH/s (11.92ms)
Speed.Dev.#3...: 76644.6 kH/s (8.69ms)
Speed.Dev.#*...:   169.6 MH/s
Recovered......: 91/6494 (1.40%) Digests, 0/1 (0.00%) Salts
Recovered/Time.: CUR:N/A,N/A,N/A AVG:2120.22,127213.42,3053122.00 (Min,Hour,Day)
Progress.......: 403491840/136302297088 (0.30%)
Rejected.......: 0/403491840 (0.00%)
Restore.Point..: 0/129988 (0.00%)

Started: Sat Jul  9 23:33:04 2016
Stopped: Sat Jul  9 23:33:13 2016

One thing to note is that there are 2 GPUs and a single CPU, we can enable them all using the -D flag but in all honesty the CPU and Intel HD Graphics don’t really cut the mustard!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
MacBook:hashcat phillips321$ ./hashcat -b -D 1,2,3
hashcat (v3.00-52-g3fa2d10) starting in benchmark-mode...

OpenCL Platform #1: Apple
=========================
- Device #1: Intel(R) Core(TM) i7-3635QM CPU @ 2.40GHz, 2048/8192 MB allocatable, 8MCU
- Device #2: HD Graphics 4000, 384/1536 MB allocatable, 16MCU
- Device #3: GeForce GT 650M, 256/1024 MB allocatable, 2MCU

Hashtype: MD4

Speed.Dev.#1.:   361.5 MH/s (23.15ms)
Speed.Dev.#2.:   314.3 MH/s (95.07ms)
Speed.Dev.#3.:  1743.1 GH/s (0.11ms)
Speed.Dev.#*.:  1743.8 GH/s

Hashtype: MD5

Speed.Dev.#1.:   222.2 MH/s (37.70ms)
Speed.Dev.#2.:   184.0 MH/s (95.63ms)
Speed.Dev.#3.:  1275.2 GH/s (0.11ms)
Speed.Dev.#*.:  1275.6 GH/s

Hashtype: Half MD5

Speed.Dev.#1.:   164.0 MH/s (51.06ms)
Speed.Dev.#2.:   123.4 MH/s (95.28ms)
Speed.Dev.#3.:   230.3 MH/s (104.45ms)
Speed.Dev.#*.:   517.7 MH/s

Hashtype: SHA1

Speed.Dev.#1.:   113.7 MH/s (73.72ms)
Speed.Dev.#2.: 63056.2 kH/s (97.53ms)
Speed.Dev.#3.:   238.9 GH/s (0.11ms)
Speed.Dev.#*.:   239.1 GH/s

Hashtype: SHA256

Speed.Dev.#1.: 35210.8 kH/s (100.66ms)
Speed.Dev.#2.: 24164.3 kH/s (95.31ms)
Speed.Dev.#3.: 57223.5 MH/s (0.11ms)
Speed.Dev.#*.: 57282.9 MH/s

Hashtype: SHA384

Speed.Dev.#1.: 11995.0 kH/s (96.22ms)
Speed.Dev.#2.:  7470.3 kH/s (97.95ms)
Speed.Dev.#3.: 76641.1 MH/s (0.12ms)
Speed.Dev.#*.: 76660.6 MH/s

Screen Shot 2016-07-09 at 23.36.35

About phillips321

Penetration Tester and Linux fanboy!
This entry was posted in Uncategorized and tagged , , , , , . Bookmark the permalink.

Leave a Reply