elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
27 Mayo 2012, 15:40  


Tema destacado: [Overclocking] Récords de overclock del foro

+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Hacking Avanzado (Moderadores: ANELKAOS, TRICKY)
| | |-+  Filtrado de proxies anonimos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Filtrado de proxies anonimos  (Leído 4,021 veces)
pepeluxx


Desconectado Desconectado

Mensajes: 340


Todos los días se aprende algo nuevo


Ver Perfil WWW
Filtrado de proxies anonimos
« en: 17 Octubre 2008, 13:51 »

Buenas ... como estoy intentando aprender perl pues voy haciendo pequeños programas estupidos y quiero postear este que igual a alguien le puede ser de utilidad :)

Lo que hace basicamente es leer de un fichero (que pasamos como parametro) en el que hay una lista de proxies a testear y te dice cuales son validos, guardando en un fichero los buenos

El formato del fichero debe ser:

IP:puerto
host:puerto
IP:puerto
IP:puerto
host:puerto

La utilidad es obvia, coges un listado de proxies de Internet y te filtra los buenos  :)

Código
#!/usr/bin/perl
 
# Anonymous proxy validation
# by Pepelux - pepelux[at]enye-sec.org
#
# It checks a proxy list and save valid anonymous proxies
#
# Usage: perl proxy.pl [-p <proxy_list>] [-u <url_list>]
#
# You can use a file with a list of proxies, with the format:
# --- proxy_file.txt ---
#    IP:port
#    domain:port
#    IP:port
#    domain:port
# ------
# Or you can use a file with a list of urls that shows a proxy list, with the format:
# --- url_file.txt ---
#    http://site.com/proxylist.txt
#    http://site.com/path/proxies.txt
# ------
 
print "\e[2J";
system(($^O eq 'MSWin32') ? 'cls' : 'clear');
 
use warnings;
use strict;
 
use Socket;
 
use LWP::UserAgent;
my $ua = LWP::UserAgent->new() or die;
my @proxys = ();
my @urls = ();
 
