Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20110904020147.GA30159@openwall.com>
Date: Sun, 4 Sep 2011 06:01:47 +0400
From: Solar Designer <solar@...nwall.com>
To: john-dev@...ts.openwall.com
Subject: Re: Patch for dynamically loaded formats

David,

I am sorry for the delayed response.  I actually found your posting very
interesting, so please don't be discouraged by the delay on my part.

Please see below:

On Mon, Aug 29, 2011 at 08:12:36AM -0400, David Jones wrote:
> I made a modification that allows JtR to load a format module from a user specified dynamic library.  The format can be specified on the command line as --dynamic-fmt=dll_name or in the configuration file with a similar option name.  The feature would mean kits for add on or experimental hashes wouldn't require edits to john source and be less dependent on the version
> (as long as the fmt_main structure remains unchanged)

I was (and still am) unsure about this kind of functionality.  It is of
more limited use in portable apps such as JtR than it is in
closed-source apps focusing on specific platforms only.  However, now
that you have the code, let's just get it into -jumbo as an experiment
and see where we get from there.

For the option name, how about "--plugin"?  I don't like "--dynamic-fmt".

BTW, I think you're already aware of compile-time plugins supported in
-jumbo (thanks to work by JimF and magnum)?  These similarly don't
require source code edits to add a new hash type.

> I'm still working on cleaning up the kit for demonstrating the feature (an updated OpenVMS module with mixed-case support).

Please submit your OpenVMS stuff as a patch for -jumbo.  I'd rather
integrate it in -jumbo.  If you want to also use it to demo the dynamic
plugins, feel free to do that, but it should not replace integration
into -jumbo.

Looking at your john_1.7.8-jumbo-5b-dynfmt.diff patch, here are some
suggestions:

1. Move dll_handle and register_dlls() into a separate source file.  You
may pass john_register_one() into register_dlls() via a function pointer.
This file may be called plugin.c or dynamic.c - or feel free to suggest
another name.  Include a proper copyright and license statement in it:
http://openwall.info/wiki/john/licensing

2. Use source code style consistent with that of the rest of John code,
which can be approximated with these indent settings:

	indent -kr -i8 -nlp -nbbo -ncs -l79 -lc79

(just run this indent command on your new source file).

Thank you!

Alexander

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.