/**
* Php Socks5 Server by KingOfSka @ http://contropotere.netsons.org
*
*
*/
array($dest);
error_reporting(E_ALL);
set_time_limit(0);
ob_implicit_flush();
$address = 燇.0.0.1
$port = 5554;
if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {
echo "socket_create() fallito: motivo: " . socket_strerror($sock) . "\n";
}
if (($ret = socket_bind($sock, $address, $port)) < 0) {
echo "socket_bind() fallito: motivo: " . socket_strerror($ret) . "\n";
}
if (($ret = socket_listen($sock, 5)) < 0) {
echo "socket_listen() fallito: motivo: " . socket_strerror($ret) . "\n";
}
do {
if (($msgsock = socket_accept($sock)) < 0) {
echo "socket_accept() fallito: motivo: " . socket_strerror ($msgsock) . "\n";
break;
}
/** Initial Socks5 HandShake **/
$buf = socket_read($msgsock, 128, PHP_BINARY_READ);
if((implode(,unpack(C3cmd,$buf))) == 510){
$ans = pack(C2,0x05,0x00);
socket_write($msgsock, $ans, strlen($ans));
}
$buf = socket_read($msgsock, 4, PHP_BINARY_READ);
$buf = unpack(C4cmd,$buf);
$at = $buf[cmd4];
switch($at){
case 3 : /** Client gave us Domain Name **/
$buf = socket_read($msgsock, 1, PHP_BINARY_READ);
$buf = unpack(C1len,$buf);
$dest[host] = socket_read($msgsock, $buf[len], PHP_BINARY_READ);
break;
case 1: /** Client gave us IP **/
$buf = socket_read($msgsock, 4, PHP_BINARY_READ);
$hip = $buf;
$buf = unpack(C*,$buf);
$dest[host] = implode(.,$buf);
break;
}
$buf = socket_read($msgsock, 2, PHP_BINARY_READ);
$buf = unpack(nport,$buf);
$dest[port] = $buf[port];
/** Set Up Socket for Remote Host **/
$dsocket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$conn = socket_connect($dsocket, $dest[host], $dest[port]);
switch($at){
case 3: /** Domain Name Address Reply **/
$buf = pack(C5,0x05,0x00,0x00,0x03,strlen($dest[host])).$dest[host].pack("n", $dest[port]);
socket_write($msgsock, $buf, strlen($buf));
break;
case 1: /** Ip Address reply **/
$buf = pack(C4,0x05,0x00,0x00,0x01).$hip.pack("n", $dest[port]);
socket_write($msgsock, $buf, strlen($buf));
break;
}
/** Start data transfer loop **/
do {
if (FALSE === ($req = socket_read($msgsock, 2048, PHP_BINARY_READ))) {
echo "socket_read() fallito: motivo: " . socket_strerror($ret) . "\n";
break 2;
}
$ans = ;
echo $req;
socket_write($dsocket,$req,strlen($req));
$ans = socket_read($dsocket,2048,PHP_BINARY_READ);
echo $ans;
socket_write($msgsock,$ans,strlen($ans));
echo "----r/w completed----\n";
}while (true);
socket_close($msgsock);
socket_close($dsocket);
} while(true);
?>
Monday, June 9, 2008
socks5 server "PHP"
Subscribe to:
Post Comments (Atom)

No comments:
Post a Comment