sub load_data {
  my $file = shift;
  my $lin = 0;
  @proxys = ();
 
  if (-e $file) {
     syswrite(STDOUT, "[+] Loading data file ... ", 30);
     open FDATOS, $file;
 
     while(<FDATOS>) {
chop();
 
if ($_ =~ /:/) {
   my @datos = split(/:/, $_);
   my $ipaddr = gethostbyname($datos[0]);
   if($ipaddr) {
      my $ip = inet_ntoa($ipaddr);
      push(@proxys, $ip.":".$datos[1]);
   }
}
     }
 
     close FDATOS;
 
     syswrite(STDOUT, "Ok\n", 5);
     syswrite(STDOUT, "    [-] Loaded " . $#proxys . " proxies\n", 40);
  }
  else {
     syswrite(STDOUT, "[-] Configuration file doesn't found: '".$file."'\n\n",80);
     exit;
  }
}
 
sub load_urls {
  my $file = "proxy_urls.txt";
  my $lin = 0;
 
  if (-e $file) {
     syswrite(STDOUT, "[+] Loading URLs file ... ", 26);
 
     open FDATOS, $file;
     while(<FDATOS>) { push(@urls, $_); }
     close FDATOS;
 
     syswrite(STDOUT, "Ok\n", 5);
  }
  else {
     syswrite(STDOUT, "[-] proxy_urls.txt doesn't found: '".$file."'\n\n",80);
     exit;
  }
}
 
sub load_proxy {
  my $url = shift;
  @proxys = ();
 
  chop($url);
  syswrite(STDOUT, "[+] Downloading data from: " . $url . "\n", 150);
 
  $ua->proxy('http', "");
  $ua->timeout(10);
  my $request = HTTP::Request->new(GET => $url);
  my $response = $ua->request($request);
  my $content = $response->content();
 
  @proxys = split(/\n/, $content);
  syswrite(STDOUT, "    [-] Loaded " . $#proxys . " proxies\n", 40);
}
 
sub check {
  my $content = shift;
  my $ip_real = shift;
  my $proxy = shift;
  my $timeout = shift;
  my $ini = index($content, "Tu IP real es")+17;
 
  if ($ini > 17) {
     $content = substr($content, $ini, length($content)-$ini);
     my $fin = index($content, "</b>");
     $content = substr($content, 0, $fin);
 
     if ($content =~ /$ip_real/) {
syswrite(STDOUT, "    [-] Not an anonymous proxy\n", 25);
return 1;
     }
     else {
syswrite(STDOUT, "    [-] Response: " . $content . " (timeout = " . $timeout . ")\n", 115);
syswrite(FLOG, $proxy . "\n", 25);
return 1;
     }
  }
  else {
     syswrite(STDOUT, "    [-] Response error (timeout = " . $timeout . ")\n", 40);
     return 0;
  }
}
 
sub check_file {
  my $web_url = shift;
  my $ip_real = shift;
  my $type = shift;
 
  open(FLOG, ">log.txt");
 
  my $total = $#proxys;
 
  for (my $i=0; $i <= $total; $i++) {
     my $proxy_url = $proxys[$i];
 
     if ($type == 1) {
chop($proxy_url);
$proxy_url =~ s/\s*//g;
$proxy_url =~ s/\n//g;
     }
 
     my $tmp = $proxy_url;
     syswrite(STDOUT, "[+] Analyzing " . $proxy_url . " ...\n", 40);
     $proxy_url = "http://".$proxy_url if ($proxy_url !~ /^http:/);
     $proxy_url = $proxy_url."/" if ($proxy_url !~ /\/$/);
 
     $ua->proxy('http', $proxy_url); ## proxy_url contains something like http://10.10.10.10:1234/
     $ua->timeout(10);
 
     my $request = HTTP::Request->new(GET => $web_url);
     my $response = $ua->request($request);
     my $content = $response->content();
 
     if (check($content, $ip_real, $tmp, 10) == 0) { # 1st try
$ua->timeout(15);
my $request = HTTP::Request->new(GET => $web_url);
my $response = $ua->request($request);
my $content = $response->content();
 
if (check($content, $ip_real, $tmp, 15) == 0) { # 2sd try
   $ua->timeout(20);
   my $request = HTTP::Request->new(GET => $web_url);
   my $response = $ua->request($request);
   my $content = $response->content();
 
   check($content, $ip_real, $tmp, 20); # 3th try
}
     }
  }
 
  close(FLOG);
}
 
 
my ($type, $pfile) = @ARGV ;
 
if ($#ARGV != 1 || ($type !~ /-p/ &&  $type !~ /-u/)) {
  print "\nUsage: perl $0 [-p <proxy_list>] [-u <url_list>]\n";
  print "\n   [-] -u <url_list> load urls from the file and check each proxy\n";
  print "\n   [-] -p <proxy_list> load proxies to check from the file\n";
  print "                       file format must be: xx.xx.xx.xx:yyyy\n";
  print "                                            host.com:yyyy\n";
  print "\n   [-] Examples: perl $0 -p my_proxies.txt\n";
  print "                 perl $0 -u urls_with_proxies.txt\n\n";
  exit 1;
}
 
#my ($pfile) = @ARGV if ($#ARGV == 0);
 
my $web_url = "http://www.cualesmiip.com/";
 
$ua->proxy('http', "");
$ua->timeout(10);
my $request = HTTP::Request->new(GET => $web_url);
my $response = $ua->request($request);
my $content = $response->content();
 
my $ini = index($content, "Tu IP real es")+17;
$content = substr($content, $ini, length($content)-$ini);
my $fin = index($content, "</b>");
$content = substr($content, 0, $fin);
 
$fin = index($content, "(");
my $ip_real = substr($content, 0, $fin);
 
syswrite(STDOUT, "[+] Your real IP is: " . $ip_real . "\n", 100);
 
if ($type eq "-p") {
  load_data($pfile);
  check_file($web_url, $ip_real, 0);
}
else {
     load_urls();
 
     my $total = $#urls;
 
     for (my $j=0; $j <= $total; $j++) {
load_proxy($urls[$j]);
check_file($web_url, $ip_real, 1);
     }
}
 
print " Log file with the valid proxies has save in 'log.txt'\n";
print " -- END -- \n\n";
 
__END__
 
« Última modificación: 21 Octubre 2008, 02:32 por pepeluxx » En línea

Axus


Desconectado Desconectado

Mensajes: 1.937

Mas vale llegar tarde, que nunca llegar


Ver Perfil WWW
Re: Filtrado de proxies anonimos
« Respuesta #1 en: 18 Octubre 2008, 19:09 »

Buen aporte pepeluxx...

Y claro que alguno que otro le sera de utilidad. ;)

saludos
En línea
lnvisible


Desconectado Desconectado

Mensajes: 456



Ver Perfil
Re: Filtrado de proxies anonimos
« Respuesta #2 en: 20 Octubre 2008, 20:33 »

Que idea más buena, yo quiero aprender python, a ver si me acuerdo de este programa para hacerlo en python cuando aprenda.

Y sería aún mejor que se conectara a una o más páginas web con una lista de proxies  y los cogiera de ahí. Aunque eso a lo mejor ya es muy complicado, no lo se. ???
En línea

pepeluxx


Desconectado Desconectado

Mensajes: 340


Todos los días se aprende algo nuevo


Ver Perfil WWW
Re: Filtrado de proxies anonimos
« Respuesta #3 en: 20 Octubre 2008, 23:15 »

Y sería aún mejor que se conectara a una o más páginas web con una lista de proxies  y los cogiera de ahí. Aunque eso a lo mejor ya es muy complicado, no lo se. ???

Pues es una buena idea ... voy a ver si lo añado y lo subo :)
En línea

