#!/usr/bin/perl

####################################
# team: runthes                    #
# site: www.runthes.ru             #
# irc:  irc.runthes.ru:6667        #
#                                  #   
# author's: brainw0rk icq: 9797124 #
#           pixcher   icq: 775868  #
####################################            

use Socket;                           # Использовать модуль для сокетов
$end   = "\r\n";                      # $end = "\r\n";
$cgi   = "vulln_scripts.txt";         # Файл с именами дырявых скриптов
$out   = "found.txt";                 # Имя файла, где ведется лог
$port  = 80;                          # Порт сайта

$save_res = 1;                        # Записывать лог файл (0 - нет, 1 - да)
$show_res = 1;                        # Выводить лог на экран (0 - нет, 1 - да)

$all   = 1;                           # Говорить о несуществующих скриптах (0 - нет, 1 - да)

print "\nEnter target (example microsoft.com): ";
$site = <STDIN>;
chomp($site);
print "Wait.........\n\n";

open (DAT, $cgi);                     # Открываем файл с дырявыми скриптами
while ($script = <DAT>) {             # Считываем имя, если еще не конец файла, то продолжаем
chomp($script);
if($script =~ /^eof/i) {
   last;
                       }

$iaddr = inet_aton ($site) || die "Error";
$paddr = sockaddr_in ($port, $iaddr) || die "Error";
$proto = getprotobyname ('tcp') || die "Error";
socket (SOCK, PF_INET, SOCK_STREAM, $proto) || die "Error";
connect (SOCK, $paddr) || die "Error";
send (SOCK,"GET $script HTTP/1.0$end$end",0);

open (OUT, ">>$out");                 # Отрываем файл с логами для записи
$str = <SOCK>;                        # Считываем ответ сервера
if ($str =~ /200/) {                  # Если ответ содержит число 200, то файл существует
   if ($save_res == 1) {
      print OUT $site.$script." - OK\n";
      #print OUT $script." - OK!\n";
                       }
   if ($show_res == 1) {
      print $site.$script." - OK!\n";
                       }
                   }
else {
   #if (($all == 1) && ($save_res == 1)) {
   #print "F*CK - "; write;
   #print OUT $site.$script." - SHIT\n";
   #                                     }
   if (($all == 1) && ($show_res == 1)) {
      #print "F*CK - "; write;
      print $site.$script." - SHIT\n";
                                        }
     }

format STDOUT =
@<<<<<<<<<<<<<<<
$script
.

close (OUT);                          # Закрываем файл с логами
close (SOCK);
                        }             # Заканчиваем соединение
close (DAT);                          # Закрываем базу дырявых скриптов

print "\nDone!\n";
#$end = <STDIN>;

