Date: Wed, 1 Sep 2010 21:14:53 -0400 (EDT) From: brad@...ystems.com To: john-users@...ts.openwall.com 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. Brad
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.