|
Message-ID: <2fef5d856c7e53ea25e2ec933538e9b3@smtp.hushmail.com> Date: Tue, 10 Mar 2015 01:02:19 +0100 From: magnum <john.magnum@...hmail.com> To: john-dev@...ts.openwall.com Subject: Re: format method spec. On 2015-03-09 11:55, Solar Designer wrote: > On Sun, Mar 08, 2015 at 02:33:23AM +0100, magnum wrote: >> We just noticed a problem which stems from the following (line numbers >> here are from john proper) in crk_salt_loop() >> >> 331 crk_methods.clear_keys(); >> 332 >> 333 if (ext_abort) >> 334 event_abort = 1; >> 335 >> 336 if (ext_status && !event_abort) { >> 337 ext_status = 0; >> 338 event_status = 0; >> 339 status_print(); >> 340 } >> >> The problem is we call clear_keys() and after that we call get_key() via >> status_print(). The bleeding-edge mssql12 format currently crashes when >> this happens. > You're right - the code snippet above is inconsistent with the comment > in formats.h. I think we should fix the code. Simply move line 331 to > below line 340. Please test this in jumbo, and after confirming it > works as intended remind me to make the same change in core. It turns out we still call status_print() from john.c after job is finished: 597 do_external_crack(&database); 598 else 599 if (options.flags & FLG_BATCH_CHK) 600 do_batch_crack(&database); 601 602 status_print(); 603 604 #if OS_FORK 605 if (options.fork && john_main_process) 606 john_wait(); 607 #endif ...so problem remains. I'll try to zoom out and find a better place for the clear_keys() in cracker.c (eg. right before setting key 0). I think the one for Single mode is better placed. > I think there are no uses of clear_keys() in the core tree right now, > but since jumbo uses it we continue to provide it. > > I think many (possibly most) of the jumbo formats that use clear_keys() > now are simply being sloppy/lazy. Doing a memset() on every > clear_keys() is probably sub-optimal. Also, some formats define empty > clear_keys() instead of simply using fmt_default_clear_keys - that's a > trivial cleanup you can make right now. We moved away from things like "if (index == 0)" in set_key() because the self-test code played tricks on us, not behaving like a real crack. The uses I know of clear_keys() are because the alternatives were either too complex (bug prone) or slower. I wasn't aware of any format with empty functions - I fix them as I see them. But now that I looked for it I see a few, will fix them right away. magnum
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.