Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20110322213321.GA3403@openwall.com>
Date: Wed, 23 Mar 2011 00:33:21 +0300
From: Solar Designer <solar@...nwall.com>
To: john-users@...ts.openwall.com
Subject: Re: Interface for John

On Tue, Mar 22, 2011 at 09:14:46AM -0400, joseph varghese wrote:
> But i'm aware of the basics of gui programming and have experience in
> programming with c, c++,java,and python. It would be much better if more
> information about the project is given, like which programming language to
> use,

It's C++.  For the integrated GUI approach, you'll need to be modifying and
linking against plain C code as well (the main JtR code will stay plain C).

> and the expected functionality.

Was my previous response not enough to enable you to decide and even get
started?  Do you expect/prefer very precise specifications, leaving you
less freedom?

> It would be of great help, if given a sample program to implement.

For approach #1 (wrapper), it will be the first development revision of
the wrapper.  It is OK to have only a small subset of the desired input
fields, checkboxes, etc. in this revision.

For approach #2 (integrated), I'd expect a difficult part to be
implementing the spreadsheet-like input/display widget.  My current
guess/expectation (possibly wrong) is that it will need to be a custom
widget (building upon existing ones, of course) rather than merely a
generic container widget with lots of individual elements inserted into
it.  This is for performance and memory usage reasons: the number of
records may be in the millions.  If you simply insert checkboxes, etc.
into a container widget, I'd expect that this will involve O(n^2)
algorithms, which is unacceptable, unless the GUI toolkit has been
specifically designed/optimized to avoid those (which I find unlikely,
but I could be wrong).  Thus, if you intend to work on approach #2, your
qualification task may be implementing this widget, or demonstrating
that one is not required to achieve the desired functionality (with
reasonable performance and memory usage) - e.g., maybe you'll find a
suitably-licensed existing spreadsheet-like widget for the GUI toolkit
of choice (likely wxWidgets) and show that it is easy to customize for
our needs (roughly match the look and feel of those "competing" programs
I mentioned).  Your program would need to populate the widget with 1
million records (any placeholders will do - e.g., sequential numbers).

For either or both approaches, a bonus task is demonstrating ability to
build binaries that work across a variety of operating system versions -
e.g., the same binaries work on CentOS 5, Fedora 13, and a range of
versions of Ubuntu.  (I can setup and provide SSH/X access to those,
running in OpenVZ containers.)  This can be worked on in parallel with
the tasks above (e.g., you can use a "hello world" program for this
portability demo).

Please let me know if you intend to work on any of this, and/or if you
have any further questions/comments/needs.

Thanks,

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.