4 ms·
My first port of call would be to perform a dictionary attack against the hash. Then I'd move on to brute forcing. If there's a cryptographic attack then that w
by user24 15y ago
My first port of call would be to perform a dictionary attack against the hash. Then I'd move on to brute forcing. If there's a cryptographic attack then that would be best, but I don't know enough about crc32 to say whether that's possible.
Would you like some help writing dictionary/brute force code, or did you have in mind an attack against the algorithm itself?
- NZT73 15y agoTo be honest, any help at all would be HUGELY appreciated. Ideally, I would think an attack against the algorithm itself would be better, but what ever is most efficient would do :) I have seen things like this : http://www.nirsoft.net/articles/pst_password_bug.html http://www.nirsoft.net/articles/pst_password_bug.html written, and it makes it sound so very straight forward.
- user24 15y agoIt looks like there are a variety of attacks against crc32 - eg http://skilinium.com/blog/downloads/CRC.pdf http://skilinium.com/blog/downloads/CRC.pdf but that's all a bit above my head, and moreover is designed for attacking very long inputs, eg binary files. If you know it's a password, then something like this pseudocode should run fast enough: var crc32 = 'theHashGoesHere'; var wordsArray = readFile('someLargeDictionary.txt'); for(word in wordsArray) { if(crc32(word)==crc32) { print 'The password is '+word; break; } } Of course that will only work if the hash is a single word that exactly matches one of the words in your dictionary. You can get a bit cleverer by doing things like this: var crc32 = 'theHashGoesHere'; var wordsArray = readFile('someLargeDictionary.txt'); for(word in wordsArray) { if(crc32(word)==crc32) { print 'The password is '+word; break; } if(crc32(lowercase(word)) == crc32) { print 'The password is '+lowercase(word); break; } if(crc32(uppercase(word)) == crc32) { print 'The password is '+uppercase(word); break; } for(num in [00-99]) { if(crc32(word+num) == crc32) { print 'The password is '+word+num; } } } and so on.