[Perl] DH Spammer 0.1

Iniciado por BigBear, 1 Marzo 2012, 22:21 PM

0 Miembros y 2 Visitantes están viendo este tema.

BigBear

Hola a todos , aca les traigo un programa que hice para mandar mails con las siguientes opciones.

  • Mensajes que permitan codigo HTML.
  • Adjuntar archivos
  • Mandar la cantidad que quieran
  • Se maneja con una lista de correos (para poder enviar el mismo mail a varios correos)

    Para usarlo necesitan una cuenta Gmail para indicarle al programa que los mensajes van a ser enviados desde esa cuenta.

    Una imagen del programa


    El codigo (formateado con perltidy) es ...........

    Código (perl) [Seleccionar]

    #!usr/bin/perl
    #DH Spammer 0.1
    #Coded By Doddy H
    #Dependencies
    #http://search.cpan.org/~peco/Email-Send-SMTP-Gmail-0.24/lib/Email/Send/SMTP/Gmail.pm
    #http://search.cpan.org/~cwest/Net-SMTP-SSL-1.01/lib/Net/SMTP/SSL.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
    #Based on http://robertmaldon.blogspot.com/2006/10/sending-email-through-google-smtp-from.html

    use Tk;
    use Tk::ROText;
    use Tk::FileSelect;
    use Email::Send::SMTP::Gmail;
    use Net::SMTP::SSL;
    use Cwd;

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

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

    my $ve =
      MainWindow->new( -background => $color_fondo, -foreground => $color_texto );
    $ve->geometry("920x560+20+20");
    $ve->resizable( 0, 0 );
    $ve->title("DH Spammer 0.1 (C) Doddy Hackman 2012");

    $d = $ve->Frame(
        -relief     => "sunken",
        -bd         => 1,
        -background => $color_fondo,
        -foreground => $color_texto
    );
    my $ma = $d->Menubutton(
        -text             => "Mails",
        -underline        => 1,
        -background       => $color_fondo,
        -foreground       => $color_texto,
        -activebackground => $color_texto
    )->pack( -side => "left" );
    my $op = $d->Menubutton(
        -text             => "Options",
        -underline        => 1,
        -background       => $color_fondo,
        -foreground       => $color_texto,
        -activebackground => $color_texto
    )->pack( -side => "left" );
    my $ab = $d->Menubutton(
        -text             => "About",
        -underline        => 1,
        -background       => $color_fondo,
        -foreground       => $color_texto,
        -activebackground => $color_texto
    )->pack( -side => "left" );
    my $ex = $d->Menubutton(
        -text             => "Exit",
        -underline        => 1,
        -background       => $color_fondo,
        -foreground       => $color_texto,
        -activebackground => $color_texto
    )->pack( -side => "left" );
    $d->pack( -side => "top", -fill => "x" );

    $ma->command(
        -label      => "Add Mailist",
        -background => $color_fondo,
        -foreground => $color_texto,
        -command    => \&addmailist
    );
    $ma->command(
        -label      => "Add Mail",
        -background => $color_fondo,
        -foreground => $color_texto,
        -command    => \&addmail
    );
    $ma->command(
        -label      => "Clean List",
        -background => $color_fondo,
        -foreground => $color_texto,
        -command    => \&delist
    );

    $op->command(
        -label      => "Spam Now",
        -background => $color_fondo,
        -foreground => $color_texto,
        -command    => \&spamnow
    );
    $op->command(
        -label      => "Add Attachment",
        -background => $color_fondo,
        -foreground => $color_texto,
        -command    => \&addfile
    );
    $op->command(
        -label      => "Clean All",
        -background => $color_fondo,
        -foreground => $color_texto,
        -command    => \&clean
    );

    $ab->command(
        -label      => "About",
        -background => $color_fondo,
        -foreground => $color_texto,
        -command    => \&about
    );
    $ex->command(
        -label      => "Exit",
        -background => $color_fondo,
        -foreground => $color_texto,
        -command    => \&chali
    );

    $ve->Label(
        -text       => "Gmail Login",
        -font       => "Impact3",
        -background => $color_fondo,
        -foreground => $color_texto
    )->place( -x => 100, -y => 40 );

    $ve->Label(
        -text       => "Username : ",
        -background => $color_fondo,
        -foreground => $color_texto
    )->place( -x => 20, -y => 80 );
    my $user = $ve->Entry(
        -width      => 30,
        -text       => 'lagartojuancho@gmail.com',
        -background => $color_fondo,
        -foreground => $color_texto
    )->place( -y => 83, -x => 85 );

    $ve->Label(
        -text       => "Password : ",
        -background => $color_fondo,
        -foreground => $color_texto
    )->place( -x => 20, -y => 120 );
    my $pass = $ve->Entry(
        -show       => "*",
        -width      => 30,
        -text       => 'Secret',
        -background => $color_fondo,
        -foreground => $color_texto
    )->place( -y => 123, -x => 85 );

    $ve->Label(
        -text       => "Message",
        -font       => "Impact3",
        -background => $color_fondo,
        -foreground => $color_texto
    )->place( -x => 110, -y => 160 );

    $ve->Label(
        -text       => "Number : ",
        -background => $color_fondo,
        -foreground => $color_texto
    )->place( -x => 20, -y => 210 );
    my $number = $ve->Entry(
        -width      => 5,
        -text       => "1",
        -background => $color_fondo,
        -foreground => $color_texto
    )->place( -x => 75, -y => 212 );

    $ve->Label(
        -text       => "Attachment : ",
        -background => $color_fondo,
        -foreground => $color_texto
    )->place( -x => 20, -y => 240 );
    my $fi = $ve->Entry(
        -text       => 'None',
        -width      => 30,
        -background => $color_fondo,
        -foreground => $color_texto
    )->place( -x => 90, -y => 242 );

    $ve->Label(
        -text       => "Subject : ",
        -background => $color_fondo,
        -foreground => $color_texto
    )->place( -x => 20, -y => 270 );
    my $tema = $ve->Entry(
        -text       => "Hi idiot",
        -width      => 20,
        -background => $color_fondo,
        -foreground => $color_texto
    )->place( -x => 73, -y => 273 );

    $ve->Label(
        -text       => "Body",
        -font       => "Impact3",
        -background => $color_fondo,
        -foreground => $color_texto
    )->place( -x => 110, -y => 310 );
    my $body = $ve->Scrolled(
        "Text",
        -width      => 30,
        -height     => 12,
        -background => $color_fondo,
        -foreground => $color_texto,
        -scrollbars => "e"
    )->place( -x => 45, -y => 350 );
    $body->insert( "end", "Welcome to the hell" );

    $ve->Label(
        -text       => "Mailist",
        -font       => "Impact3",
        -background => $color_fondo,
        -foreground => $color_texto
    )->place( -y => 40, -x => 400 );
    my $mailist = $ve->Listbox(
        -height     => 31,
        -width      => 33,
        -background => $color_fondo,
        -foreground => $color_texto
    )->place( -y => 85, -x => 330 );

    $ve->Label(
        -text       => "Console",
        -font       => "Impact3",
        -background => $color_fondo,
        -foreground => $color_texto
    )->place( -y => 40, -x => 685 );
    my $console = $ve->Scrolled(
        "ROText",
        -width      => 40,
        -height     => 31,
        -background => $color_fondo,
        -foreground => $color_texto,
        -scrollbars => "e"
    )->place( -x => 580, -y => 84 );

    MainLoop;

    sub addmailist {

        my $adda = MainWindow->new(
            -background => $color_fondo,
            -foreground => $color_texto
        );
        $adda->geometry("400x90+20+20");
        $adda->resizable( 0, 0 );
        $adda->title("Add Mailist");

        $adda->Label(
            -text       => "Mailist : ",
            -background => $color_fondo,
            -foreground => $color_texto,
            -font       => "Impact1"
        )->place( -x => 10, -y => 30 );
        my $en = $adda->Entry(
            -background => $color_fondo,
            -foreground => $color_texto,
            -width      => 33
        )->place( -y => 33, -x => 75 );
        $adda->Button(
            -text             => "Browse",
            -background       => $color_fondo,
            -foreground       => $color_texto,
            -width            => 7,
            -activebackground => $color_texto,
            -command          => \&brona
        )->place( -y => 33, -x => 285 );
        $adda->Button(
            -text             => "Load",
            -background       => $color_fondo,
            -foreground       => $color_texto,
            -width            => 7,
            -activebackground => $color_texto,
            -command          => \&bronaxa
        )->place( -y => 33, -x => 340 );

        sub brona {
            $browse = $adda->FileSelect( -directory => getcwd() );
            my $file = $browse->Show;
            $en->configure( -text => $file );
        }

        sub bronaxa {
            open( FILE, $en->get );
            @words = <FILE>;
            close FILE;

            for (@words) {
                $mailist->insert( "end", $_ );
            }
        }
    }

    sub addfile {

        my $addax = MainWindow->new(
            -background => $color_fondo,
            -foreground => $color_texto
        );
        $addax->geometry("390x90+20+20");
        $addax->resizable( 0, 0 );
        $addax->title("Add File");

        $addax->Label(
            -text       => "File : ",
            -background => $color_fondo,
            -foreground => $color_texto,
            -font       => "Impact1"
        )->place( -x => 10, -y => 30 );
        my $enaf = $addax->Entry(
            -background => $color_fondo,
            -foreground => $color_texto,
            -width      => 33
        )->place( -y => 33, -x => 55 );
        $addax->Button(
            -text             => "Browse",
            -background       => $color_fondo,
            -foreground       => $color_texto,
            -width            => 7,
            -activebackground => $color_texto,
            -command          => \&bronax
        )->place( -y => 33, -x => 265 );
        $addax->Button(
            -text             => "Load",
            -background       => $color_fondo,
            -foreground       => $color_texto,
            -width            => 7,
            -activebackground => $color_texto,
            -command          => \&bronaxx
        )->place( -y => 33, -x => 320 );

        sub bronax {
            $browse = $addax->FileSelect( -directory => getcwd() );
            my $filea = $browse->Show;
            $enaf->configure( -text => $filea );
        }

        sub bronaxx {
            $fi->configure( -text => $enaf->get );
        }
    }

    sub addmail {

        my $add = MainWindow->new(
            -background => $color_fondo,
            -foreground => $color_texto
        );
        $add->geometry("350x90+20+20");
        $add->resizable( 0, 0 );
        $add->title("Add Mail");

        $add->Label(
            -text       => "Mail : ",
            -background => $color_fondo,
            -foreground => $color_texto,
            -font       => "Impact1"
        )->place( -x => 10, -y => 30 );
        my $ew = $add->Entry(
            -background => $color_fondo,
            -foreground => $color_texto,
            -width      => 33
        )->place( -y => 33, -x => 60 );
        $add->Button(
            -text             => "Add",
            -background       => $color_fondo,
            -activebackground => $color_texto,
            -foreground       => $color_texto,
            -width            => 7,
            -command          => \&addnow
        )->place( -y => 33, -x => 275 );

        sub addnow {
            $mailist->insert( "end", $ew->get );
        }

    }

    sub delist {
        $mailist->delete( 0.0, "end" );
    }

    sub spamnow {

        $console->delete( 0.1, "end" );

        my $control = "0";

        my $msg = Net::SMTP::SSL->new( "smtp.gmail.com", Port => 465 );
        if ( $msg->auth( $user->get, $pass->get ) ) {
            $control = "1";
        }
        else {
            $control = "0";
        }
        $msg->quit();

        if ($control) {

            $console->insert( "end", "[+] Starting the Party\n\n" );

            my @mails = $mailist->get( "0.0", "end" );
            chomp @mails;
            for my $mail (@mails) {
                $ve->update;
                $console->insert( "end", "[+] Mail : $mail\n" );

                my $text = $body->get( "1.0", "end" );

                if ( $fi->get eq "None" ) {
                    singlemail( $user->get, $pass->get, $mail, $tema->get, $text,
                        $number->get );
                }
                else {
                    singlemailwithfile( $user->get, $pass->get, $mail, $tema->get,
                        $text, $fi->get, $number->get );
                }
            }
            $console->insert( "end", "\n\n[+] Finished" );
        }
        else {
            $console->insert( "end", "[-] Bad Login\n" );
        }
    }

    sub singlemail {

        my ( $user, $password, $target, $asunto, $mensaje, $cantidad ) = @_;

        for ( 1 .. $cantidad ) {
            my $msg = Net::SMTP::SSL->new( "smtp.gmail.com", Port => 465 );
            $msg->auth( $user, $password );
            $msg->mail( $user . "\n" );
            $msg->to( $target . "\n" );
            $msg->data();
            $msg->datasend( "From: " . $user . "\n" );
            $msg->datasend( "To: " . $target . "\n" );
            $msg->datasend( "Subject: " . $asunto . "\n" );
            $msg->datasend("Content-Type: text/html \n");
            $msg->datasend("\n");
            $msg->datasend( $mensaje . "\n" );
            $msg->dataend();
            $msg->quit();
        }
    }

    sub singlemailwithfile {

        my ( $user, $password, $target, $asunto, $mensaje, $file, $cantidad ) = @_;

        my $mail = Email::Send::SMTP::Gmail->new(
            -smtp  => "gmail.com",
            -login => $user,
            -pass  => $password
        );
        for my $number ( 1 .. $cantidad ) {
            $mail->send(
                -to          => $target,
                -subject     => $asunto,
                -body        => $mensaje,
                -attachments => $file
            );
        }
        $mail->bye;
    }

    sub clean {

        $user->configure( -text => " " );
        $pass->configure( -text => " " );
        $number->configure( -text => " " );
        $fi->configure( -text => "None" );
        $tema->configure( -text => " " );
        $body->delete( 0.1, "end" );
        $mailist->delete( 0.0, "end" );
        $console->delete( 0.1, "end" );

    }

    sub about {
        $about = MainWindow->new( -background => "black" );
        $about->title("About");
        $about->geometry("300x110");
        $about->resizable( 0, 0 );
        $about->Label( -background => "black", -foreground => "white" )->pack();
        $about->Label(
            -text       => "Contact : lepuke[at]hotmail[com]",
            -font       => "Impact",
            -background => "black",
            -foreground => "white"
        )->pack();
        $about->Label(
            -text       => "Web : doddyhackman.webcindario.com",
            -font       => "Impact",
            -background => "black",
            -foreground => "white"
        )->pack();
        $about->Label(
            -text       => "Blog : doddy-hackman.blogspot.com",
            -font       => "Impact",
            -background => "black",
            -foreground => "white"
        )->pack();
    }

    sub chali { exit(1); }

    #The End ?


.:UND3R:.

Hola, muy bueno pero yo le agregaría la opción de aleatorio subjet y mensaje

ya que si se envía siempre el mismo título junto con el mismo mensaje, lo más probable es que se considere como correo no deseado.

Saludos

Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)

BigBear

no se me habia ocurrido eso , gracias por la sugerencia.

H20-X

que pena que no sea en py o en rb a mi en perl no me va :-\

BigBear

Cita de: H20-X en  4 Marzo 2012, 19:56 PM
que pena que no sea en py o en rb a mi en perl no me va :-\

al principio tenia pensado hacerlo en Python pero en Perl hay un modulo llamado Email::Send::SMTP::Gmail que me tiene todo el tema de envio de mails resumido.