hashtopolis / server

Hashtopolis - distributed password cracking with Hashcat
GNU General Public License v3.0
1.45k stars 222 forks source link

Allow option to not run Benchmark #459

Closed recrudesce closed 6 years ago

recrudesce commented 6 years ago

Not a bug, more a feature request.

Sometimes I experience issues when benchmarking hashes, most recently for hashtype 9700, where no matter what the hashes are (they are valid hashes), I get a HCSTAT: Failed to parse hashes using the 'native hashcat' format. error when it tries to benchmark, therefore preventing the job from actually running. Cracking the same hashes via the command line works fine, so the issue isn't the hashes it seems. This is using latest versions of Hashtopolis, Python agent, and Hashcat binaries.

It'd be nice to have a "Don't perform benchmark" option, therefore a job could be configured to just run the crack, rather than work out how fast it'll be or how long it'll take.

Thanks :+1:

s3inlc commented 6 years ago

Ok, but this maybe seems to be a problem of hashcat parsing the hashes when doing benchmarks. Have you tried running the benchmark command (with --progress-only) directly in the command line, does it happen too then? If you want to force it to do no benchmark, you have two options. If it doesn't matter if the task is just executed on one agent you can set it to be a small task. Or if you still want it to be split up into some chunks you can use the static chunking feature (either set a fixed chunk length, or a fixed number of chunks for the whole task). In both cases then a benchmark won't be required anymore and therefore is skipped.

recrudesce commented 6 years ago

It works perfectly fine if I set it to be a Small Task. I only have 1 agent. Also works fine with the command line you provided

This is what I get via Hashtopolis agent:

{'action': 'getTask', 'token': 'FhYS0nxZTM'}
Starting new HTTP connection (1): 10.35.3.125
http://10.35.3.125:80 "POST /api/server.php HTTP/1.1" 200 340
b'{"action":"getTask","response":"SUCCESS","taskId":13,"attackcmd":"#HL# -r d3adhob0.rule rockyou.txt --username","cmdpars":" -p ] --hash-type=9700 -O -w 4 -D 2","hashlistId":14,"bench":15,"statustimer":5,"files":["rockyou.txt","d3adhob0.rule"],"crackerId":"3","benchType":"run","hashlistAlias":"#HL#","keyspace":"14344384","usePrince":false}'
Got task with id: 13
{'action': 'downloadBinary', 'token': 'FhYS0nxZTM', 'type': 'cracker', 'binaryVersionId': '3'}
Starting new HTTP connection (1): 10.35.3.125
http://10.35.3.125:80 "POST /api/server.php HTTP/1.1" 200 147
b'{"action":"downloadBinary","response":"SUCCESS","url":"https:\\/\\/hashcat.net\\/files\\/hashcat-4.2.0.7z","name":"hashcat","executable":"hashcat.bin"}'
{'action': 'getChunk', 'token': 'FhYS0nxZTM', 'taskId': 13}
Starting new HTTP connection (1): 10.35.3.125
http://10.35.3.125:80 "POST /api/server.php HTTP/1.1" 200 63
b'{"action":"getChunk","response":"SUCCESS","status":"benchmark"}'
Benchmark task...
CALL: ./hashcat64.bin --machine-readable --quiet --runtime=15 --restore-disable --potfile-disable --session=hashtopolis ../../hashlists/14 -r ../../files/d3adhob0.rule ../../files/rockyou.txt --username  -p ] --hash-type=9700 -O -w 4 -D 2 -o ../../hashlists/14.out
started benchmark
{'action': 'clientError', 'token': 'FhYS0nxZTM', 'taskId': 13, 'message': 'No hashes loaded.'}
Starting new HTTP connection (1): 10.35.3.125
http://10.35.3.125:80 "POST /api/server.php HTTP/1.1" 200 45
b'{"action":"clientError","response":"SUCCESS"}'
HCSTAT: Failed to parse hashes using the 'native hashcat' format.
HCSTAT: Failed to parse hashes using the 'native hashcat' format.
HCSTAT: Failed to parse hashes using the 'native hashcat' format.
HCSTAT: Failed to parse hashes using the 'native hashcat' format.

On command line:

user@pc:~/working/input$ sudo /opt/hashcat/hashcat64.bin -w 4 -O -m 9700 ~/working/input/1.txt -o ~/working/output/1.cracked /data/dictionaries/SecLists/Passwords/rockyou.txt -r /data/rules/Hob0Rules/d3adhob0.rule --potfile-disable --progress-only
hashcat (v4.2.0) starting in progress-only mode...

OpenCL Platform #1: NVIDIA Corporation
======================================
* Device #1: GeForce GTX 1080 Ti, 2794/11176 MB allocatable, 28MCU
* Device #2: GeForce GTX 1080 Ti, 2794/11178 MB allocatable, 28MCU

