Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Thu, 18 Jun 2015 21:27:35 -0400
From: Mathieu Laprise <>
Subject: Re: [Johnny] Task 1.6.1 Multiple cracking session management

On Tue, Jun 16, 2015 at 10:39 AM, Shinnok <> wrote:

> Encapsulating those calls in a JohnSession has multiple reasons:
> 1. We get rid of ugly getValue() / setValue() calls spread all over the UI
> code;
> 2. We start defining what an attack session is; (A name, a set of input
> files, JohnSession.mode(), JohnSession.isForkEnabled(), etc.. you get the
> idea)
> 3. We can pass a fully defined session around as a single variable;
> 4. We get to write more beautiful code, for e.g. by doing
> JohnSession.load() instead of iterating over lists and
> other data types and serializing/deserializing each and every option in the
> UI code.
> I see you have quite some progress on PR #24. Before I can proceed to the
> review, can you please writeup a small summary here of what have you
> accomplished so far with it? It will make my job a bit easier.
When I received your clarification about JohnSession wrapper, I was already
pretty advanced in my current code and design. Since we planned a release
with john-users next week, I finished it with the direct QSettings approach
as it was already pretty advanced. I don't think I would have finished this
week if I refactored the JohnSession thing which is longuer to implement.
If you still want this approach, I propose to refactor it in another PR
after release since I really think the new session feature is important for
our release and we should not release johnny without it. In fact, I didn't
have time yet to play with the windows installer and I didn't have enough
time yet to test all  the use-cases that I wanted to test. I propose to
review and merge it with this design and concentrate on finding issues like
#31 and #32, play with the windows installer, finish qt 4.6.2
compatibility, make packages, tests on different platforms etc. for next
week and tomorrow.

As for the summary of multiple session management, all features that we
talked about are there as of today. Each session is automatically saved by
the date and time of the attack. The user can see them in the list and
there is a tooltip showing the file name. The list can be cleared. At
first, for session history, I saved one .johnny file per session like
Aleksey did in 2012. I read all files(.johnny and .rec) in the johnny
folder. But then, you told me that you would prefer storing sessions via
QSettings. So, I reimplemented it with QSettings and groups. The group is
"johnSessions" and each subgroup is the name of the session (ex :
johnSession/08-06-15_21:03). After that, I implemented the saving of UI
settings so you can access all the keys from that subgroups(ex:mode etc..).
I adapted the method that read the UI to make the QStringList of john
parameter to also save the UI to QSettings.After that, the method
MainWindow::restoreSessionUI(const QString& sessionName) restore everything
easily like that :
m_settings.beginGroup("johnSessions/" + sessionName);
QString format = m_settings.value("formatJohn").toString();

I'll check again for small mistakes, as this task was pretty repetitive,
friday morning but you can definitely proceed to review when you have time.

Content of type "text/html" skipped

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.