#!/usr/bin/perl # Coded by Trizen # Created on: 18 April 2010 # Last edit on: 09 March 2011 # Email: echo dHJpemVueEBnbWFpbC5jb20K | base64 -d # Website: http://trizen.go.ro sub Digest::base::clone; sub Digest::base::digest; sub Digest::base::add; sub Digest::base::new; use Digest::MD5 ('md5_hex'); $a = $ARGV[0]; if ($a) { if ( $a =~ /^(-h|--help)$/ ) { print " \t\t\t*** Wordlist MD5 Cracker *** Usage: $0 [MD5] [File] [Options] Available Options: -abcde Where: a = words + numbers from 1940 to 2012 b = words + number from 1 to 100 c = words + date numbers (ex: 2412, 0503) d = make leet words (ex: ever = 3v3r) e = words + suffixes (ex: 4you, 1234, 666) -v = verbose mode (shows words during hashing) -l = hash original words from list too [*] Example: $0 348148ed80df985f4ef034d9734bcc6e file.txt -x=abde [!] Also you can use in script '\$list' and '\$md5' lines... "; exit; } } if ( $ARGV[0] ) { for ( $nr = 0 ; $nr <= $#ARGV ; ++$nr ) { if ( $ARGV[$nr] =~ /^-(.+)/ ) { push @args, $ARGV[$nr]; } push @args2, $ARGV[$nr]; } } $arg = join( '', @args ); if ( $arg =~ /a/ ) { $A = 1; } if ( $arg =~ /b/ ) { $B = 1; } if ( $arg =~ /c/ ) { $C = 1; } if ( $arg =~ /d/ ) { $D = 1; } if ( $arg =~ /e/ ) { $E = 1; } foreach $argument (@ARGV) { if ( $argument eq '-v' ) { $verbose = 1; } if ( $argument eq '-l' ) { $LIST = 1; } } foreach $argv (@args2) { if ( $argv =~ /^([a-fA-F\d]{32})$/ ) { $md5 = $1; } if ( not $argv =~ /^-/ and $argv ne $md5 ) { $list = $argv; } } print " \t *************************************** \t > WordList MD5 Cracker < \t < + sufixes > \t > Coded by Trizen < \t < 18 April 2010 > \t *************************************** \t"; unless ($list) { print "\n=>> Type the wordlist name: "; chomp( $list = ); } die "\n[!] $!...\n\n" unless open WORDLIST, $list; unless ($md5) { print "\n=>> Insert a valid MD5: "; chomp( $md5 = ); } until ( $md5 =~ /^([a-fA-F\d]{32})$/ ) { print "\n=>> Insert a valid MD5: "; chomp( $md5 = ); } $md5 = "\L$md5\E"; print "\n\nWorking... Please wait...\n"; sub die { close WORDLIST; die "\t\n Hash successfully cracked!\n\n\t$hash == $Word\n\n"; } @suffixes = ( '`', '```', '^', '^^', '^^^', '^&*', '^&*(', '~', '~!@', '<>?', '|+_', '_', '_+|', '-', '-=-', '-=\\', '---', ',./', '!', '!)', '!@', '!@#', '/', '.', '(_)', '()', '()_', '()_+', ')_(', ')_+', ')_+|', ')(', ')(*', ')(*~!@', '[]', '@', '@))(', '@#$', '@#$%', '$', '$%^', '$%^&', '*', '*()', '**', '***', '****', '{}', '&', '&*(', '&*()', '#', '#$%', '#$%^', '%', '%^&', '%^&*', '+', '00', '000', '0000', '000000', '007', '0099', '0101', '04', '05', '06', '07', '08', '09', '098', '098123', '0987', '`1', '`1\\=', '100', '1010', '111', '1111', '111111', '112', '1122', '112233', '`12', '`12-=\\', '1209', '121', '1211', '1212', '121212', '123', '123--', '123#', '123098', '123123', '1232', '123321', '1234', '12340987', '1234321', '12344321', '12345', '123456', '1234567', '12345678', '123456789', '1234qwer', '1234wasd', '123654', '123qwe', '1337', '1q2w3e', '1q2w3e4r', '1q2w3e4r5t', '1qa2ws', '222', '2o11', '2o12', '2o1o', '2oo9', '(%3', '321', '333', '3333', '3v3r', '4321', '444', '456', '4ev3r', '4ever', '4life', '4ng3l', '4sex', '4u', '4y0u', '4you', '555', '5555', '654321', '666', '6666', '69sex', '777', '7777', '7up', '888', '8888', '909', '9900', '999', '9999', 'a', 'aa', 'aaa', 'aaaa', 'aaaaa', 'aaaaaa', 'abc123', 'admin', 'angel', 'asd', 'asdasd', 'asdf', 'asdfg', 'asdfgh', 'azerty', 'boss', 'eu', 'foryou', 'justme', 'l0l', 'l33t', 'linux', 'lol', 'lol123', 'me4u', 'pass', 'qaws', 'qazwsx', 'qwer', 'qwerty', 'r00t', 'reqw', 'root', 's3x', 'saqw', 'sex', 'sex69', 'sexxx', 'test', 'test123', 'tux', 'us', 'wasd', 'win32', 'x', 'x7', 'xxx' ); sub MD5 { if ( $Word ne $lastword ) { if ($verbose) { print "$Word\n"; } $hash = md5_hex($Word); if ( $md5 eq $hash ) { ¨ } } $lastword = $Word; } foreach $key (@suffixes) { $Word = $key; &MD5; } if ($LIST) { while ( defined( $_ = ) ) { chomp( $word = $_ ); next unless $word; $Word = $word; &MD5; } } while ( defined( $_ = ) ) { chomp( $word = $_ ); next unless $word; if ($E) { foreach $key (@suffixes) { $Word = $word . $key; &MD5; } } if ($A) { for ( $year = 1940 ; $year <= 2012 ; ++$year ) { $Word = $word . $year; &MD5; } } if ($B) { for ( $nr = 1 ; $nr <= 100 ; ++$nr ) { $Word = $word . $nr; &MD5; } } if ($C) { for ( $number = 1 ; $number <= 31 ; ++$number ) { if ( $number < 10 ) { $nr = "0$number"; } else { $nr = $number; } $Word = $word . $nr . '01'; &MD5; } for ( $number = 1 ; $number <= 29 ; ++$number ) { if ( $number < 10 ) { $nr = "0$number"; } else { $nr = $number; } $Word = $word . $nr . '02'; &MD5; } for ( $number = 1 ; $number <= 31 ; ++$number ) { if ( $number < 10 ) { $nr = "0$number"; } else { $nr = $number; } $Word = $word . $nr . '03'; &MD5; } for ( $number = 1 ; $number <= 30 ; ++$number ) { if ( $number < 10 ) { $nr = "0$number"; } else { $nr = $number; } $Word = $word . $nr . '04'; &MD5; } for ( $number = 1 ; $number <= 31 ; ++$number ) { if ( $number < 10 ) { $nr = "0$number"; } else { $nr = $number; } $Word = $word . $nr . '05'; &MD5; } for ( $number = 1 ; $number <= 30 ; ++$number ) { if ( $number < 10 ) { $nr = "0$number"; } else { $nr = $number; } $Word = $word . $nr . '06'; &MD5; } for ( $number = 1 ; $number <= 31 ; ++$number ) { if ( $number < 10 ) { $nr = "0$number"; } else { $nr = $number; } $Word = $word . $nr . '07'; &MD5; } for ( $number = 1 ; $number <= 31 ; ++$number ) { if ( $number < 10 ) { $nr = "0$number"; } else { $nr = $number; } $Word = $word . $nr . '08'; &MD5; } for ( $number = 1 ; $number <= 30 ; ++$number ) { if ( $number < 10 ) { $nr = "0$number"; } else { $nr = $number; } $Word = $word . $nr . '09'; &MD5; } for ( $number = 1 ; $number <= 31 ; ++$number ) { if ( $number < 10 ) { $nr = "0$number"; } else { $nr = $number; } $Word = $word . $nr . '10'; &MD5; } for ( $number = 1 ; $number <= 30 ; ++$number ) { if ( $number < 10 ) { $nr = "0$number"; } else { $nr = $number; } $Word = $word . $nr . '11'; &MD5; } for ( $number = 1 ; $number <= 31 ; ++$number ) { if ( $number < 10 ) { $nr = "0$number"; } else { $nr = $number; } $Word = $word . $nr . '12'; &MD5; } } if ($D) { $word =~ s/o/0/gi; $Word = $word; &MD5; $word =~ s/0/o/gi; $Word = $word; &MD5; $word =~ s/s/5/gi; $Word = $word; &MD5; $word =~ s/5/s/gi; $Word = $word; &MD5; $word =~ s/t/7/gi; $Word = $word; &MD5; $word =~ s/7/t/gi; $Word = $word; &MD5; $word =~ s/z/2/gi; $Word = $word; &MD5; $word =~ s/2/z/gi; $Word = $word; &MD5; $word =~ s/i/1/gi; $Word = $word; &MD5; $word =~ s/1/i/gi; $Word = $word; &MD5; $word =~ s/a/4/gi; $Word = $word; &MD5; $word =~ s/e/3/gi; $Word = $word; &MD5; $word =~ s/3/e/gi; $Word = $word; &MD5; $word =~ s/e/3/gi; $Word = $word; &MD5; $word =~ s/o/0/gi; $Word = $word; &MD5; $word =~ s/i/1/gi; $Word = $word; &MD5; $word =~ s/t/7/gi; $Word = $word; &MD5; $word =~ s/7/t/gi; $Word = $word; &MD5; $word =~ s/s/5/gi; $Word = $word; &MD5; $word =~ s/g/9/gi; $Word = $word; &MD5; $word =~ s/z/2/gi; $Word = $word; &MD5; $word =~ s/9/g/gi; $Word = $word; &MD5; $word =~ s/4/a/gi; $Word = $word; &MD5; $word =~ s/3/e/gi; $Word = $word; &MD5; $word =~ s/1/i/gi; $Word = $word; &MD5; $word =~ s/2/z/gi; $Word = $word; &MD5; $word =~ s/5/s/gi; $Word = $word; &MD5; $word =~ s/7/t/gi; $Word = $word; &MD5; } } close WORDLIST; die "\n[!] Done... The hash '${md5}' wasn't cracked...\n\n";