Thoughts and questions on creation of a 'generic' MD5 hash set format (to handle 'all' of them)
I have been busy with 'real work' (damn kids want food every day, i guess), so have not done a lot with john for a while.
However, I have been thinking about how best to feed john some of the many md5 hash types (families). I
propose something like this:
Password 4turtles
Salts either ttzzz or i a (i space a)
uid:md5($p.$s5)ttzzzf879de3ea2c872243bf38ff482fecb7f (pw=4turtles salt=ttzzz)
uid:md5($s5.$p)ttzzzb5944fc539d959a300ac9896bb98bada (pw=4turtles salt=ttzzz)
uid:md5($s5.$p.$s5)ttzzz9f0367a67426e852a08b54e0d25b2f99 (pw=4turtles salt=ttzzz)
uid:md5(md5($p).$s3)i a2abca28714f40edb09a639f555e63098 (pw=4turtles salt=i a)
uid:md5(md5($p))d894b3efe537e7c180c71129b7a5221b (pw=4turtles)
uid:md5(md5(md5($p)))5ede6d1ca68d4c589c29084857cf0584 (pw=4turtles)
uid:md5($p)32ec7dad341b379d0b9103e45e7d1438 (pw=4turtles)
(note the last one is simply 'raw' MD5)
What are people's thoughts about this 'format'? Then john could simply have a -format=md5-generic. I
would think that john could be coded to handle this pretty easy (the parsing is trivial, since all you parse
is md5 ( ) $p and $sLen value.It could even be 'optimized' by hard coding many of the 'common' known types,
and then building a simple parser to handle ones we do not recognise the signature for, so that 'new' fomat
may not get all the low level 'tweeks', but should still be pretty damn fast.
I 'believe' that ONLY 1 type of signature would be possible in a file at a time. The format would probably
simply use the first 'valid' md5(...) signature, set itself up to procees 'that' type, and then only load
lines from the file with that signature. That is much like what happens today, when there are multiple
types mixed in the passwd file. The first 'type' is what is used. Note, we might have to 'add' a command
option to allow the user to 'force' which type. So, he could call with -format=md5-generic
-md5-type=md5(md5($p.$s6)) and get only those types processed, even if the first valid md5-generic
seen was not md5(md5($p.$s6))
(Continue reading)