10-06-2016, 03:43 AM
I'm wanting to utilize my GPU with hashcat to crack some hashes that are a variation of lookup2/lookup8/Jenkins(not quite sure if the name, it was the version by Bob Jenkins prior to SpookyHash). I've got this working in Rust and I think I've ported it correctly to OpenCL, I'm having trouble setting up the rest for Hashcat though..
I've referenced the RAR5 implementation and browsed other algorithms to try make sense of what's going on. My ported code aside, I can provide a hash and hardcode a match against it in the CL file for COMPARE_M. It's a 64-bit value that I split into two u32 in parse_hash function and for the compare method.
What I'm not sure about is how to work on the input from the dictionary, I see pws[gid].pw_len; and pws[gid].i[0]; used in other files assuming that's it? I've got an nvidia GPU so the other thread that mentions enabling printf() doesn't appear to work which leaves me with a blackbox for what's going on in this file. If one of the dictionary values was "hello world" would pws[gid].i[0] reference "h" as 0x68?
I've noticed some weird results in trial and error testing where some caching might be involved, how can I avoid the caching? I am using the current command: hashcat -a 0 -m 99000 'f5023ded0a75ed99' test_pd2.dict --potfile-disable
. The hash example "f5023ded0a75ed99" is "hello" in plain text,
As the algorithm is a variation it's rather specific to the hashes used by the game Payday 2. It might not be of use to the community but I'd be happy to contribute documentation from my learning notes/experience to help others implementing algorithms in future. I believe this is the last hurdle for me to sort out to get the algorithm working.
I've referenced the RAR5 implementation and browsed other algorithms to try make sense of what's going on. My ported code aside, I can provide a hash and hardcode a match against it in the CL file for COMPARE_M. It's a 64-bit value that I split into two u32 in parse_hash function and for the compare method.
What I'm not sure about is how to work on the input from the dictionary, I see pws[gid].pw_len; and pws[gid].i[0]; used in other files assuming that's it? I've got an nvidia GPU so the other thread that mentions enabling printf() doesn't appear to work which leaves me with a blackbox for what's going on in this file. If one of the dictionary values was "hello world" would pws[gid].i[0] reference "h" as 0x68?
I've noticed some weird results in trial and error testing where some caching might be involved, how can I avoid the caching? I am using the current command: hashcat -a 0 -m 99000 'f5023ded0a75ed99' test_pd2.dict --potfile-disable
. The hash example "f5023ded0a75ed99" is "hello" in plain text,
As the algorithm is a variation it's rather specific to the hashes used by the game Payday 2. It might not be of use to the community but I'd be happy to contribute documentation from my learning notes/experience to help others implementing algorithms in future. I believe this is the last hurdle for me to sort out to get the algorithm working.