Hello everyone. I want to generate a dictionary to hack a password I've forgotten. The password is a phrase that I remember, but some of the characters are numbers and letters. I don't recall which are which.
For example:
ilove:doggers could be
il0v3:d0gG3r5
iLove:d0gge12s etc.
so I have a 12-13 character password and I have each character narrowed down to 2 or 3 possibilities. Is there a way to have crunch generate that list for me? I've read the man page and couldn't figure it out.
if you can write up a code for an example I should be able to adjust it for my real one. so let's use dontforget:me
13 characters
first character: Dd
second: Oo0
third: Nn
fourth:Tt7
fifth: Ff
sixth: Oo0
seventh: Rr2
eighth: Gg6
ninth: Ee3
tenth: Tt7
eleventh: is definitely ":"
twelfth: Mm
thirteenth: Ee3
thank you so much. I really appreciate it!
Gitsnik wrote a great bit of perl a while ago which I incorporated into WLM
Have a look at it and see if it can help you out ;
http://code.google.com/p/wordlist-manipulator/
Try running as follows and test the wordlist ;
Code:./wlm ilove:doggers > wordlist.txt
It looks like WLM could do the trick, unfortunately... I'm actually running mac osx, so I can't install .deb, and I can't find it on macports or fink. :\
Well here is Gitsnik's perl code from the script ;
See if you can run that and possibly alter the variations on the character permutation allowances to fully meet your requirements.Code:#!/usr/bin/perl use strict; use warnings; my %permution = ( "a" => [ "a", "4", "@", "&", "A" ], "b" => "bB", "c" => "cC", "d" => "dD", "e" => "3Ee", "f" => "fF", "g" => "gG9", "h" => "hH", "i" => "iI!|1", "j" => "jJ", "k" => "kK", "l" => "lL!71|", "m" => "mM", "n" => "nN", "o" => "oO0", "p" => "pP", "q" => "qQ", "r" => "rR", "s" => "sS5\$", "t" => "tT71+", "u" => "uU", "v" => "vV", "w" => ["w", "W", "\\/\\/"], "x" => "xX", "y" => "yY", "z" => "zZ2", ); # End config while(my $word = <>) { chomp $word; my @string = split //, lc($word); &permute(0, @string); } sub permute { my $num = shift; my @str = @_; my $len = @str; if($num >= $len) { foreach my $char (@str) { print $char; } print "\n"; return; } my $per = $permution{$str[$num]}; if($per) { my @letters = (); if(ref($per) eq "ARRAY") { @letters = @$per; } else { @letters = split //, $per; } $per = ""; foreach $per (@letters) { my $s = ""; for(my $i = 0; $i < $len; $i++) { if($i eq 0) { if($i eq $num) { $s = $per; } else { $s = $str[0]; } } else { if($i eq $num) { $s .= $per; } else { $s .= $str[$i]; } } } my @st = split //, $s; &permute(($num + 1), @st); } } else { &permute(($num + 1), @str); } }
I know I'm a bit late to the party, and honestly won't be much help right now but...
I'm rewriting one of my older python programs, which can do precisely this. It was originally to work with another program I had written which crawled the web and generated a large word list. Then the second program would scan through and create modifications of each word (based on user defined rules) and add them to the list.
Sorry I can't be of more help yet, in the next few weeks I can finish this up.
EDIT: FINISHED: http://pastebin.com/Wt3LRDcL
Well, it's not exactly the best, just finished it, not much testing. There is a default dictionary in the source which you can modify to whatever you want, just follow the pattern. NOTE: To run correctly each dictionary entry with a definition that is 2 characters long, must have 2 definitions. So if your definition for 'later' is 'l8r', you must have at least 1 more definition.
GOOD:
'later': ('l8r', 'l8a')
BAD:
'later': ('l8r')
With the bad code, it will use each character 'l', '8', 'r' separately instead of the whole string. Never got around to fixing this, so just a easy work around.
WARNING: Using this on a big list will take forever. It literally runs every combination that applies to a certain word. So for example the word 'elite' will return:
1337
133+
133t
1eet
1ee+
l337
l33+
l33t
leet
3lite
31ite
3Lite
3l!te
3l1te
3lIte
3li7e
3li+e
3lit3
3litE
etc...
Last edited by bazju; 01-27-2013 at 02:16 AM.