Olá conhecidos do UndergrounD,
Aqui quem fala é Mental_Way e depois de muito tempo de promessas estou aqui e vou começar a divulgar meus trabalhos, que ficaram totalmente reservados, de forma didática, para contribuir com o conteudo undergound dos brasileiros :)
O que é um Listador de Paginas?
São programas que normalmente automatizam a listagem de sites, ou seja, ao inves de ir em algum buscador e digitar allinurl:"database.php" para achar sites, esses programas agem como facilitadores e listam e gravam os sites em um arquivo txt, para que possa ser utilizado por outro scanner para determinada vulnerabilidade.
Para que servem?
Serve para faciltar a busca de determinada "string" em um buscador, no nosso caso o google.
Quem os usa?
Normalmente utilizados por grupos de defacers para que possam de maneira mais rápida achar sites vulneráveis a determinadas falhas. Para que isso seja possivel eles se utilizam de strings pré-definidas. Isso faz com que sejam possiveis ataques de forma mais eficiênte, para poderem "competir" com outros grupos.
Não só para quem esta começando agora em programação, mais para quem deseja fazer programas semelhantes, acho bom entenderem a lógica de um programa para que tenha uma melhor aprendizagem.
Lógica do programa:
--------------------------------------------------------
Abertura do programa # Tem que ter...
--------------------------------------------------------
Lista de strings # Carrega uma lista de strings # Coloquei essa função para deixar o programa mais funcional
--------------------------------------------------------
Abre o arquivo de strings e salva em uma array # Melhor performace
--------------------------------------------------------
Onde serão salvo os resultados # Forma de personalização do programa
--------------------------------------------------------
Coloca o cabeçario # Uma forma de deixar sua marca
--------------------------------------------------------
Verificação da string # Verifica dentro da string se contem algum espaço para que a requisição seja feita de forma correta
--------------------------------------------------------
Começa a procura # Esta na hora
--------------------------------------------------------
Verifica a autenticação do google # Verifica se na página pede algum tipo de autenticação, uma função para que o scanner não fique parado eternamente OBS: ainda em teste
--------------------------------------------------------
Verifica se naum esta dando erro na requisição # uma função de ultima hora
--------------------------------------------------------
Começa a conexão # para a conexão é necessário a refência para que seja possivel acessar o site sem problemas
--------------------------------------------------------
Procura por links # Se utiliza de odigo fonte padrão para o link das páginas
--------------------------------------------------------
Salva os links em um arquivo e os mostra na tela # Salva os links no arquivo de texto cujo nome foi dado
--------------------------------------------------------
Atribiu um novo valor a $a # Variavel que define em que página o google se encontra
--------------------------------------------------------
LOOP # Volta a procura com o novo valor da variavel $a
--------------------------------------------------------
Finaliza o programa e mostra os resultados # Sempre bom :)
--------------------------------------------------------
Espero ter ajudado a quem ainda não conhece essa ferramenta.
Agora vou parar de enrolar e postar o code.
OBS: para que funcione no linux é necessário que se retire os system (''); ou os substitua por semelhate.
######################################## CUT HERE #########################################
#!/usr/bin/perl # Identificação de código como perl
use IO::Socket::INET; # o Socket que esta sendo usado
system ('title [] - Gerador de Listas Googler c/ lista de palavras - RitulistaS GrouP - [ By Mental_Way ]'); # Colocando o titulo no CMD
system ('color 0a'); # Cor utilizada no Prompt
system ('cls'); # Limpando tela para melhor apresentação para linux deve ser substituido por system ('clear');
print "\n\nIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII\n"; # Titulo
print "IIIIIIIIIIIIIIIIIIIIIIIIII Gerador de Listas Googler IIIIIIIIIIIIIIIIIIIIIIIIII\n";
print "IIIIIIIIIIIIIIIIIIIIIIIIII Com lista de palavras IIIIIIIIIIIIIIIIIIIIIIIIII\n";
print "IIIIIIIIIIIIIIIIIIIIIIIIII RitualistaS GrouP IIIIIIIIIIIIIIIIIIIIIIIIII\n";
print "IIIIIIIIIIIIIIIIIIIIIIIIII [ Mental_Way ] IIIIIIIIIIIIIIIIIIIIIIIIII\n";
print "IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII";
print "\n\n\n[]- Carregar lista de Strings. Ex: Lista_de_strings.txt\n";
print "[]= ";
$ARGV[0] = <STDIN>; # Neste local estarei pedindo para que seja digitado a lista a ser carregada será salva na variavel $ARGV[0]
################ Abrindo lista de strings para procura
chomp ($ARGV[0]);
open (sites, $ARGV[0]) or die "Erro ao abrir lista."; # Caso não consiga abrir a lista sera dado um erro e sairá do programa
@sites = <sites>;
close(sites) ;
print "\n Digite o nome do arquivo onde serão salvo os resultados:\n\n Ex: sites_gov.txt\n\n";
print "[]= ";
$resultados = <STDIN>; #Local onde serão salvo os resultados...
################ Abrindo o arquivo e escrevendo o cabeçario
open(arq,">>$resultados");
print arq "#################################################################\n";
print arq "# #\n";
print arq "# RitualistaS GrouP #\n";
print arq "# #\n";
print arq "# Coder by Mental_Way #\n";
print arq "# #\n";
print arq "# Contato: wental_Way@hotmail.com #\n";
print arq "# #\n";
print arq "# Greetz: AciDmuD, Dark_Side, S4r4d0. #\n";
print arq "# #\n";
print arq "# Greetz all: HackMode Family, Darkers and Google. #\n";
print arq "# #\n";
print arq "#################################################################\n";
print arq "# #\n";
print arq "# Gerador listas GOOGLE c/ lista de palavras. #\n";
print arq "# #\n";
print arq "#################################################################\n";
close(arq);
################ Salvando as strings da lista requerida
foreach $procura(@sites)
{
chomp($procura);
$a=0;
################ Verifica se na lista contém algum caracter com espaços e substitui por + para que seja aceita a requisição pelo google.
if($procura=~ / /){$procura =~ s/ /+/g;}
################ Começa a procura
print "\n\nProcurando por $procura\n\n";
$resul2="";
while($resul2 !~ /resultados omitidos/) # Verifica se a variavel $resul2 contem a frase "resultados omitidos" para parar o loop
{
################ Nova função: Verifica se na página requerida pede autenticação do googler caso isso ocorra naum será mais possivel a busca antes da normalização do sistema
if($resul2=~ m/<TITLE>403 Forbidden<\/TITLE>/)
{
print "\n\n Erro ao tentar fazer requisicao ao Google.";
print "\n\n OBS:\n Caso queira resolver o problema vá no Google, faça uma \"pesquisa longa\" e digite os caracteres pedidos. Caso não de certo espero um tempo.\n\n";
print "\n\n[+] Olhe onde parou a pesquisa no arquivo $resultados\n";
<STDIN>;
exit;
}
############## Função de ultima hora, mais funcional..
if($resul2=~ m/<title>404 Not Found<\/title>/)
{
print "\n\n Erro ao tentar fazer requisicao ao Google. Tente novamente mais tarde.";
print "\n\n OBS:\n Caso queira resolver o problema vá no Google, faça uma \"pesquisa longa\" e digite os caracteres pedidos. Caso não de certo espero um tempo.\n\n";
print "\n\n[+] Olhe onde parou a pesquisa no arquivo $resultados\n";
<STDIN>;
exit;
}
################ Começa a conexão
if($a<100) # Verifica se essa é a primeira pagina de procura
{
$sock = IO::Socket::INET->new(PeerAddr => "www.google.com.br", PeerPort => 80, Proto => "tcp")or next; # Faz a conexão de socket com o www.google.com.br pela porta 80 utilizando o protocolo TCP, caso ocorra erro da continuidade ao codigo
print $sock "GET /search?num=100&hl=pt-BR&q=$procura HTTP/1.0\r\n"; # Requere a página dentro do host
print $sock "Content-type: text/html\n\n"; # O tipo de arquivo a ser enviado
print $sock "Host: www.google.com.br \r\n\r\n"; # O host a ser conectado
print $sock "Referer: http://www.google.com.br/search?hl=pt-BR&q=$procura\n"; # De onde é proveniente essa página, ou seja, a referência.
@resul=<$sock>;
$resul2="@resul";
close($sock);
}
else
{
################ Aqui será feita a mesma conexão acima, porém essa só é executada a partir da segunda página, pois o google necessita da referência para completar o requisição.
$sock = IO::Socket::INET->new(PeerAddr => "www.google.com.br", PeerPort => 80, Proto => "tcp")or next;
print $sock "GET /search?q=$procura&num=100&hl=pt-BR&start=$a&sa=N HTTP/1.0\r\n";
print $sock "Content-type: text/html\n\n";
print $sock "Host: www.google.com.br/ \r\n\r\n";
print $sock "Referer: http://www.google.com.br/search?hl=pt-BR&q=$procura\n";
@resul=<$sock>;
$resul2="@resul";
close($sock);
}
################ Filtro Utilizada para verificar os links do google
FILTRO;
while($resul2=~ m/<h2 class=r><a href=".*?" class=l>.*?<\/a>/) # Procura dentro do código fonte a sequência <h2 class=r><a href="http://www.algumsite.com.br/seila.html" class=l>Algum site</a>
{
$resul2=~ s/<h2 class=r><a href="(.*?)" class=l>.*?<\/a>/$1/; # Seleciona o site e salva no arquivo $1
$ref = $1;
$prox = $ref;
print "$prox\n";
open(arq,">>$resultados"); # Abri o arquivo cujo nome foi dado acima
print arq "$prox\n"; # Grava a variavel $proxy no arquivo
close(arq); # fecha o arquivo
}
$a +=100; # Atribui novo valor a variavel $a que é utilizada para marcar em qual página da pesquisa vc esta
}
}
print "\n\n[+] Olhe a lista no arquivo $resultados\n";
<STDIN>;
######################################## END CUT #########################################
Para quem deseja o programa sem os coments seque nos links abaixo:
http://www.sendspace.com/file/kxk8k2 (http://www.sendspace.com/file/kxk8k2)
http://rapidshare.com/files/16519766/Go ... ta.pl.html (http://rapidshare.com/files/16519766/Googler_lista.pl.html)
http://d.turboupload.com/d/1528807/Goog ... ta.pl.html (http://d.turboupload.com/d/1528807/Googler_lista.pl.html)
Agradeço quem conseguiu ler todo o conteudo e entender, se vc entendeu eu já estou contende em ajudar alguem.
Se vc não entendeu. Espero que um dia consiga entender.

Reprodução permitida desde que citada a fonte.
Espero que tenha gostado e ate +....
Sem +...
Mental_Way
[
wental_way@hotmail.com ]
RitualistaS GrouP
Primeiro trabalho do mental_way que eu vejo publicado lol, na proxima vez coloque o codigo fonte entre "code", fica mais facil para visualizar
Opah, valew por divulgar o trabalho de vocês aqui no darkers.
Parabéns, Ponto Positivo.
parabens pelo seu trabalho mentalway

go continuar assim =]
ate mais
Quando ele busca uma string que o google não encontra resultado algum ele para de buscar!!!
Tem como implementar algum timeout ou coisa do tipo pra ele pular pra proxima?
Abraços