Speed Up Work for Large Guess Queue
#1
Hey All,

Hopefully this hasn't been asked before.  I'm resorting to asking the forum after looking for similar questions and tinkering for several weeks myself.

I'm wondering if there's any way to speed up processing large numbers in a Guess Queue.  I've resorted to generating a large number of mask entries that enumerate case combinations and custom substitutions.  This allows me to execute a command like this:

.\hashcat.exe -a 3 -m 16300 "%WALLET_HASH%" "!MASK_FILE!" --session "!SESSION_NAME!" --potfile-path "!POTFILE_PATH!" -w 3 --increment --increment-min 10 --increment-max 11 --optimized-kernel-enable --backend-ignore-opencl

Where !MASK_FILE! points to a file that has a similar format as (...'s are included to skip over permutations):

?s?d,aaaa?1?1?1?1?1?1?1?1?1?1?1?1
?s?d,Aaaa?1?1?1?1?1?1?1?1?1?1?1?1
?s?d,aaAa?1?1?1?1?1?1?1?1?1?1?1?1
...
?s?d,AAAa?1?1?1?1?1?1?1?1?1?1?1?1
?s?d,AAAA?1?1?1?1?1?1?1?1?1?1?1?1
...
?s?d,@aaa?1?1?1?1?1?1?1?1?1?1?1?1 
?s?d,a@aa?1?1?1?1?1?1?1?1?1?1?1?1  
...
?s?d,@@Aa?1?1?1?1?1?1?1?1?1?1?1?1 
?s?d,@@@A?1?1?1?1?1?1?1?1?1?1?1?1  

Mainly I've resorted to this to combine a few attack vectors and maximize the performance of my hardware (happy to go into this if anyone is curious).  

My question is that I get attacks with the following status:

Session..........: ****-word_length_4
Status...........: Running
Hash.Mode........: 16300 (Ethereum Pre-Sale Wallet, PBKDF2-HMAC-SHA256)
Hash.Target......: $ethereum$w*******************************************
Time.Started.....: Wed Sep 24 09:39:01 2025 (8 secs)
Time.Estimated...: Wed Sep 24 10:00:46 2025 (21 mins, 37 secs)
Kernel.Feature...: Pure Kernel (password length 0-256 bytes)
Guess.Mask.......: aaaa?1?1?1?1?1?1 [10]
Guess.Charset....: -1 ?s?d, -2 N/A, -3 N/A, -4 N/A, -5 N/A, -6 N/A, -7 N/A, -8 N/A
Guess.Queue......: 1/345 (0.29%)
Speed.#01........:  4789.1 kH/s (97.53ms) @ Accel:88 Loops:1000 Thr:64 Vec:1
Recovered........: 0/1 (0.00%) Digests (total), 0/1 (0.00%) Digests (new)
Progress.........: 105927680/6321363049 (1.68%)
Rejected.........: 0/105927680 (0.00%)
Restore.Point....: 105927680/6321363049 (1.68%)
Restore.Sub.#01..: Salt:0 Amplifier:0-1 Iteration:0-1000
Candidate.Engine.: Device Generator
Candidates.#01...: aaaa?./<77 -> aaaa$~^]>>
Hardware.Mon.#01.: Temp: 59c Fan: 65% Util: 99% Core:2692MHz Mem:13801MHz Bus:16

This example has 345 lines in the mask file and most (in this case) will have enough work to consume my GPU for about 35 minutes PER entry which is good.  Some larger word length files are pushing close to 10,000 entries and keep the GPU busy for 3-10 seconds then Hashcat takes a few seconds to move to the next line.  A nifty feature, but slow when auto tune is running between each one (attempted to disable using  --backend-ignore-openL to no avail).  

My question is how can I speed this up?  I haven't retooled my automation to run multiple instances of Hashcat yet, but that's about the only option I haven't tied.  

Transforms would be an option to cut down on the number of mask items, but I'm dealing with case combinations AND custom character substitutions (such as Leet and similar), and I can't remember off hand if it wasn't possible mixing rules and masks forcing a pre-rendr of if my hash rate went from 5000 kH/s down to <1 kH/s.

Anyway, thanks in advance for the brain power on this.  Love the tooling and what the Hashcat community has provided thus far, but I know I've avoided addressing this issue as my early attempts to crack this presale wallet have begun to dry up.  

Cheers,
Robby
Reply
#2
For the 35-minute long mask file, there probably isn't a way to speed it up much but it may help to use `-S` as Hashcat isn't very good at fixed prefixes. For the 10,000 mask file, the only thing you can do is split the mask file up and run each instance on a separate GPU but there's not much you can do with just a single GPU. Older versions of Hashcat were significantly faster at autotune but I worry about that introducing bugs, so probably best not to backdate
Reply