[Perl] Emails Extractor 0.2

Iniciado por BigBear, Diciembre 27, 2013, 11:35:38 AM

Tema anterior - Siguiente tema

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

Un simple script en Perl para buscar direcciones de correo en :

  • Un archivo de texto cualquiera
  • Una pagina
  • Usando un dork en google para scanear todas las paginas encontradas con el dork
  • Lo mismo que el anterior pero en bing

    El codigo.

    Código: perl

    #!usr/bin/perl
    #Email Extractor 0.2
    #(C) Doddy Hackman 2013
    #Credits : Regex based on
    #http://stackoverflow.com/questions/15710275/print-email-addresses-to-a-file-in-perl
    #Thanks to motherconfessor & amon

    use LWP::UserAgent;
    use URI::Escape;

    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(10);

    my $buscador = qr/[A-Z0-9._%+-]+\@[A-Z0-9.-]+\.[A-Z]{2,4}/i
      ;    # Thanks to motherconfessor & amon
    my @emails;

    head();

    if ( $ARGV[0] eq "-file" ) {

        print "\n[+] Opening file ...\n";

        if ( -f $ARGV[1] ) {

            my $code = openfile( $ARGV[1] );

            while ( $code =~ /($buscador)/g ) {
                my $email = $1;
                push( @emails, $email );
            }

            my @emails = repes(@emails);

            print "\n[+] Mails Found : " . int(@emails) . "\n";

            for (@emails) {
                savefile( $ARGV[2], $_ );
            }

        }
        else {
            print "\n[-] File not found\n";
        }

    }
    elsif ( $ARGV[0] eq "-google" ) {

        print "\n[+] Searching in Google ...\n";

        my @links = google( $ARGV[1], $ARGV[2] );

        print "[+] Scanning [" . int(@links) . "] pages ...\n";

        for my $ink (@links) {
            my $code = toma($ink);

            while ( $code =~ /($buscador)/g ) {
                my $email = $1;
                push( @emails, $email );
            }

        }

        my @emails = repes(@emails);

        print "\n[+] Mails Found : " . int(@emails) . "\n";

        for (@emails) {
            savefile( $ARGV[2], $_ );
        }

    }
    elsif ( $ARGV[0] eq "-bing" ) {

        print "\n[+] Searching in Bing ...\n";

        my @links = bing( $ARGV[1], $ARGV[2] );

        print "[+] Scanning [" . int(@links) . "] pages ...\n";

        for my $ink (@links) {
            my $code = toma($ink);

            while ( $code =~ /($buscador)/g ) {
                my $email = $1;
                push( @emails, $email );
            }

        }

        my @emails = repes(@emails);

        print "\n[+] Mails Found : " . int(@emails) . "\n";

        for (@emails) {
            savefile( $ARGV[3], $_ );
        }

    }
    elsif ( $ARGV[0] eq "-page" ) {

        my $code = toma( $ARGV[1] );

        print "\n[+] Loading page ...\n";

        while ( $code =~ /($buscador)/g ) {
            my $email = $1;
            push( @emails, $email );
        }

        my @emails = repes(@emails);

        print "\n[+] Mails Found : " . int(@emails) . "\n";

        for (@emails) {
            savefile( $ARGV[2], $_ );
        }

    }
    else {
        sintax();
    }

    copyright();

    # Functions

    sub bing {

        my ( $a, $b ) = @_;
        for ( $pages = 10 ; $pages <= $b ; $pages = $pages + 10 ) {
            my $code =
              toma( "http://www.bing.com/search?q=" . $a . "&first=" . $pages );

            while ( $code =~ /<h3><a href="(.*?)"/mig ) {
                push( @founds, $1 );
            }
        }
        my @founds = repes( cortar(@founds) );
        return @founds;
    }

    sub google {
        my ( $a, $b ) = @_;
        my @founds;
        for ( $pages = 10 ; $pages <= $b ; $pages = $pages + 10 ) {
            $code = toma(
                "http://www.google.com.ar/search?hl=&q=" . $a . "&start=$pages" );
            while ( $code =~ /(?<="r"><. href=")(.+?)"/mig ) {
                my $url = $1;
                if ( $url =~ /\/url\?q\=(.*?)\&amp\;/ ) {
                    push( @founds, uri_unescape($1) );
                }
            }
        }
        my @founds = repes( cortar(@founds) );
        return @founds;
    }

    sub cortar {
        my @nuevo;
        for (@_) {
            if ( $_ =~ /=/ ) {
                @tengo = split( "=", $_ );
                push( @nuevo, @tengo[0] . "=" );
            }
            else {
                push( @nuevo, $_ );
            }
        }
        return @nuevo;
    }

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

    sub savefile {

        if ( $_[0] eq "" ) {
            open( SAVE, ">>logs.txt" );
        }
        else {
            open( SAVE, ">>" . $_[0] );
        }

        print SAVE $_[1] . "\n";
        close SAVE;
    }

    sub openfile {
        open my $FILE, q[<], $_[0];
        my $word = join q[], <$FILE>;
        close $FILE;
        return $word;
    }

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

    sub sintax {
        print "\n[+] Sintax : $0 <options> <logs>\n";
        print "\n[+] Examples : \n\n";
        print "[+] $0 -file test.txt logs.txt\n";
        print "[+] $0 -google 50 mailist logs.txt\n";
        print "[+] $0 -bing 50 mailist logs.txt\n";
        print "[+] $0 -page http://localhost/index.php logs.txt\n";
    }

    sub head {
        print "\n-- == Email Extractor 0.2 == --\n";
    }

    sub copyright {
        print "\n-- == (C) Doddy Hackman 2013 == --\n\n";
        exit(1);
    }

    #The End ?


    Mostraria un ejemplo de uso pero puedo tener problemas cuando el script devuelve como 500 mails ajenos claramente para spam xD.

jojojo! Que buena tool Doddy!
Felicitaciones! Vere si la pruebo en estos dias


nice too see this sadsadadwdadw

Grand magnum


No tienes permitido ver los links. Registrarse o Entrar a mi cuenta Advice

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta Funny

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta Tech News