Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20101008200359.GA17931@openwall.com>
Date: Sat, 9 Oct 2010 00:03:59 +0400
From: Solar Designer <solar@...nwall.com>
To: john-users@...ts.openwall.com
Subject: Re: Rule to replace strings

I've just addressed Matt's actual question in another posting, so this
one is merely to clarify why the line proposed by Rich did not work the
way Matt expected it to:

On Fri, Oct 08, 2010 at 01:43:30PM -0500, Charles Weir wrote:
> > /[2009] s[2009][2010]
> > something like that isn't it?
> 
> Hey thanks Rich but the rules preprocessor treats those as individual
> characters. Aka I ran that on the word "test2009" and it output the
> following guesses:
> 
> test2009
> test0009
> test1009
> test2229
> test2009
> test2119
> test2002
> test2000
> test2001
> 
> The weird thing was it didn't create nearly as many guesses as I
> thought it would. Aka I would expect test0000 to show up.

Rich's proposed ruleset line:

/[2009] s[2009][2010]

contains just one "s" command.  So it can't possibly turn "2009" into
"0000", which would require two different "s" commands at once (one for
"2" and the other for "9") or totally different commands.  For the same
reason, there's no "2010" in the output.

Specifically, the line expands into 27 rules, as seen in the log:

0:00:00:00 - Rule #1: '/2 s22' accepted as '/2s22'
0:00:00:00 - Rule #2: '/2 s20' accepted as '/2s20'
0:00:00:00 - Rule #3: '/2 s21' accepted as '/2s21'
0:00:00:00 - Rule #4: '/2 s02' accepted as '/2s02'
0:00:00:00 - Rule #5: '/2 s00' accepted as '/2s00'
0:00:00:00 - Rule #6: '/2 s01' accepted as '/2s01'
0:00:00:00 - Rule #7: '/2 s92' accepted as '/2s92'
0:00:00:00 - Rule #8: '/2 s90' accepted as '/2s90'
0:00:00:00 - Rule #9: '/2 s91' accepted as '/2s91'
0:00:00:00 - Rule #10: '/0 s22' accepted as '/0s22'
0:00:00:00 - Rule #11: '/0 s20' accepted as '/0s20'
0:00:00:00 - Rule #12: '/0 s21' accepted as '/0s21'
0:00:00:00 - Rule #13: '/0 s02' accepted as '/0s02'
0:00:00:00 - Rule #14: '/0 s00' accepted as '/0s00'
0:00:00:00 - Rule #15: '/0 s01' accepted as '/0s01'
0:00:00:00 - Rule #16: '/0 s92' accepted as '/0s92'
0:00:00:00 - Rule #17: '/0 s90' accepted as '/0s90'
0:00:00:00 - Rule #18: '/0 s91' accepted as '/0s91'
0:00:00:00 - Rule #19: '/9 s22' accepted as '/9s22'
0:00:00:00 - Rule #20: '/9 s20' accepted as '/9s20'
0:00:00:00 - Rule #21: '/9 s21' accepted as '/9s21'
0:00:00:00 - Rule #22: '/9 s02' accepted as '/9s02'
0:00:00:00 - Rule #23: '/9 s00' accepted as '/9s00'
0:00:00:00 - Rule #24: '/9 s01' accepted as '/9s01'
0:00:00:00 - Rule #25: '/9 s92' accepted as '/9s92'
0:00:00:00 - Rule #26: '/9 s90' accepted as '/9s90'
0:00:00:00 - Rule #27: '/9 s91' accepted as '/9s91'

The preprocessor is smart enough to omit the duplicate rules that could
result from having two 0's in 2009 and 2010, however it is not smart
enough to detect other redundancies (in fact, it knows nothing about the
rule commands).  This has nothing to do with not producing "test0000",
though - it would not be produced regardless of preprocessor optimizations
or lack thereof.  The line simply does not specify that translation.

Here's a curious alternative along the lines of Matt's original question
and Rich's line:

/?d Dp =p?d Dp =p?d Dp =p?d Dp Ap"[0-9][0-9][0-9][0-9]"

For "test2009", this one produces 10000 candidate passwords - from
"test0000" to "test9999" - and it would also "catch" (and replace)
4-digit sequences in the middle of input "words".

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.