ICQ-плагин (oscar v7/v8) не проходит этап авторизации
От: Sulik Россия http://nickpasko.blogspot.com
Дата: 28.11.03 09:57
Оценка:
Никто не встречался с таким глюком?

Суть такова:
Осуществляю подключение через сокет (C# .NET), адрес и порт:


         this.m_sHost               = "login.icq.com";//sHost;
         this.m_nPort               = 12434;//nPort; - тут пробовал 5190, а это значение взял из Аси - разницы не было

.



Читаю через Socket.Receive()
Получаю нормальный FLAP-пакет с DWORD 0x00000001 — запрос на UIN/password

С помощью Socket.Send() Отсылаю FLAP:
Packet_ID 0x2A (FLAP)
Channel_ID 0x01 (Authorization)
Sequence (WORD)
Length (WORD)
Data (DWORD) 0x00000001 (Запрос на авторизацию)
Дальше идут TVL формата: Type (WORD), Length (WORD), Value (по-разному)
0x1, Length, UIN — кстати, в каком формате посылать? Каждый символ в своем байте, или перевести в шестнадцатиричный?
0x2, Length, Password (от балбы брал)
0x3, Length, "ICQ Inc. — Product of ICQ (TM).2000a.4.31.1.3143.85" — перевел сначала в CharArray, потом в Byte[]
0x16, Length, 0x010A
0x17, Length, 0x0004
0x18, Length, 0x001F
0x19, Length, 0x0001
0x1A, Length, 0x0C47
0x14, Length, 0x00000055
0x0F, Length, "en"
0x0E, Length, "us" — Эти значения не переводил, забил просто как строки

По идее сервер должен ответить пакетом, содержащим TLV-4 и TLV-8, поскольку был послан неправильный пароль.
В реальности же сервер не отвечает вообще. Во всяком случае, Socket.Receive() не получает больше ни одного байта.

В чем тут прикол? Может быть, я посылаю некорректные данные? Или не туда стучусь? Или сервер не может прочитать моих данных (возможно ли, что они просто в неправильном формате, и поэтому сервер молчит?)
Сознание определяет бытие!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.