No devices found/left
#1
I'm trying to gain significant speed with trying to crack my WIFI hash password. I'm using PMKID and I want to use my GPU instead of CPU only because I've read it's faster using GPU. When using the -d command at the beginning of my command to crack my hash for GPU I get "No device found/left". From what I've been reading that means my OpenCL isn't installed but I just installed it and indeed it is installed. Is my GPU not being recognized or am I not running the right command in the right format? I also read something with regards to the GPU not getting enough workload in order to actually use it. So I'm just stumped at the moment.

Computer specs:
Nvidia MX-150
Intel 7th Gen 8 series
Quad core
Nvidia drivers-390
OpenCL drivers installed

Thanks again in advance guys, your the best.
Reply
#2
Try hashcat -I to show OpenCL info. If there isn't any, then there is indeed something wrong with the driver install. You may also want to review https://hashcat.net/faq/wrongdriver to see if it can help you start from a new driver baseline.
~
Reply
#3
(01-25-2019, 07:08 AM)royce Wrote: Try hashcat -I to show OpenCL info. If there isn't any, then there is indeed something wrong with the driver install. You may also want to review https://hashcat.net/faq/wrongdriver to see if it can help you start from a new driver baseline.

Running the command shows in fact OpenCl is installed. When I run the command without -d it cracks fine.
Reply
#4
I think you are confusing something.

why do you need to use -d if you have only 1 GPU ?

if you want to enable and/or crack with your CPU, you need to use -D instead.
see this --help output snippet:
Code:
-d, --opencl-devices      | Str  | OpenCL devices to use, separated with commas      | -d 1
-D, --opencl-device-types | Str  | OpenCL device-types to use, separated with commas | -D 1

this means that with -d you select devices that are currently active/enabled, but you need to allow different device types with --opencl-device-types (or short -D) if you want to crack with different types of devices, like CPUs.

If you have only 1 GPU, hashcat will automatically enable/use that single GPU

CPUs are disabled by default and you need to use something like -D 1,2 to enable both GPUs and CPUs.

I think your -d parameter is either wrong or you didn't read --help carefully to understand what --opencl-device-types and --opencl-devices means and how they are related to each other (i.e. that you need to whitelist device types that are not enabled by default).

btw: there is one exception to this mechanism: i.e. whenever a system only has CPUs, there is no reason why hashcat should enable GPUs and therefore it will enable CPU devices in this specific case (if no GPUs, which are most of the time faster and the preferred choice, are present or correctly installed)
Reply
#5
(01-25-2019, 11:19 AM)philsmd Wrote: I think you are confusing something.

why do you need to use -d  if you have only 1 GPU ?

if you want to enable and/or crack with your CPU, you need to use -D instead.
see this --help output snippet:
Code:
-d, --opencl-devices      | Str  | OpenCL devices to use, separated with commas      | -d 1
-D, --opencl-device-types | Str  | OpenCL device-types to use, separated with commas | -D 1

this means that with -d you select devices that are currently active/enabled, but you need to allow different device types with --opencl-device-types (or short -D) if you want to crack with different types of devices, like CPUs.

If you have only 1 GPU, hashcat will automatically enable/use that single GPU

CPUs are disabled by default and you need to use something like -D 1,2 to enable both GPUs and CPUs.

I think your -d parameter is either wrong or you didn't read --help carefully to understand what  --opencl-device-types and --opencl-devices means and how they are related to each other (i.e. that you need to whitelist device types that are not enabled by default).

btw: there is one exception to this mechanism: i.e. whenever a system only has CPUs, there is no reason why hashcat should enable GPUs and therefore it will enable CPU devices in this specific case (if no GPUs, which are most of the time faster and the preferred choice, are present or correctly installed)

So how do I check how many GPUs I have then? How do I speak up the cracking process so it's not 445 years? Under "DeviceTypes" in the help section of hashcat it gives you the option to use CPU, GPU, etc. Maybe I typed the wrong command.

