Advertisement
Guest User

Socks 5 Server

a guest
Oct 18th, 2011
493
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.22 KB | None | 0 0
  1. <?php
  2.  
  3.     class socks5 {
  4.         var $socket;
  5.         var $connected;
  6.         var $debug;
  7.    
  8.         function socks5($ip, $port) {
  9.             if ($this->socket = pfsockopen($ip, (int)$port, $errno, $errstr)) {
  10.                 $buf["send"] = pack("C3", 0x05, 0x01, 0x00);
  11.                 fwrite($this->socket, $buf["send"]);
  12.                 $buf["recv"] = "";
  13.                 while ($buffer = fread($this->socket, 1024)) {
  14.                     $buf["recv"] .= $buffer;
  15.                 }
  16.                 $responce = unpack("Cversion/Cmethod", $buf["recv"]);
  17.                 if ($responce["version"] == 0x05 and $responce["method"] == 0x00) {
  18.                     return true;
  19.                 }
  20.                 fclose($this->socket);
  21.             }
  22.             return false;
  23.         }
  24.        
  25.         function connect($host, $port) {
  26.             if ($this->socket) {
  27.                 if (ip2long($host) == -1) {
  28.                     $buf["send"] = pack("C5", 0x05, 0x01, 0x00, 0x03, strlen($host)).$host.pack("n", $port);
  29.                 } else {
  30.                     $buf["send"] = pack("C4Nn", 0x05, 0x01, 0x00, 0x01, ip2long(gethostbyname($host)), $port);
  31.                 }
  32.                 fwrite($this->socket, $buf["send"]);
  33.                 $buf["recv"] = "";
  34.                 while ($buffer = fread($this->socket, 1024)) {
  35.                     $buf["recv"] .= $buffer;
  36.                 }
  37.                 $responce = unpack("Cversion/Cresult/Creg/Ctype/Lip/Sport", $buf["recv"]);
  38.                 if ($responce["version"] == 0x05 and $responce["result"] == 0x00) {
  39.                     $this->connected = true;
  40.                     return true;
  41.                 }
  42.             }
  43.             $this->connected = false;
  44.             return false;
  45.         }
  46.        
  47.         function send($buffer, $length = 0) {
  48.             if ($length = 0) {
  49.                 $length = strlen($buffer);
  50.             }
  51.             if ($this->socket and $this->connected) {
  52.                 fwrite($this->socket, $buffer, $length);
  53.                 while ($recieved = fread($this->socket, 1024)) {
  54.                     $output .= $recieved;
  55.                 }
  56.                 return $output;
  57.             }
  58.             return false;
  59.         }
  60.     }
  61. ?>
  62.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement