Correct calculation of the final keyspace
#1
Hello,

I would like to know how exactly to calculate the "final keyspace".
Unfortunately, I can't get any further with the information in the wiki.
The wiki tells me, if the number of base-words < sum of all GPU-power, then the final keyspace is reached.

GPU-power for each device is calculated with S * T * N * V
I am testing hashcat with a Quadro P1000 (mobile) and an i7-8750H with UHD Graphics 630.

For the P1000 I get the following info:
Code:
* Device #1: Quadro P1000, 3385/4096 MB, 4MCU

During execution:
Speed.#1.........:    1413 H/s (6.27ms) @ Accel:8 Loops:128 Thr:1024 Vec:1
that tells me:
S = 4 (MCU)
T = 256 (because it's Nvidia)
N = 8 (Accel)
V = 1 (Vec)

For the i7 I get:
Code:
* Device #4: Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz, 32565/65195 MB (8149 MB allocatable), 12MCU

During execution:
Speed.#4.........:      467 H/s (11.19ms) @ Accel:512 Loops:1024 Thr:1 Vec:4
S = 12 (MCU)
T = ?
N = 512
V = 4

For the UHD Graphics I get:
Code:
* Device #3: Intel(R) UHD Graphics 630, 12992/26078 MB (2047 MB allocatable), 24MCU

During execution:
Speed.#3.........:      88 H/s (6.25ms) @ Accel:64 Loops:64 Thr:16 Vec:1
S = 24
T = ?
N = 64
V = 1

For a test I run the following commands:
Code:
.\hashcat.exe -a 3 -m 9600 ?l?l?l?l --keyspace
17576
hashcat.exe -a 3 -m 9600 hashfile.hash ?l?l?l?l --status --status-timer=5 --restore-disable --potfile-disable --logfile-disablet --outfile -D 1,2 password.txt
For me this results in the size of the base loop corresponding to the maximum number of 17576 base words.

But how do I get the remaining number of words in the base loop during the attack?


During execution, between 427,008 and 436,235 tested passwords, I get the message "Approaching final keyspace - workload adjusted".

Can someone help me to complete my calculation?
Am I correct in the assumptions I have made so far?

Thanks for reply!
Reply
#2
maybe this helps in understanding when this event is triggered: https://github.com/hashcat/hashcat/blob/...#L121-L131

The "final keyspace" is basically just the last "flush" of the remaining "words" (not a full load as before/normally, usually)
Reply