Edit: @philsmd, phil you are correct, I was using the wrong value. It should've been -D. I have another question. I've read there are slow hashes and fast hashes. How can I use a fast hash to crack hashes?
Reply
#6
Only way to speed up your cracking speed is by getting better hardware. The only other way to increase your workload is by using the optimized profiles (-O) and the heaviest workload (-w 4) which may cause your system to hang. Don't expect a massive increase but it may pump out a few extra 1000 hashes a second.

When you start hashcat it'll show what devices it has identified for use. By default hashcat selects your GPU(s) as seen below that my CPU is skipped.


OpenCL Platform #1: NVIDIA Corporation

======================================
* Device #1: GeForce GTX 1070, 2048/8192 MB allocatable, 15MCU

OpenCL Platform #2: Intel(R) Corporation
========================================
* Device #2: Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz, skipped.
* Device #3: Intel(R) HD Graphics 4000, skipped.


If it has loaded Optimizers it will list that further below the devices. For example:

Applicable optimizers:

* Zero-Byte
* Single-Hash
* Single-Salt
Reply
#7
(01-25-2019, 08:39 PM)slyexe Wrote: Only way to speed up your cracking speed is by getting better hardware. The only other way to increase your workload is by using the optimized profiles (-O) and the heaviest workload (-w 4) which may cause your system to hang. Don't expect a massive increase but it may pump out a few extra 1000 hashes a second.

When you start hashcat it'll show what devices it has identified for use. By default hashcat selects your GPU(s) as seen below that my CPU is skipped.


OpenCL Platform #1: NVIDIA Corporation

======================================
* Device #1: GeForce GTX 1070, 2048/8192 MB allocatable, 15MCU

OpenCL Platform #2: Intel(R) Corporation
========================================
* Device #2: Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz, skipped.
* Device #3: Intel(R) HD Graphics 4000, skipped.


If it has loaded Optimizers it will list that further below the devices. For example:

Applicable optimizers:

* Zero-Byte
* Single-Hash
* Single-Salt

Ok I gotcha, thanks for the clarification. So I'm aware that bruteforcing a PMKID is the best way to go about cracking it, am I correct? And if so what commands would I have to run to crack it with a heavy workload to max my GPU?
Reply
#8
Easiest solution is to look for keygens already made for the type of router you're attempting to attack first. Afterwards search default passwords to find common lengths used and the keyspace they use(alpha numeric, special chars, etc.) Once you have some filters made you can separate your PMKID's based on router brands and run individual attacks. This is my process anyway, can usually crack most routers here within 5 minutes @ 350K h/s. Otherwise, using simple wordlist with best64.rule usually covers the rest which were missed. 

The trick is to eliminate as much as you can before running an attack, the smaller the keyspace and more accurate it is the faster your results. 

here's a good place to start:
https://hashcat.net/forum/thread-6170.html
Reply
#9
(01-26-2019, 04:11 AM)slyexe Wrote: Easiest solution is to look for keygens already made for the type of router you're attempting to attack first. Afterwards search default passwords to find common lengths used and the keyspace they use(alpha numeric, special chars, etc.) Once you have some filters made you can separate your PMKID's based on router brands and run individual attacks. This is my process anyway, can usually crack most routers here within 5 minutes @ 350K h/s. Otherwise, using simple wordlist with best64.rule usually covers the rest which were missed. 

The trick is to eliminate as much as you can before running an attack, the smaller the keyspace and more accurate it is the faster your results. 

here's a good place to start:
https://hashcat.net/forum/thread-6170.html

Yeah this will help a whole lot, thanks bro. What sucks is if you don't know the brand of the router your attacking, your back to square one.
Reply
#10
Uh....every router brand can be identified by its mac address. Use a mac vendor lookup:
https://www2.macvendors.com/
https://www.wireshark.org/tools/oui-lookup.html
Reply