[Perl] Finder Paths 0.6

Iniciado por BigBear, Abril 07, 2012, 09:02:39 PM

Tema anterior - Siguiente tema

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

Abril 07, 2012, 09:02:39 PM Ultima modificación: Marzo 14, 2015, 10:18:43 AM por Expermicid
Un simple script para buscar los famosos listados de directorios en una pagina.

Código: perl

#!usr/bin/perl
#Finder Paths 0.6
#Coded By Doddy H

use LWP::UserAgent;
use URI::Split qw(uri_split);
use HTML::LinkExtor;

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"
);

head();

print "[+] Web : ";
chomp( my $web = <stdin> );

print "\n\n[+] Scan Type\n\n";
print "[+] 1 : Fast\n";
print "[+] 2 : Full\n";

print "\n\n[+] Option : ";
chomp( my $op = <stdin> );

print "\n\n[+] Scanning ....\n\n\n";

if ( $op eq "1" ) {
    simple($web);
}
elsif ( $op eq "2" ) {
    escalar($web);
}
else {
    simple($web);
}
copyright();

sub escalar {

    my $co    = $_[0];
    my $code  = toma( $_[0] );
    my @links = get_links($code);

    if ( $code =~ /Index of (.*)/ig ) {
        print "[+] Link : $co\n";
        savefile( "paths-logs.txt", $co );
        my $dir_found = $1;
        chomp $dir_found;
        while ( $code =~ /<a href=\"(.*)\">(.*)<\/a>/ig ) {
            my $ruta   = $1;
            my $nombre = $2;
            unless ( $nombre =~ /Parent Directory/ig
                or $nombre =~ /Description/ig )
            {
                push( @encontrados, $_[0] . "/" . $nombre );
            }
        }
    }

    for my $com (@links) {
        my ( $scheme, $auth, $path, $query, $frag ) = uri_split( $_[0] );
        if ( $path =~ /\/(.*)$/ ) {
            my $path1 = $1;
            $_[0] =~ s/$path1//ig;
            my ( $scheme, $auth, $path, $query, $frag ) = uri_split($com);
            if ( $path =~ /(.*)\// ) {
                my $parche = $1;
                unless ( $repetidos =~ /$parche/ ) {
                    $repetidos .= " " . $parche;
                    my $yeah = "http://" . $auth . $parche;
                    escalar($yeah);
                }
            }
            for (@encontrados) {
                escalar($_);
            }
        }
    }
}

sub simple {

    my $code  = toma( $_[0] );
    my @links = get_links($code);

    for my $com (@links) {
        my ( $scheme, $auth, $path, $query, $frag ) = uri_split( $_[0] );
        if ( $path =~ /\/(.*)$/ ) {
            my $path1 = $1;
            $_[0] =~ s/$path1//ig;
            my ( $scheme, $auth, $path, $query, $frag ) = uri_split($com);
            if ( $path =~ /(.*)\// ) {
                my $parche = $1;
                unless ( $repetidos =~ /$parche/ ) {
                    $repetidos .= " " . $parche;
                    my $code = toma( "http://" . $auth . $parche );

                    if ( $code =~ /Index of (.*)</ig ) {
                        my $dir_found = $1;
                        chomp $dir_found;
                        my $yeah = "http://" . $auth . $parche;
                        print "[+] Link : $yeah\n";
                        savefile( "paths-logs.txt", $yeah );
                    }
                }
            }
        }
    }
}

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

sub get_links {

    $test = HTML::LinkExtor->new( \&agarrar )->parse( $_[0] );
    return @links;

    sub agarrar {
        my ( $a, %b ) = @_;
        push( @links, values %b );
    }
}

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

sub head {
    print qq(


@@@@@ @           @             @@@@@           @         
@                 @             @    @       @  @         
@                 @             @    @       @  @         
@     @ @ @@   @@@@  @@@  @@    @    @  @@@  @@ @ @@   @@
@@@@  @ @@  @ @   @ @   @ @     @@@@@      @ @  @@  @ @  @
@     @ @   @ @   @ @@@@@ @     @       @@@@ @  @   @  @ 
@     @ @   @ @   @ @     @     @      @   @ @  @   @   @
@     @ @   @ @   @ @   @ @     @      @   @ @  @   @ @  @
@     @ @   @  @@@@  @@@  @     @       @@@@  @ @   @  @@





);
}

sub copyright {
    print "\n\n(C) Doddy Hackman 2012\n\n";
    <stdin>;
    exit(1);
}

# The End ?