LINUX.ORG.RU

XMPP bad-protocol

 ,


0

2

Когда стало решительно нехрен делать - решил написать жаббероклиент. Слегка задрался с открытием сокета и форматированием xml, но вроде выжил.

Косяк такой получился: открываю поток клиентом, сервер отсылает ответ типа «ты кто такой», отсылаю PLAIN для base64, получаю в ответ bad-protocol. Сервер такой вариант предлагает сам, так что тут все ок.

Как оно все выглядит с точки зрения сервера:

=INFO REPORT==== 2015-05-05 14:41:10 ===
D(<0.458.0>:ejabberd_receiver:320) : Received XML on stream = "<?xml version='1.0'?><stream:stream xmlns:stream='http://etherx.jabber.org/streams' xmlns='jabber:client' xml:lang='en' version='1.0' to='192.168.42.54' from='test@192.168.42.54'>"
=INFO REPORT==== 2015-05-05 14:41:10 ===
D(<0.459.0>:ejabberd_c2s:1553) : Send XML on stream = <<"<stream:features><mechanisms xmlns='urn:ietf:params:xml:ns:xmpp-sasl'><mechanism>SCRAM-SHA-1</mechanism><mechanism>DIGEST-MD5</mechanism><mechanism>PLAIN</mechanism></mechanisms><c xmlns='http://jabber.org/protocol/caps' hash='sha-1' node='http://www.process-one.net/en/ejabberd/' ver='TQ2JFyRoSa70h2G1bpgjzuXb2sU='/><register xmlns='http://jabber.org/features/iq-register'/></stream:features>">>
=INFO REPORT==== 2015-05-05 14:41:21 ===
D(<0.458.0>:ejabberd_receiver:320) : Received XML on stream = "<auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='PLAIN'>XDB0ZXN0XDB0ZXN0</auth>"
=INFO REPORT==== 2015-05-05 14:41:21 ===
D(<0.459.0>:ejabberd_c2s:1553) : Send XML on stream = <<"<failure xmlns='urn:ietf:params:xml:ns:xmpp-sasl'><bad-protocol/></failure>">>

сервер ejabberd

★★★★★

а ресурс, случайно, не нужно во from указывать?

//всегда готовыми либами для коннекта пользовался

alfix ()
Ответ на: комментарий от alfix

ресурс нет, на это пох. могут быть косяки с id, но вроде pidgin на этом этапе id тоже не шлет, тем более что при открытии tls все равно новый поток пришлось бы открывать

upcFrost ★★★★★ ()
Ответ на: комментарий от edigaryev

Только вот к самой проблеме он никак не относится.

в плане? на чем пишу, то и указал. пишу под Колибри, и прокачиваю скорее не чсв, а работу с памятью (вечно лажаю на этом в С)

upcFrost ★★★★★ ()
Ответ на: комментарий от upcFrost

в плане?

Можно заменить «FASM» на название любого другого ассемблера или языка программирования и суть при этом не изменится.

прокачиваю скорее не чсв, а работу с памятью (вечно лажаю на этом в С)

You're doing it wrong.

edigaryev ★★★★★ ()
Ответ на: комментарий от edigaryev

You're doing it wrong.

хз, но мне помогло именно такое ковыряние. пока с памятью напрямую работать не попытался, указатели были полным адом

upcFrost ★★★★★ ()

в тегах нет марки монитора - язабан

anonymous ()

С разморозкой. XMPP - draft на extension, extension на deprecated, deprecated на draft.
Защитать его могут только люди никогда не работавшие с собственно протоколом.

entefeed ☆☆☆ ()
Ответ на: комментарий от upcFrost

пишу под Колибри

Вычеркнул из todo.

d ★★★★ ()

Я telnet'ом так заходил:

<stream:stream xmlns:stream='http://etherx.jabber.org/streams' to='ku.da' xmlns='jabber:client'>
  <iq type='set'>
    <query xmlns='jabber:iq:auth'>
      <username>username</username>
      <password>password</password>
      <resource>telnet</resource>
    </query>
  </iq>

<iq from='username@ku.da/telnet' type='get' id='roster_1'>                       
 <query xmlns='jabber:iq:roster'/>
</iq>

<iq from='username@ku.da/telnet' to='ku.da' id='s2c1' type='result'/>

d ★★★★ ()
Ответ на: комментарий от d

Да, я так пытался сделать (и вроде даже проходило), но потом решил что мол надо следовать rfc, а там совсем другие команды.

upcFrost ★★★★★ ()
Ответ на: комментарий от XVilka

Збс, спасибо. чтоб писать xml набросал макрос, а с чтением проблема была

upcFrost ★★★★★ ()
Ответ на: комментарий от entefeed

Начинаю чувствовать что что-то не так. Сервер возвращает ответ, прилично нарушающий rfc (например там нет открытия потока и вообще id, что уже довольно странно)

upcFrost ★★★★★ ()
Ответ на: комментарий от RussCox

Вырастешь - поймешь.

Начнешь писать свою реализацию протокола XMPP - поймешь.

entefeed ☆☆☆ ()
Ответ на: комментарий от RussCox

Не распарсил. Что это должно было значить?

найди в гугле первые 10 статей о том, как в xmpp клиент к серверу цепляется, и попробуй подсчитать отличия. Там можно вообще положить болт на половину rfc, что чаще всего и происходит

upcFrost ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.