La version Tk de este programa que eh hecho para crackear hashes md5 de forma online
Una imagen seria
![](http://doddyhackman.webcindario.com/images/passtk.jpg)
El codigo
Una imagen seria
![](http://doddyhackman.webcindario.com/images/passtk.jpg)
El codigo
Código (perl) [Seleccionar]
#!usr/bin/perl
#Finder Pass 0.4
#Version Tk
#Coded By Doddy H
use Tk;
use Tk::ListBox;
use Tk::Dialog;
use Tk::FileSelect;
use Cwd;
use LWP::UserAgent;
my $nave = LWP::UserAgent->new;
$nave->agent(
"Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1.12) Gecko/20080201Firefox/2.0.0.12"
);
$nave->timeout(5);
if ( $^O eq 'MSWin32' ) {
use Win32::Console;
Win32::Console::Free();
}
my $color_fondo = "black";
my $color_texto = "red";
my $ta =
MainWindow->new( -background => $color_fondo, -foreground => $color_texto );
$ta->title("Finder Pass 0.4 (C) Doddy Hackman 2012");
$ta->geometry("600x400+20+20");
$ta->resizable( 0, 0 );
$d = $ta->Frame(
-relief => "sunken",
-bd => 1,
-background => $color_fondo,
-foreground => $color_texto
);
my $max = $d->Menubutton(
-text => "Options",
-underline => 1,
-background => $color_fondo,
-foreground => $color_texto,
-activebackground => $color_texto
)->pack( -side => "left" );
my $aba = $d->Menubutton(
-text => "About",
-underline => 1,
-background => $color_fondo,
-foreground => $color_texto,
-activebackground => $color_texto
)->pack( -side => "left" );
my $exa = $d->Menubutton(
-text => "Exit",
-underline => 1,
-background => $color_fondo,
-foreground => $color_texto,
-activebackground => $color_texto
)->pack( -side => "left" );
$d->pack( -side => "top", -fill => "x" );
$max->command(
-label => "Crack",
-background => $color_fondo,
-foreground => $color_texto,
-command => \&cracknow
);
$max->command(
-label => "Add Hash",
-background => $color_fondo,
-foreground => $color_texto,
-command => \&addhash
);
$max->command(
-label => "Add File with hashes",
-background => $color_fondo,
-foreground => $color_texto,
-command => \&addfilea
);
$max->command(
-label => "Clean List",
-background => $color_fondo,
-foreground => $color_texto,
-command => \&cleanow
);
$aba->command(
-label => "About",
-background => $color_fondo,
-foreground => $color_texto,
-command => \&about
);
$exa->command(
-label => "Exit",
-background => $color_fondo,
-foreground => $color_texto,
-command => \&salir
);
$ta->Label(
-text => "Hashes",
-background => $color_fondo,
-foreground => $color_texto,
-font => "Impact"
)->place( -x => 110, -y => 50 );
my $had = my $has = $ta->Listbox(
-width => 36,
-height => 15,
-background => $color_fondo,
-foreground => $color_texto
)->place( -x => 32, -y => 100 );
$ta->Label(
-text => "Results",
-background => $color_fondo,
-foreground => $color_texto,
-font => "Impact"
)->place( -x => 380, -y => 50 );
my $red = my $res = $ta->Listbox(
-width => 36,
-height => 15,
-background => $color_fondo,
-foreground => $color_texto
)->place( -x => 300, -y => 100 );
my $status = $ta->Label(
-text => "Status : <None>",
-background => $color_fondo,
-foreground => $color_texto,
-font => "Impact1"
)->place( -x => 220, -y => 350 );
MainLoop;
sub cracknow {
my @hashes = $had->get( "0.0", "end" );
my @hashes = repes(@hashes);
for my $ha (@hashes) {
$status->configure( -text => "[+] Searching .." );
$ta->update;
my $re = crackit($ha);
if ( $re =~ /false01/ig ) {
$red->insert( "end", "Not Found" );
}
else {
$red->insert( "end", $re );
savefile( "hashes-found.txt", $ha . ":" . $re );
}
}
$status->configure( -text => "Status : <None>" );
}
sub addfilea {
my $mediox = MainWindow->new(
-background => $color_fondo,
-foreground => $color_texto
);
$mediox->geometry("390x90+20+20");
$mediox->resizable( 0, 0 );
$mediox->title("Add File");
$mediox->Label(
-text => "File : ",
-background => $color_fondo,
-foreground => $color_texto,
-font => "Impact1"
)->place( -x => 10, -y => 30 );
my $enafa = $mediox->Entry(
-background => $color_fondo,
-foreground => $color_texto,
-width => 33
)->place( -y => 33, -x => 55 );
$mediox->Button(
-text => "Browse",
-background => $color_fondo,
-foreground => $color_texto,
-width => 7,
-activebackground => $color_texto,
-command => \&bronax
)->place( -y => 33, -x => 265 );
$mediox->Button(
-text => "Load",
-background => $color_fondo,
-foreground => $color_texto,
-width => 7,
-activebackground => $color_texto,
-command => \&bronaxx
)->place( -y => 33, -x => 320 );
sub bronax {
$browse = $mediox->FileSelect( -directory => getcwd() );
my $fileax = $browse->Show;
$enafa->configure( -text => $fileax );
}
sub bronaxx {
open( OPEN, $enafa->get );
my @ve = <OPEN>;
close OPEN;
for my $no (@ve) {
chomp $no;
if ( ver_length($no) ) {
$had->insert( "end", $no );
}
}
}
}
sub addhash {
my $plac = MainWindow->new(
-background => $color_fondo,
-foreground => $color_texto
);
$plac->geometry("350x90+20+20");
$plac->resizable( 0, 0 );
$plac->title("Add Hash");
$plac->Label(
-text => "Hash : ",
-background => $color_fondo,
-foreground => $color_texto,
-font => "Impact1"
)->place( -x => 10, -y => 30 );
my $ewa = $plac->Entry(
-background => $color_fondo,
-foreground => $color_texto,
-width => 33
)->place( -y => 33, -x => 60 );
$plac->Button(
-text => "Add",
-background => $color_fondo,
-activebackground => $color_texto,
-foreground => $color_texto,
-width => 7,
-command => \&addnowa
)->place( -y => 33, -x => 275 );
sub addnowa {
if ( ver_length( $ewa->get ) ) {
$had->insert( "end", $ewa->get );
}
else {
$ta->Dialog(
-title => "Error",
-buttons => ["OK"],
-text => "Hash invalid",
-background => $color_fondo,
-foreground => $color_texto,
-activebackground => $color_texto
)->Show();
}
}
}
sub cleanow {
$had->delete( 0.0, "end" );
$red->delete( 0.0, "end" );
}
sub about {
$ta->Dialog(
-title => "About",
-buttons => ["OK"],
-text => "This program was coded by Doddy Hackman in 2012",
-background => $color_fondo,
-foreground => $color_texto,
-activebackground => $color_text
)->Show();
}
sub salir {
exit(1);
}
sub crackit {
my $target = shift;
chomp $target;
my %hash = (
'http://md5.hashcracking.com/search.php?md5=' => {
'tipo' => 'get',
'regex' => "Cleartext of $target is (.*)",
},
'http://www.hashchecker.com/index.php?_sls=search_hash' => {
'variables' => { 'search_field' => $target, 'Submit' => 'search' },
'regex' =>
"<td><li>Your md5 hash is :<br><li>$target is <b>(.*)<\/b>",
},
'http://md5.rednoize.com/?q=' => {
'tipo' => 'get',
'regex' => "<div id=\"result\" >(.*)<\/div>"
},
'http://md52.altervista.org/index.php?md5=' => {
'tipo' => 'get',
'regex' => "<br>Password: <font color=\"Red\">(.*)<\/font><\/b>"
}
);
for my $data ( keys %hash ) {
$ta->update;
if ( $hash{$data}{tipo} eq "get" ) {
$code = toma( $data . $target );
if ( $code =~ /$hash{$data}{regex}/ig ) {
my $found = $1;
unless ( $found =~ /\[Non Trovata\]/ ) {
return $found;
last;
}
}
}
else {
$code = tomar( $data, $hash{$data}{variables} );
if ( $code =~ /$hash{$data}{regex}/ig ) {
my $found = $1;
return $found;
last;
}
}
}
return "false01";
}
sub savefile {
open( SAVE, ">>" . $_[0] );
print SAVE $_[1] . "\n";
close SAVE;
}
sub repes {
my @limpio;
foreach $test (@_) {
push @limpio, $test unless $repe{$test}++;
}
return @limpio;
}
sub ver_length {
return true if length( $_[0] ) == 32;
}
sub toma {
return $nave->get( $_[0] )->content;
}
sub tomar {
my ( $web, $var ) = @_;
return $nave->post( $web, [ %{$var} ] )->content;
}
#The End ?