Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date: Wed, 1 Sep 2010 21:14:53 -0400 (EDT)
Subject: Re: Noob question: how to feed 10 alphanum char 
     min&max incremental to aircrack when "MaxLen = 10 exceeds the 
     compile-time limit of 8"

> Oh, then your time was not bad.  I just did some math, and it appears
> that JtR would complete a similar run in about 50 minutes (that's on one
> CPU core).  There got to be room for improvement here.

I experimented with different data structures to hold the hashes to find
the most efficient one. I'm not sure how JTR stores multiple hashes. I
don't have the detailed numbers as this was a while ago, but here is what
I found in general:

* unsorted std::vector (slow)
* binary_search on a sorted std::vector (much faster)
* std::unordered_set (fastest on large sets (10k to 1m hashes), but
slightly slower than binary_search when dealing with dozens or hundreds of
hashes). It was the overall winner. In C, I think you would call this an
in memory hash table.

> Well, 3.5x to 5.5x faster by using all four cores.  So far, this is best
> done by running 8 instances of JtR manually (it should be 8 for a Core i7
> with HT enabled even though the CPU is quad-core), but I'll need to be
> improving the code to make this simpler yet efficient.

Not sure this would be of interest to you, but if you can use C++ the
boost library has portable code that determines this number automatically.

const unsigned int t = boost::thread::hardware_concurrency();

This will return the number of "hardware threads" (that may be CPUs, CPU
cores, pretend cores (HT), etc.) and if it can't determine the number, it
returns 0 so you can drop-back to only one thread if needed. Not that I've
ever had to do that, but you never know.


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.