PHP SMTP i Socks

Статус
В этой теме нельзя размещать новые ответы.

bobo85

Постоялец
Регистрация
29 Окт 2006
Сообщения
124
Реакции
2
U kogo nibud est klass ili prosto kod kotorij otpravljal bi pisma po SMTP cherez Socks??
U menja tut est kod , eslib vi pomogli chtob on eshe i s Socks4 rabotal bilo bi chudo. Ja ne znaju kak eto sdelat

Код:
<?php

set_time_limit(0);

$proxies = explode(PHP_EOL, file_get_contents("proxy.lst"));

function hex2bin($dump) {
  $dump = str_replace(' ', '', $dump); // вырезаем пробелы
  $res='';
  for ($i=0, $c=strlen($dump); $i<=$c; $i+=2) {
       $bt = (isset($dump[$i]) ? $dump[$i] : '0') . (isset($dump[$i+1]) ? $dump[$i+1] : '0');
     $res = $res.chr(hexdec($bt)); // переводим в dec и возвращаем символ по ascii коду
  }
  return $res;
}

function hex($dump) {
  $res='';
  for($i = 0, $c = strlen($dump); $i<$c; $i++)
  {
   if($i+1==strlen($dump)){$res=$res.dechex(ord($dump[$i]));} else {$res=$res . dechex(ord($dump[$i]))." ";}
  }
  return $res;
}

function len_test($dump) {
   if(strlen($dump)==1) {$dump="0".$dump;}
   return $dump;
}

$host = 'smtp.yandex.ru';
$port = 25;

class socks5 {
        var $socket;
        var $connected;
        var $debug;

        function socks5($ip, $port) {
            if ($this->socket = pfsockopen($ip, (int)$port, $errno, $errstr)) {
                $buf["send"] = pack("C3", 0x05, 0x01, 0x00);
                fwrite($this->socket, $buf["send"]);
                $buf["recv"] =  fread($this->socket, 1024);
                $responce = unpack("Cversion/Cmethod", $buf["recv"]);
                if ($responce["version"] == 0x05 and $responce["method"] == 0x00) {
                    return true;
                }
                fclose($this->socket);
            }
            return false;
        }

        function connect($host, $port) {
            if ($this->socket) {
                if (ip2long($host) == -1) {
                    $buf["send"] = pack("C5", 0x05, 0x01, 0x00, 0x03, strlen($host)).$host.pack("n", $port);
                } else {
                    $buf["send"] = pack("C4Nn", 0x05, 0x01, 0x00, 0x01, ip2long(gethostbyname($host)), $port);
                }
                fwrite($this->socket, $buf["send"]);
                $buf["recv"] =  fread($this->socket, 1024);
                $responce = unpack("Cversion/Cresult/Creg/Ctype/Lip/Sport", $buf["recv"]);
                if ($responce["version"] == 0x05 && $responce["result"] == 0x00) {
                    $this->connected = true;
                    return true;
                }
            }
            $this->connected = false;
            return false;
        }

        function send($buffer, $length = 0) {
            if ($length = 0) {
                $length = strlen($buffer);
            }
            if ($this->socket && $this->connected) {
                fwrite($this->socket, $buffer, $length);
          $output = fread($this->socket, 1024);
                return $output;
            }
            return false;
        }
}

foreach($proxies as $proxy) {

     $bad = true;

     if (!empty($proxy)) {
          list($socks_host, $socks_port) = explode(':', $proxy);

          $socks = new socks5($socks_host, $socks_port);
          $socks->connect($host, $port);

           $msg =  "HELO mail.ru\r\n".
               "FROM: support@yandex.ru\r\n".
               "TO: abuse@yandex.ru\r\n";
               "\r\n".
               "TEST\r\n".
               ".";
          $result = $socks->send($msg);


          echo $result;

          $bad = false;
     }
     $fp = fopen( ( $bad ? 'bad' : 'good') . '.txt', 'a+');
     fwrite($fp, $proxy . PHP_EOL);
     fclose($fp);

}




?>


Добавлено через 13 минут
plachu 10WMZ za pomosh
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху