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
# 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\".";
}
Bye...
Puts..
Não satisfeito em já codar:C/C++,VB,Delphi,ASM,PHP,HTML,JavaScript...
Agora quer codar Perl tb

Muito bom..
Cara muito bom...
Apesar de ter dado uns errinhos aqui mas coisa a toa!
rsrsrsr
Parabens pelo code!!!
Vlws
lol
É amigo
Dark_Side, eu por não entender nada de programação não estou te dando Pontos Positivos, eu sempre fico esperando alguém comentar pra depois gratificá-lo...
Desculpe-me e
Ponto Positivo pela sua ajuda contínua ao fórum...
pera ai , vc nao entende de programaçao

ta na hora de corre atras do prejuizo
@Dark_Side
Parabens ae pelo programa velho
já aproveitando o tópico..
tipow quais sao as linguagens de programaçao e web mais "simples" pra kem ta começando agora
to akabando uma apostila aki de logica de programaçao e vo entra fundo no eskema agora
vlws
Quote from: "nizep"@Dark_Side
Parabens ae pelo programa velho
já aproveitando o tópico..
tipow quais sao as linguagens de programaçao e web mais "simples" pra kem ta começando agora
to akabando uma apostila aki de logica de programaçao e vo entra fundo no eskema agora
vlws
estude HTML -> java script - >PHP -> perl ->C/C++
Siga essa ordem, se você quizer

ate mais
Quote from: "OnlyOne"pera ai , vc nao entende de programaçao ;)