ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
jabber - проблема с пакетами |

18.02.2009, 22:39
|
|
Members of Antichat - Level 5
Регистрация: 15.06.2008
Сообщений: 941
Провел на форуме: 5111568
Репутация:
2399
|
|
jabber - проблема с пакетами
появилось желание реализовать простой jabber клиент на perl'e.
использовать Net::XMPP и подобние я нехочу.., все делаю через IO::Socket; т.е. сам составляю пакети..
коннект (тут проблеми нету) :
Код:
my $sock = new IO::Socket::INET(
PeerAddr => 'jabber.ru',
PeerPort => 5222, #5223
Timeout => 1,
Proto => 'tcp') or
die " [-] connect \n";
print "connected!\n";
дальше отправляю первий пакет:
Код:
print $sock "<?xml version='1.0' encoding='UTF-8'?><stream:stream to='jabber.ru' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' xml:lang='ru' version='1.0'>";
while ($input = <$sock>){debug($input);}
print ($input);
и вот тут уже маленькая непонятность =\
если отправляю: ....n='1.0'> тогда нету ответа от сервера
если отправляю: ....n='1.0'/> тогда ответ примерно такой:
Код:
<?xml version='1.0'?>
<stream:stream xmlns='jabber:client'
xmlns:stream='http://etherx.jabber.org/streams'
id='1696998121'
from='jabber.ru'
version='1.0'
xml:lang='en'>
<stream:features>
<starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>
<compression xmlns='http://jabber.org/features/compress'><method>zlib</method>
</compression>
<mechanisms xmlns='urn:ietf:params:xml:ns:xmpp-sasl'>
<mechanism>DIGEST-MD5</mechanism><mechanism>PLAIN</mechanism>
</mechanisms>
<register xmlns='http://jabber.org/features/iq-register'/>
</stream:features>
</stream:stream>
окей.. дальше отправляю второй пакет:
Код:
print $sock "<auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='DIGEST-MD5'/>";
read($sock,$input,999);
print ($input);
и что я тут не менят, ответа от сервера нету =\
/>, \n, все что хочеш.., ответа нету =/
помогите пожалуйста, кто знает в чем моя проблемма)
p.s.: http://xmpp.org/ читал,
через wireshark перехватил пакети.
уже смотрел XML консоль в QIP'e.
http://forum.jrudevels.org/viewtopic.php?p=12853
p.p.s.:
вот что я перехватил с помощью wireshark (пакети QIP'а):
( зелений цвет - ответ сервера,
красний цвет - пакет qip'а)
первий пакет успешно отправляю (только конец пакета: "../>", а не "..>")
ответ после первого тоже получаю, такой что нужно.
второй пакет отправляю, а ответа нету =\
|
|
|

20.02.2009, 20:51
|
|
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме: 2769640
Репутация:
1304
|
|
eLWAux Вся проблема в том как раз, что ты сразу закрываешь соединение с jabber сервером.
<stream:stream to='jabber.ru' ..... [b]/[b]> Эквивалентно <stream:stream .... ></stream:stream>
Т.е. Сервер отвечает на начальный пакет, и видя закрытие тэга stream:stream - закрывает соединение
Запусти wireshark и такой скрипт
PHP код:
#!/usr/bin/perl
use IO::Socket;
my $sock = new IO::Socket::INET(
PeerAddr => 'jabber.ru',
PeerPort => 5222, #5223
Timeout => 1,
Type => SOCK_STREAM,
Proto => 'tcp',
Blocking => 0) or
die " [-] connect \n";
print "connected!\n";
print $sock "<?xml version='1.0' encoding='UTF-8'?><stream:stream to='jabber.ru' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' xml:lang='ru' version='1.0'>";
read($sock,$input,529); # цифра взята на глазок
print ($input."\n\n------------\n\n");
print $sock "<auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='DIGEST-MD5'/>";
read($sock,$input,146);
print ($input);
close ($sock);
Будет видно что сервер ответит на оба пакета
Проблема по сути - как получать ответ от сервера. Не зная перл могу предположить, что конструкция while ($input = <$sock>) - будет ждать закрытия сокета и только тогда выведет результат
|
|
|

20.02.2009, 21:45
|
|
Reservists Of Antichat - Level 6
Регистрация: 23.08.2007
Сообщений: 1,237
Провел на форуме: 18127311
Репутация:
1676
|
|
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|