Hi,
Posto agora um simples programa que obtém algumas informações sobre píginas, como lista de links, imagens, scripts, scan de diretórios, etc. O code estí meio lolz, mas acho que é compreensàvel.
http_tool.pl
Bye...Código:# Módulos use LWP::UserAgent; use HTTP::Date; use Switch; init: # Porto de partida # system("clear") -> Linux # system("cls") -> Windows system("clear"); # Limpa a tela; # Mostra as opções ############################################################# print "#################################################\n"; print "####### Simples HTTP Tool - by Dark Side #####\n"; print "#################################################\n\n"; print "Escolha uma tarefa:\n"; print "[1] Obter lista de links de uma pagina\n"; print "[2] Obter lista de imagens de uma pagina\n"; print "[3] Obter arquivos de script de uma pagina\n"; print "[4] Obter arquivos de folhas de estilos de uma pagina\n"; print "[5] Obter informacoes sobre um servidor\n"; print "[6] Procurar por diretorios e arquivos...\n"; print "[7] Sair\n\n"; # Obtém a opção selecionada print "Opcao: "; $op = <STDIN>; chomp $op; switch ($op) { case 1 {&procura_links} # Opção 1 case 2 {&procura_imgs} # Opção 2 case 3 {&procura_scripts} # Opção 3 case 4 {&procura_css} # Opção 4 case 5 {&server_info} # Opção 5 case 6 {&procura_dirs} # Opção 6 case 7 {exit} # Opção 7 else {goto init;} # Nenhuma das opções acima } ############################################################# # Após executar uma das funções acima, com exceção da função EXIT: <STDIN>; goto init; # Retorna ao porto de partida ############################################################# sub get_page() # Obtém uma url { print ">> Digite o endereco:\n"; $page = <STDIN>; chomp $page; if(substr($page,0,7) ne "http://"){ # Inclui HTTP:// antes da url se necessírio $page = "http://$page";} lc $page; # Conversão para minúsculas return $page; } sub get_content() # Obtém o conteúdo { $url = @_[0]; # Parâmetro my $useragent = LWP::UserAgent->new; $resp = $useragent->get($url); # Tenta obter o conteúdo if($resp->is_error) # Em caso de erro { print "Erro ao fazer requisicao."; <STDIN>; goto init; } return lc $resp->as_string; # Retorna o conteúdo em minúsculas } ############################################################# sub tempo() # Formata data/hora: DD-MM-AAAA, HH:MM:SS { my ($data, $time) = split(" ", HTTP::Date::time2iso()); my ($hora, $min,$sec) = split(":", $time); $log_time = "$data, $hora:$min:$sec"; return $log_time; # Retorna o valor } ############################################################# sub procura_links(){ # Procurar links $url = get_page(); # Obtém url print "Obtendo lista de links em $url...\n"; $code = &get_content($url); # Obtém conteúdo print "Links encontrados em: $url\n\n"; open(logfile,">>links.txt"); # Abre arquivo de log -> ampliação @links = split("<a href=\"",$code); # Separa referência dos links $log_time = tempo(); $results = $#links; # Número de resultados print logfile "#############################################\n"; print logfile "Log gerado em: $log_time \n"; print logfile "Pígina: $page\n"; print logfile "Links encontrados: $results\n"; print logfile "#############################################\n"; print logfile " Links: \n"; print logfile "*********************************************\n"; for($i=1;$i<=$#links;$i++) # Percorre o array com os links { $links[$i] =~ m/(.*?)\"/; # Separa somente o link print "$1\n\n"; # Mostra-o na tela print logfile "$1\n\n"; # Inclui no arquivo } # Fecha o arquivo e finaliza close logfile; print "Concluido com $results resultados.\n"; print "Log salvo em \"links.txt\"."; } ############################################################# sub procura_imgs() # Procura imagens { $url = get_page(); # Obtém url print "Obtendo lista de imagens em $url...\n"; $code = &get_content($url); # Obtém conteúdo print "Imagens encontradas em: $url\n\n"; open(logfile,">>imgs.txt"); # Arquivo de log -> ampliação @imgs = split("<img src=\"",$code); # Separa referência das imagens $log_time = tempo(); $results = $#imgs; # Resultados print logfile "#############################################\n"; print logfile "Log gerado em: $log_time \n"; print logfile "Pígina: $page\n"; print logfile "Imagens encontradas: $results\n"; print logfile "#############################################\n"; print logfile " Imagens: \n"; print logfile "*********************************************\n"; for($i=1;$i<=$#imgs;$i++) # Array com as imagens { $imgs[$i] =~ m/(.*?)\"/; # Separa somente as imagens print "$1\n\n"; # Mostra-a na tela print logfile "$1\n\n"; # Inclui no arquivo } close logfile; print "Concluido com $results resultados.\n"; print "Log salvo em \"imgs.txt\"."; } ############################################################# sub procura_scripts(){ # Procurar scripts $url = get_page(); # Obtém url print "Obtendo arquivos de scripts em $url...\n"; $code = &get_content($url); # Obtém conteúdo print "Scripts encontrados em: $url\n\n"; open(logfile,">>scripts.txt"); # Abre arquivo de log -> ampliação # Separa refrência dos scripts @scripts = split("<script src=\"",$code); $log_time = tempo(); $results = $#scripts; # Resultados print logfile "#############################################\n"; print logfile "Log gerado em: $log_time \n"; print logfile "Pígina: $page\n"; print logfile "Scripts encontrados: $results\n"; print logfile "#############################################\n"; print logfile " Scripts: \n"; print logfile "*********************************************\n"; for($i=1;$i<=$#scripts;$i++) # Percorre o array com os scripts { $links[$i] =~ m/(.*?)\"/; # Separa somente o script print "$1\n\n"; # Mostra-o na tela print logfile "$1\n\n"; # Inclui no arquivo } # Fecha o arquivo e finaliza close logfile; print "Concluido com $results resultados.\n"; print "Log salvo em \"scripts.txt\"."; } ############################################################# sub procura_css(){ # Procurar folhas de estilos $url = get_page(); # Obtém url print "Obtendo folhas de estilos em $url...\n"; $code = &get_content($url); # Obtém conteúdo print "Folhas de estilos encontradas em: $url\n\n"; open(logfile,">>css.txt"); # Abre arquivo de log -> ampliação # Separa referência das folhas de estilos @css = split("<link rel=stylesheet href=\"",$code); $log_time = tempo(); $results = $#css; # Resultados print logfile "#############################################\n"; print logfile "Log gerado em: $log_time \n"; print logfile "Pígina: $page\n"; print logfile "Folhas de estilos encontradas: $results\n"; print logfile "#############################################\n"; print logfile " Folhas de Estilos \n"; print logfile "*********************************************\n"; for($i=1;$i<=$#css;$i++) # Percorre o array com as folhas de estilos { $css[$i] =~ m/(.*?)\"/; # Separa somente a folha de estilos print "$1\n\n"; # Mostra-a na tela print logfile "$1\n\n"; # Inclui no arquivo } # Fecha o arquivo e finaliza close logfile; print "Concluido com $results resultados.\n"; print "Log salvo em \"css.txt\"."; } ############################################################# sub server_info() # Obtém informações sobre o servidor { $host = get_page(); # Obtém url print "Obtendo informacoes de $host\n\n"; my $useragent = LWP::UserAgent->new; $resp = $useragent->head($host); # Obtém headers open(logfile,">>info.txt"); $log_time = tempo(); print logfile "#############################################\n"; print logfile "Log gerado em: $log_time \n"; print logfile "Endereco: $host\n\n"; print logfile $resp->headers_as_string; # Inclui os headers no arquivo de log print logfile "#############################################\n"; print $resp->headers_as_string; # Mostra headers na tela close logfile; print "Concluido.\n\n"; print "Log salvo em \"info.txt\"."; } ############################################################# # Cancela o redirecionamento automítico, para visualizarmos a URL de redirecionamento sub LWP::UserAgent::redirect_ok { return 0;} ############################################################# sub procura_dirs() # Procura diretórios e arquivos em um servidor { $f = open(arq,"dirs.txt"); # Tenta abrir o arquivo da lista if($f == 0){ print "Erro ao abrir a lista de diretorios: \"dirs.txt\"."; return;} @dir = <arq>; $page = get_page(); # Obtém URL open(logfile,">>busca_dir.txt"); $log_time = tempo(); print logfile "#############################################\n"; print logfile "Log gerado em: $log_time \n"; print logfile "Endereco: $page\n"; print logfile "#############################################\n\n"; $count = 0; print "Procurando diretorios ou arquivos em $page\n"; for($i=0;$i<=$#dir;$i++) # Percorre toda a lista { $url = $page.$dir[$i]; chomp $url; print "\n\n>> Procurando por $url"; print logfile "\n\n>> Procurando por $url"; my $useragent = LWP::UserAgent->new; $resp = $useragent->head($url); # Obtém header if($resp->is_success){ # Sucesso -> diretório ou arquivo existe print "\n\n>>>>> Encontrado:\n$url"; print logfile "\n\n>>>>> Encontrado:\n$url"; $count++;} if($resp->is_redirect){ # Redirecionamento print "\n\nRedirecionado para:\n".$resp->header("Location"); # Mostra a URL de redirecionamento na tela print logfile "\n\nRedirecionado para:\n".$resp->header("Location"); # Inclui a URL de redirecionamento no arquivo $count++;} } print "\n\nConcluido com $count resultados."; close arq; close logfile; print "\nLog salvo em \"busca_dir.txt\"."; }



Responder com Citação