|
Message-ID: <2247152B629C4849B9D4549E14A6CDDD@ath64dual> Date: Fri, 4 Sep 2009 07:52:31 -0500 From: "JimF" <jfoug@....net> To: <john-users@...ts.openwall.com> Subject: Re: OSC_fmt patch now obsolete - will delete unless advised otherwise. >I wrote a little format file a while ago (on wiki, called OSC_fmt) that >attempts to crack a variant of an MD5 password that looks like: > md5(2-byte plaintext salt + plaintext key) > eg. md5('99' + william1) = 545471039e2daea8d6c337ee6adffcee > >As your contribution handles this format effectively (format 4 >md5($p.$s) ), my patch is obsolete AFAIK. Yes is it format 4, but it is md5($s.$p) and it does handle commerce hashes well. >Thanks for the MD5 work too! You are welcome. I am still working on it, speeding it up and to allow it to handle more hashes. I am adding more primative functions, and then add other 'base' hashes, and will get the 'expression parser' code started. I now actually have raw-md5 working faster in the md5_gen(0) format, than it does in the md5-raw format (for my core2 system, which does SSE2 fast). As for the 'other' formats, I am not sure what to do about them. It might be better to have formats some how 'call into' the generic module, thus allowing them to continue to work with the files as they were originally formatted. For your commerce mode, you have this format listed: {"$OSC$a2$14f194bdf3a1c50d61e3427d0f77544c","justin"}, {"$OSC$49$372788bad6617f2083f9c07695ee2229","eiffel"}, So, what might happen, is to simply have some way of allowing this format to pass off the information to the generic format (to actually 'do' the work). Thus osc could call into gen using: the format of: md5_gen(4)14f194bdf3a1c50d61e3427d0f77544c$a2 md5_gen(4)372788bad6617f2083f9c07695ee2229$49 for the 2 lines above. But the output in john.pot would still end up being: $OSC$a2$14f194bdf3a1c50d61e3427d0f77544c:justin $OSC$49$372788bad6617f2083f9c07695ee2229:eiffel just as though the osc format had handled it. So then the osc format would become more of a validation, and filter module. It would contain no hashing logic, but would load the data, transform it into 'proper' md5_gen() syntax, and allow the the md5_gen_fmt code to do the hashing, and upon finding results, would make sure that the john cracker code was informed of the success using the original format string (in the above case, in a $OSC$ format). The md5_gen(4) could of course be called natively (with proper formatted file), but if someone used the $OSC$ format file, it would work just like today, they would have no idea that under the hood the osc_fmt was not doing the hashing work. NOTE I have not fully figured out just how to do that yet. I will start with the phpass format first (since it was mine). I am getting code place into md5gen_*.c files right now, so that phpass variants will be able to drop in. Once I have that done, and working as fast as the 'native' phpass_fmt.c code, I will then look at how to 'hook' the generic md5 format by the phpass format. This will make useage easier, and should be a lot more robust in the future. The md5_gen(*) code gets used as the engine for many (most) MD5 hashing instances, but we allow the existing input formats to properly function, and the generic stuff simply gets used 'under the hood' to do the work. Thus, when new 'enhancements' get added (such as CUDA support, or other CPU support), it only has to be added/ported in one place, and ALL of john's MD5 code gets the benefit. The same model would would for SHA[1,2], DES, or other 'base' algorithms. Jim.
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.