[Perl Tk] Finder Pass 0.4

Iniciado por BigBear, 31 Marzo 2012, 22:47 PM

0 Miembros y 1 Visitante están viendo este tema.

BigBear

La version Tk de este programa que eh hecho para crackear hashes md5 de forma online

Una imagen seria


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 ?