народ караул... выручайте, уже месяц разобратся не могу
подключаюсь к прокси, пишу ему 05 01 00, он отвечает 05 00, потом пихаю это 05 01 00 01 сd bc 99 79 35 31 39 30, отвечает 05 00 00 01 30 28 99 02 35 31 и сразу после этого еще 2a 01 73 10 00 04 00 00 00 01 (это приветствие от сервера к которому и надо подключатся через проксю), а вот дальше не пойму... подключится подключился а как чтонить ($data) теперь отправить ? пробовал по всякому и даже никакого ответа не приходило
#!/usr/bin/perl -wT
use Socket;
$host = "69.47.103.139"; #прокси
$port = "58";
print "Content-type: text/html\\n\\n";
socket(SOCK, PF_INET, SOCK_STREAM, getprotobyname(\'tcp\'));
$iaddr = inet_aton($host);
$paddr = sockaddr_in($port, $iaddr);
connect(SOCK, $paddr);
$msg =
"\\x05".
"\\x01".
"\\x00";
send (SOCK, "$msg", 0);
sysread(SOCK,$answer_data,1024); # читаем ответ от сервера
print_data($answer_data); # печатаем ответ от сервера
$msg =
"\\x05".
"\\x01".
"\\x00".
"\\x01".
"\\xcd\\xbc\\x99\\x79". # ip
"\\x35\\x31\\x39\\x30"; # port
send (SOCK, "$msg", 0);
sysread(SOCK,$answer_data,1024); # читаем ответ от сервера
# тут отвечает прокси сервер
print "
";
print_data($answer_data); # печатаем ответ от сервера
sysread(SOCK,$answer_data,1024); # читаем ответ от сервера
# а тут приходит приветствие от сервера icq с которым мне и надо пообщатся через проксю
print "
";
print_data($answer_data); # печатаем ответ от сервера
close(SOCK);
#FUNCTIONS
sub print_data() { # выводим данные в hex
my ($data)=@_;
my $i=0;
foreach(split(//,$data)) {
print unpack(\'H8\',$_)." ";
$i++;
if ($i eq 16) {
print "\\n";
$i=0;
}
}
}
Вот это надо отправить через проксю серверу icq который со мной здаровается:
\\x00\\x2a\\x01\\x13\\x5a\\x00\\x7c\\x00\\x00\\x00\\x01\\x00\\x01\\x00\\x09\\x32\\x34\\x37\\x32\\x37\\x32\\x39\\x35\\x34\\x00\\x02\\x00\\x05\\xc0\\x14\\xb0\\xf2\\x0e\\x00\\x03\\x00\\x2c\\x46\\x61\\x6b\\x65\\x20\\x69\\x63\\x71\\x2d\\x63\\x6c\\x69\\x65\\x6e\\x74\\x20\\x73\\x70\\x65
\\x63\\x69\\x61\\x6c\\x20\\x66\\x6f\\x72\\x20\\x70\\x6f\\x69\\x7a\\x6f\\x6e\\x2e\\x6e\\x65\\x74\\x2e\\x72\\x75\\x20\\x3d\\x29\\x00\\x16\\x00\\x02\\x01\\x0a\\x00\\x17\\x00\\x02\\x00\\x04\\x00\\x18\\x00\\x02\\x00\\x41\\x00\\x19\\x00\\x02\\x00\\x01\\x00\\x1a\\x00\\x02\\x0c\\xd1\\x00
\\x14\\x00\\x04\\x00\\x00\\x00\\x55\\x00\\x0f\\x00\\x02\\x65\\x6e\\x00\\x0e\\x00\\x02\\x75\\x73
без прокси с icq сервером общаюсь нормально
никак не могу догнать как отправить эти данные
описание протокола или подскажите как сделать это через IO::Socket::Socks
#!/usr/bin/perl -wT
use IO::Socket::Socks;
my $socks = new IO::Socket::Socks(ProxyAddr=>"69.47.103.139", ProxyPort=>"58", ConnectAddr=>"login.icq.com", ConnectPort=>"5190", );
$socks->close();
получить главную страницу гугла получается и послушать приветствие от сервера аськи тоже, но вот отправить эти данные (\\x00\\x2a\\x01\\x13\\x5a\\x00\\x7c\\x00\\x00\\x00\\x01\\x00\\x01\\.......) серверу аськи не получается