Se trata de un simple programa que detecta los listados de directorios. El problema surge cuando a partir de "for my $probar(@repetidos) {", donde trato de detectar si un directorio ya fue visto para así ignorar los repetidos en el array del mismo nombre.
Using perl Syntax Highlighting
- 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");
- unless ( $ARGV[0] ) { print "mal"; }
- else { escalar( $ARGV[0] ); }
- sub escalar {
- my $code = toma( $_[0] );
- my @links = get_links($code);
- if ( $code =~ /Index of (.*)</ig ) {
- my $dir_found = $1;
- chomp $dir_found;
- print "[+] Directory Found : $dir_found\n\n";
- while ( $code =~ /<a href=\"(.*)\">(.*)<\/a>/ig ) {
- my $ruta = $1;
- my $nombre = $2;
- unless ( $nombre =~ /Parent Directory/ig or $nombre =~ /Description/ig ) {
- print "[+] File Found : $nombre\n";
- }
- }
- }
- #get more
- 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;
- for my $probar (@repetidos) {
- print $parche;
- unless ( $parche =~ /$probar/ ) {
- print "paso\n";
- push( @repetidos, $parche );
- escalar( $_[0] . $parche );
- }
- }
- }
- }
- }
- #
- }
- 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 );
- }
- }
- # Coded by Doddy
Coloreado en 0.005 segundos, usando GeSHi 1.0.8.4
¿ Alguien me puede ayudar ?