Azielito
no es
CoAdmin
***
Desconectado Desconectado

Mensajes: 9.114


>.<


Ver Perfil WWW
Re: Filtrado de proxies anonimos
« Respuesta #4 en: 20 Octubre 2008, 23:29 »

peron, le modifique tu post para ponerle

[code=perl][/code]
En línea

pepeluxx


Desconectado Desconectado

Mensajes: 340


Todos los días se aprende algo nuevo


Ver Perfil WWW
Re: Filtrado de proxies anonimos
« Respuesta #5 en: 21 Octubre 2008, 00:16 »

peron, le modifique tu post para ponerle

[code=perl][/code]

Jejeje gracias :)  precisamente estaba viendo como ponerle los colores al code
En línea

pepeluxx


Desconectado Desconectado

Mensajes: 340


Todos los días se aprende algo nuevo


Ver Perfil WWW
Re: Filtrado de proxies anonimos
« Respuesta #6 en: 21 Octubre 2008, 01:46 »

Arriba teneis el codigo actualizado ... ahora se pueden usar urls tambien. El problema es que la url debe mostrar un fichero de texto con IP:port ... si me pongo a fitlrar seria diferente para cada url y como hay muchas que ofrecen la info asi pues ... no me complique mas

Aqui teneis algunas que he encontrado, por si quereis probar:

Código:
http://www.proxyleech.com/proxylist.txt
http://members.tripod.com/professor_x5/proxylist.txt
http://white55.narod.ru/downloads/proxylist.txt
http://www.admuncher.com/proxylist.txt
http://utenti.lycos.it/alimohamed/proxylist.txt
http://www.tubeincreaser.com/proxylist.txt
http://referral.h10.ru/proxylist.txt
http://www.turboviewsandhits.com/proxylist.txt

La forma de uso es:

Código:
perl proxy.pl -p <fichero_con_lista_de_proxies>

contenido del fichero: ip:puerto o host:puerto

Código:
perl proxy.pl -u <fichero_con_lista_de_urls>

... urls como las que puse arriba
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines