#!usr/bin/perl #Proxy Tester 0.5 #Version Tk #Coded By Doddy H use Cwd; use Tk; use Tk::FileSelect; use Tk::Dialog; use LWP::UserAgent; 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" ); #if ($^O eq 'MSWin32') { #use Win32::Console; #Win32::Console::Free(); #} my $color_texto = "green"; my $color_fondo = "black"; my $newd = MainWindow->new( -background => $color_fondo, -foreground => $color_texto ); $newd->title("Proxy Tester 0.5"); $newd->geometry("370x250+50+50"); $newd->resizable( 0, 0 ); $menula = $newd->Frame( -relief => "sunken", -bd => 1, -background => $color_fondo, -foreground => $color_texto ); my $menulnowax = $menula->Menubutton( -text => "Options", -underline => 1, -background => $color_fondo, -foreground => $color_texto, -activebackground => $color_texto )->pack( -side => "left" ); my $aboutnowax = $menula->Menubutton( -text => "About", -underline => 1, -background => $color_fondo, -foreground => $color_texto, -activebackground => $color_texto )->pack( -side => "left" ); my $exitnowax = $menula->Menubutton( -text => "Exit", -underline => 1, -background => $color_fondo, -foreground => $color_texto, -activebackground => $color_texto )->pack( -side => "left" ); $menula->pack( -side => "top", -fill => "x" ); $menulnowax->command( -label => "Load Wordlist", -background => $color_fondo, -foreground => $color_texto, -command => \&loadword ); $menulnowax->command( -label => "Check Online", -background => $color_fondo, -foreground => $color_texto, -command => \&scan ); $menulnowax->command( -label => "Open Logs", -background => $color_fondo, -foreground => $color_texto, -command => \&openlogs ); $aboutnowax->command( -label => "About", -background => $color_fondo, -foreground => $color_texto, -command => \&aboutxa ); $exitnowax->command( -label => "Exit", -background => $color_fondo, -foreground => $color_texto, -command => \&exitnow ); $newd->Label( -text => "Proxy OK", -font => "Impact", -background => $color_fondo, -foreground => $color_texto )->place( -y => 40, -x => 75 ); my $proxy_buenos = $newd->Listbox( -background => $color_fondo, -foreground => $color_texto ) ->place( -y => "80", -x => "40" ); $newd->Label( -text => "Proxy Failed", -font => "Impact", -background => $color_fondo, -foreground => $color_texto )->place( -y => 40, -x => 220 ); my $proxy_malos = $newd->Listbox( -background => $color_fondo, -foreground => $color_texto ) ->place( -y => "80", -x => "200" ); MainLoop; sub openlogs { my $f = "proxy-founds.txt"; if ( -f $f ) { system($f); } else { $newd->Dialog( -title => "Error", -buttons => ["OK"], -text => "File Not Found", -background => $color_fondo, -foreground => $color_texto, -activebackground => $color_texto )->Show(); } } sub loadword { my $newdax = MainWindow->new( -background => $color_fondo, -foreground => $color_texto ); $newdax->title("Load Wordlist"); $newdax->geometry("460x50+50+50"); $newdax->resizable( 0, 0 ); $newdax->Label( -text => "File : ", -font => "Impact1", -background => $color_fondo, -foreground => $color_texto )->place( -y => 10, -x => 10 ); my $filex = $newdax->Entry( -width => 40, -background => $color_fondo, -foreground => $color_texto )->place( -y => 13, -x => 50 ); $newdax->Button( -text => "Browse", -width => 10, -command => \&bro, -background => $color_fondo, -foreground => $color_texto, -activebackground => $color_texto )->place( -y => 13, -x => 300 ); $newdax->Button( -text => "Load", -width => 10, -command => \&pasouno, -background => $color_fondo, -foreground => $color_texto, -activebackground => $color_texto )->place( -y => 13, -x => 375 ); sub bro { $newd->update; $browse = $newd->FileSelect( -directory => getcwd() ); my $file = $browse->Show; $filex->configure( -text => $file ); } sub pasouno { my $file = $filex->get; $newdax->destroy(); if ( -f $file ) { open( FILE, $file ); my @words = ; close FILE; chomp @words; my @proxies = repes(@words); $proxy_buenos->delete( 0.0, "end" ); $proxy_malos->delete( 0.0, "end" ); $newd->title("Proxy Tester 0.5 [+] Status : Testing ..."); for my $pro (@proxies) { chomp $pro; $newd->update; if ( testnow($pro) ) { $proxy_buenos->insert( "end", $pro ); } else { $proxy_malos->insert( "end", $pro ); } } } else { $newd->Dialog( -title => "Error", -buttons => ["OK"], -text => "File Not Found", -background => $color_fondo, -foreground => $color_texto, -activebackground => $color_texto )->Show(); } } $newd->title("Proxy Tester 0.5"); } sub scan { $proxy_buenos->delete( 0.0, "end" ); $proxy_malos->delete( 0.0, "end" ); $newd->title("Proxy Tester 0.5 [+] Status : Searching ..."); my @uno = getproxys(); my @dos = getxroxy(); #my @tres = proxyip(); #my @cuatro = proxylist(); #my @cinco = proxies(); #big list my @total = ( @uno, @dos, @tres, @cuatro, @cinco ); $newd->update; $newd->title("Proxy Tester 0.5 [+] Status : Testing ..."); my $cont = "0"; for (@total) { $newd->update; if ( testnow($_) ) { $cont++; print "\a"; #BEEP } } $newd->title("Proxy Tester 0.5"); } sub testnow { my $ver = shift; my $pro; my $host; my $port; my $country; my $save; my $test_proxy = LWP::UserAgent->new(); $test_proxy->timeout(5); $test_proxy->agent( "Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1.12) Gecko/20080201Firefox/2.0.0.12" ); if ( $ver =~ /(.*):(.*)/ ) { ( $host, $port, $country ) = ( $1, $2, "Unknown" ); $save = $host . ":" . $port; } if ( $ver =~ /(.*):(.*):(.*)/ ) { ( $host, $port, $country ) = ( $1, $2, $3 ); $save = $host . ":" . $port . ":" . $country; } my $pro = $host . ":" . $port; $test_proxy->proxy( "http", "http://" . $pro ); my $code = $test_proxy->get("http://www.whatismyip.com/")->content; if ( $code =~ /Your IP Address Is/ ) { savefile( "proxy-founds.txt", $save ); return true; } } sub getproxys { my @founds; my @volver; for my $num ( 1 .. 5 ) { $newd->update; my $code = toma( "http://www.proxys.com.ar/index.php?act=list&port=&type=&country=&page=$num" ); while ( $code =~ /(.*?)<\/tr>/sig ) { my $porcion = $1; chomp $porcion; if ( my @total = $porcion =~ m{<\s*td\s*>\s*(.*?)\s*update; open( FILE, ">>proxy.txt" ); my $code = toma( "http://www.xroxy.com/proxylist.php?port=&type=&ssl=&country=&latency=1000&reliability=&sort=reliability&desc=true&pnum=$num" ); while ( $code =~ /proxy:name=XROXY proxy&host=(.*?)&port=(.*?)¬es=(.*?)&/sig ) { my ( $ip, $port, $pais ) = ( $1, $2, $3 ); $port =~ s/&isSocks=true//sig; $port =~ s/&socksversion=4a//sig; push( @founds, "$ip:$port:$pais" ); print FILE "$ip:$port\n"; } } my @founds_final = repes(@founds); return @founds_final; } sub proxies { my @founds_final; my @founds; for my $i ( 1 .. 10 ) { $newd->update; my $code = toma( "http://proxies.my-proxy.com/proxy-list-" . $i . ".html" ); my @found = $code =~ m/(\d{1,3}[.]\d{1,3}[.]\d{1,3}[.]\d{1,3}:\d+)/g; for (@found) { push( @founds, "$_:Unknown" ); } } my @founds_final = repes(@founds); return @founds_final; } sub proxyip { my @founds_final; my @founds; my $code = toma("http://proxy-ip-list.com/free-usa-proxy-ip.html"); if ( $code =~ /(.*?)<\/table>/sig ) { my $codedos = $1; while ( $codedos =~ /(.*?)<\/td>(.*?)<\/td>(.*?)<\/td>(.*?)<\/td>(.*?)<\/td><\/tr>/mig ) { my ( $ip, $pais ) = ( $1, $5 ); push( @founds, "$ip:$pais" ); } } my @founds_final = repes(@founds); return @founds_final; } sub proxylist { my @founds_final; my @founds; my $code = toma("http://www.proxylist.net/"); while ( $code =~ /(.*?)<\/a><\/td>(.*?)<\/a><\/td>/mig ) { my ( $ip, $pais ) = ( $2, $4 ); push( @founds, "$ip:$pais" ); } my @founds_final = repes(@founds); return @founds_final; } sub aboutxa { $newd->Dialog( -title => "About", -buttons => ["OK"], -text => "Coded By Doddy H", -background => $color_fondo, -foreground => $color_texto, -activebackground => $color_texto )->Show(); } sub exitnow { exit 1; } sub savefile { open( SAVE, ">>" . $_[0] ); print SAVE $_[1] . "\n"; close SAVE; } sub toma { return $nave->get( $_[0] )->content; } sub repes { my @limpio; foreach $test (@_) { push @limpio, $test unless $repe{$test}++; } return @limpio; } #The End ?