Цитата:
Сообщение от igelius
Скинь пожалуйста, может мне легче будет разобраться. Гугл уже задрочил этой темой.
|
Вот накидал псевдокод.
Но все же, смотри вики. Там нормально описан протокол.
https://ru.wikipedia.org/wiki/SOCKS#....D0.BB_SOCKS_5
PHP код:
function connect {
write( pack('c*', 0x05, length @auth_methods, @auth_methods) );
@buf = unpack('C2', read(2));
die 'Bad socks version' if $buf[0] != 5;
if ($buf[1] == 0) {
authorized();
} elsif {
write(join '' =>
pack('CC', 1, length $proxy_username),
$proxy_username,
pack('C', length $proxy_password),
$proxy_password,
);
@buf = unpack('C2', read(2));
die 'auth: failed read data' if $buf[00] != 1;
die 'auth: declined' if $buf[1] != 0;
authorized();
} else {
die 'need another auth';
}
}
function authorized {
write( pack('C8n', 0x05, 0x01, 0x00, 0x01, split('.', $ip), $port) );
@buf = unpack('C*', read(0x0A));
die ''Bad socks5 version'' if $buf[0] != 5;
if ($buf[1] == 0) {
# success
return 1;
} else {
die 'connection failed: error code: '.$buf[1];
}
}