OpenCL Platform #2: Intel(R) Corporation
========================================
* Device #3: Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz, skipped.

Progress.Dev.#1..: 458752
Progress.Dev.#2..: 458752
Runtime.Dev.#1...: 320044.66ms
Runtime.Dev.#2...: 308874.65ms

Started: Mon Sep  3 09:54:26 2018
Stopped: Mon Sep  3 09:54:34 2018
s3inlc commented 6 years ago

Ok interesting. Can you please check if the hashlist which is downloaded by the agent is completely correct (in file hashlists/14). Because before the 'failed to parse' error there is the client error mentioning 'no hashes loaded' which makes me think that maybe there was something wrong on the hashlist download.

If the download looks fine, coul you please go into the directory of the cracker (crackers/3) and then run:

./hashcat64.bin --runtime=15 --restore-disable --potfile-disable --session=hashtopolis ../../hashlists/14 -r ../../files/d3adhob0.rule ../../files/rockyou.txt --username  -p ] --hash-type=9700 -O -w 4 -D 2 -o ../../hashlists/14.out

Hopefully this would give us then some more output and information what exactly is happening.

recrudesce commented 6 years ago

Hashlist is downloaded fine.

(note: had to mod the paths to the files in the command)

user@pc:/opt/hashcat$ sudo ./hashcat64.bin --runtime=15 --restore-disable --potfile-disable --session=hashtopolis /opt/htpagent/hashlists/14 -r /data/rules/Hob0Rules/d3adhob0.rule /data/dictionaries/SecLists/Passwords/rockyou.txt --username  -p ] --hash-type=9700 -O -w 4 -D 2 -o ~/working/output/14.out
hashcat (v4.2.0) starting...

OpenCL Platform #1: NVIDIA Corporation
======================================
* Device #1: GeForce GTX 1080 Ti, 2794/11176 MB allocatable, 28MCU
* Device #2: GeForce GTX 1080 Ti, 2794/11178 MB allocatable, 28MCU

OpenCL Platform #2: Intel(R) Corporation
========================================
* Device #3: Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz, skipped.

Failed to parse hashes using the 'native hashcat' format.
Failed to parse hashes using the 'native hashcat' format.
Failed to parse hashes using the 'native hashcat' format.
No hashes loaded.

Started: Mon Sep  3 10:36:41 2018
Stopped: Mon Sep  3 10:36:41 2018
s3inlc commented 6 years ago

Does it change anything if you switch to the other benchmark type? Replace --runtime=15 with --progress-only

recrudesce commented 6 years ago
user@pc:/opt/hashcat$ sudo ./hashcat64.bin --progress-only --restore-disable --potfile-disable --session=hashtopolis /opt/htpagent/hashlists/14 -r /data/rules/Hob0Rules/d3adhob0.rule /data/dictionaries/SecLists/Passwords/rockyou.txt --username  -p ] --hash-type=9700 -O -w 4 -D 2 -o ~/working/output/14.out
hashcat (v4.2.0) starting in progress-only mode...

OpenCL Platform #1: NVIDIA Corporation
======================================
* Device #1: GeForce GTX 1080 Ti, 2794/11176 MB allocatable, 28MCU
* Device #2: GeForce GTX 1080 Ti, 2794/11178 MB allocatable, 28MCU

OpenCL Platform #2: Intel(R) Corporation
========================================
* Device #3: Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz, skipped.

Failed to parse hashes using the 'native hashcat' format.
Failed to parse hashes using the 'native hashcat' format.
Failed to parse hashes using the 'native hashcat' format.
No hashes loaded.

Started: Mon Sep  3 10:45:43 2018
Stopped: Mon Sep  3 10:45:43 2018
recrudesce commented 6 years ago

Getting rid of --username in any of your above commands fixes the issue, which is strange because there are no usernames in the hash list. They're exactly as per hashcat's example hashes.

So maybe a hashcat issue rather than yours ?

s3inlc commented 6 years ago

Hmm yeah, in that case it might be a hashcat issue. I'm not aware about how the --username flag should be exactly used, but as far as I quickly read it, yes it should be fine. Maybe they changed the usage of this flag at some point and it's not necessary anymore? But I guess the best would be to ask in the hashcat forum, irc or create an issue.

recrudesce commented 6 years ago

Will do, thanks !

s3inlc commented 6 years ago

I just saw the issue you created on hashcat. The --username definitely does not come from Hashtopolis, you must've put it in yourself when creating the task?

recrudesce commented 6 years ago

My bad, let me edit.

s3inlc commented 6 years ago

Thanks :)

recrudesce commented 6 years ago

OK, so it turns out the --username entry was added by a user manually for the job (seems the original hash list they created had filename hashes before the password hashes), then they changed to just a hashlist but didn't edit the job. So issue isn't with Hashtopolis, it's with Hashcat.