www.haggis.narod.ru


Главная
Обои
Хакерство
Музыка
Юмор
flash-мульты
flash-игры
Программы
Ссылки

Хакерство


Версия 2 протокола ICQ

Об этом документе

Если Вы хотите прочесть оригинальный документ по второй версии протокола ICQ или подписаться на рассылку, то воспользуйтесь следующим линком: http://www.student.nada.kth.se/~d95-mih/icq/

Этот документ - неофициальная спецификация, основанная исключительно на исследовании TCP/UDP-пакетов, и на данных, полученных из списка рассылки. Это означает, что информация, представленная здесь возможно частично неверная (или будет неверной):-)). Это означает, что если некоторые части спецификации правильны, то они могут быть изменены в любой момент по повелению Божественной Силы Мирабилис :-))

ICQ-клоны

Со времени опубликования этого документа было созданно по крайней мере 2 различных ICQ-клона. Они еще не дописаны, но по крайней мере частично функционируют :-) Для получения подробной информации по этому вопросу воспользуйтесь вышеприведенным линком на страничку Magnus Ihses.

Что было сделано

Самым большим недостатком этого документа является малое количество информации по 3-му и 4-му протоколам ICQ. Эти версии используются ICQ98 (старая бета-версия ICQ98 кажется использует только 3-й протокол, более поздняя версия использует оба этих протокола). Данный документ описывает только версию 2 протокола ICQ, которая в последний раз использовалась в версии ICQ 1.113. Заметьте, что номера версий ICQ привязаны к Win NT/95, т.е. я думаю, что Mac и Java версии ICQ до сих пор используют вторую версию протокола (поправьте меня, если я ошибаюсь) Так какие различия между версией 2 и 3/4 версиями протокола ICQ? Насколько я знаю, наибольшее различие состоит в том, что пакеты в 3/4 версии содержат некий присоединенный уникальный код. Я думаю, что это часть схемы анти-spoof. Мне не удалось выяснить, как этот код сгенерирован, и нуждаюсь в помощи по этому вопросу. Имеются также незначительные изменения в формате пакета. Основная структура осталась неизменной. То, что этот документ не описывает 3 и 4 версии протокола, совсем не означает, что его нельзя использовать при написании ICQ-клона. Серверы Мирабилис все еще поддерживают вторую версию (или по крайней мере поддерживали, когда я проверял это). Можно предположить, что рано или поздно поддержка исчезнет, как например теперь не используется первая версия протокола ICQ. Кроме того, есть некоторые поля в пакетах, назначения которых я выяснить не смог. И, в заключение в этом документе не описаны такие элементы ICQ, как передача файлов и чат.

Введение

Интерактивная связь между клиентами выполняется через прямое TCP-соединение. Все другие связи осуществляются при помощи UDP-пакетов, посланных на ICQ-сервер. Получение UDP-пакета должно быть подтверждено (квитировано) получателем. Если подтверждение не получено, то в течении 10 секунд будет выполнена повторная ретрансляция. После 6 неудачных попыток будет послано B_MESSAGE_ASK сообщение. Вся процедура повторяется 2 раза. И если оба раза не будет ответа, то принимается что пользователь в офф-лайне.

Прежде чем устанавливать любой вид связи, клиент должен залогиниться на сервер. Во время процесса логина клиент засылает на сервер информацию о себе, включающую IP-адрес, TCP-порт, выделенный под ICQ, пароль и свой контакт лист. С этого момента принимается, что клиент присоединен к серверу и он теперь будет посылать на него сообщения-подтверждения того, что он в он-лайне ("keep alive" сообщения). По умолчанию, клиент подсоединен к серверу через UDP-порт 4000.

Такие функции, как отправка сообщения пользователю, находящемуся в офф-лайне, получение информации о пользователе, поиск пользователя в ICQ Global Directory и изменение пароля, осуществляются путем отправки UDP-пакетов на сервер. Структура этих пакетов проста, они содержат UIN-адрес отправителя, специальный код, указывающий серверу, какую операцию он должен выполнить, и некоторые параметры.

Когда пользователь отправляет сообщение, URL или что-либо иное пользователю, находящемуся в он-лайне, между этими пользователями устанавливается TCP-соединение, формат отправляемых сообщений будет схожий (но не идентичный) с форматом, использующимся при UDP-передаче. После того, как сообщение отправлено, TCP-соединение не закрывается, а остается открытым для передачи будущих сообщений. TCP-соединение будет закрыто, когда один из пользователей уйдет в офф-лайн.

Обратите внимание на то, что все числа в этом документе представлены в шестнадцатеричной системе счисления - сначала идет младший байт, затем старший. Все строки заканчиваются NULL.

Связь между сервером и клиентом с использованием UDP

UDP-пакет, посланый клиентом на сервер имеет следующий формат:

Длина

Содержание (если установлено)

Сигнатура

Описание

2 байта

02 00

VERSION

Версия протокола

2 байта

xx xx

COMMAND

  Код операции, которую должен выполнить сервер

2 байта

xx xx

SEQ_NUM

Последовательный номер

4 байта

xx xx xx xx

UIN

UIN отправителя

переменная

 

PARAMETERS

Параметры посылаемой команды

UDP-пакет, посланый сервером клиенту имеет следующий формат:

Длина

Содержание (если установлено)

Сигнатура

Описание

2 байта

02 00

VERSION

Версия протокола

2 байта

xx xx

COMMAND

  Код операции, которую выполнил сервер

2 байта

xx xx

SEQ_NUM

Последовательный номер

переменная

 

PARAMETERS

Параметры посылаемой команды

Поле Version присуствует во всех ICQ-пакетах, оно идентифицирует пакет как ICQ-сообщение. SEQ_NUM содержит уникальный последовательный номер пакета. Это необходимо, чтобы избежать неприятностей, если пакет будет потерян или продублирован (такое случается). Обычно номер текущего пакета на 1 больше номера предыдущего. Отметьте, что сервер и клиент имеют раздельные системы нумерования - пакет с SEQ_NUM=3, посланный с сервера, отличен от пакета с SEQ_NUM=3, отосланного клиентом. Сервер начинает счет с 00 00, клиент с 01 00.

Клиент может послать на сервер следующие команды:

Код Название Описание
0A 00 ACK Подтверждение
0E 01 SEND_MESSAGE Послать сообщение пользователю в офф-лайн
E8 03 LOGIN Залогиниться на сервер
06 04 CONTACT_LIST Проинформировать сервер о своем контакт листе
1A 04 SEARCH_UIN Искать пользоватея по его UIN
24 04 SEARCH_USER Искать пользователя по его имени или эл.адресу

2E 04

KEEP_ALIVE

Послать сообщение-индикатор, что отправитель в он-лайне

38 04 SEND_TEXT_CODE Послать специальное сообщение на сервер как текст
4C 04 LOGIN_1 Посылается во время логина
60 04 INFO_REQ Запросить основную информацию о пользователе
6A 04 EXT_INFO_REQ Запросить расширенную информацию о пользователе
9C 04 CHANGE_PASSWORD Сменить пароль пользователя
D8 04 STATUS_CHANGE Сменить он-лайн статус (Away и др.)
28 05 LOGIN_2 Посылается во время логина

Еще детально не описаны (в версии 0.1 этого документа):

0A 05 UPDATE_INFO Обновить основную информацию о пользователе
B0 04 UPDATE_EXT_INFO Обновить расширенную информацию о пользователе
3C 05 Добавить пользователя в контакт лист
56 04 REQ_ADD_TO_LIST Запросить авторизацию на добавление
BA 04 QUERY_SERVERS Спросить сервер об адресах других серверов
C4 04 QUERY_ADDONS Спросить сервер об глобально определенных серверах

EC 04

NEW_USER_1

Запросить разрешение на добавление нового пользователя

FC 03 NEW_USER_REG Зарегистрировать нового пользователя
A6 04 NEW_USER_INFO Послать основную информацию о новом пользователе
42 04 CMD_X1 неизвестно
56 04 MSG_TO_NEW_USER Послать сообщение пользователю не из своего контакт листа

Следующие команды посылаются сервером клиенту в ответ на команду клиента или для оповещения клиента о каком-либо событии:

Код Название Описание
0A 00 ACK Ответ на подсоединение к серверу
5A 00 LOGIN_REPLY Послать сообщение пользователю в офф-лайн
6E 00 USER_ONLINE Пользователь из контакт листа в он-лайне или сменил свой он-лайн-статус
78 00 USER_OFFLINE Потльзователь из контакт листа ушел в офф-лайн
8C 00 USER_FOUND Искомый пользователь найден
DC 00 RECEIVE_MESSAGE Пока вы были в офф-лайне вам было послано сообщение

A0 00

END_OF_SEARCH

Окончание поиска, больше не придет ни одного пакета USER_FOUND

18 01 INFO_REPLY Возвращает основную информацию о пользователе
22 01 EXT_INFO_REPLY Возвращает расширенную информацию о пользователе
A4 01 STATUS_UPDATE Пользователь из контакт листа сменил свой он-лайн-статус (Away и т.п)

Еще детально не описаны (в версии 0.1 этого документа):

1С 02 REPLY_X1 неизвестно
E6 00 REPLY_X2 неизвестно
E0 01 UPDATE_REPLY Подтверждение об обновлении основной информации о пользователе
C8 00 UPDATE_EXT_REPLY Подтверждение об обновлении расширенной информации о пользователе
46 00 NEW_USER_UIN Подтверждение о регистрации нового пользователя
B4 00 NEW_USER_REPLY Подтверждение основной информации о новом пользователе

82 00

QUERY_REPLY

Ответ на QUERY_SERVERS и QUERY_ADDONS

C2 01 SYSTEM_MESSAGE Системное сообщение с кнопкой, содержащей URL

Рассмотрим UDP-сообщения более подробно.

Сообщения, посланные клиентом

ACK

0A 00

Подтверждение. Параметры отсутствуют.

Примечание! Порядковый номер в заголовке пакета содержит порядковый номер полученного с сервера пакета (квитанции)

SEND_MESSAGE

0E 01

Эта команда используется, чтоб послать сообщение пользователям, находящимся в off-line.

Параметры

Длина

Содержание

Сигнатура

Описание

4 байта

xx xx xx xx

RECIEVER_UIN

номер аси пользователя, которому отсылается сообщение

2 байта

см. ниже

MESSAGE_TYPE

тип сообщения

2 байта

xx xx

MESSAGE_LENGTH

длина сообщения, включающего заключительный NULL-байт

переменная

xx...00

MESSAGE_TEXT

текст сообщения, включающий заключительный NULL-байт

MESSAGE_TYPE может быть одним из следующих:

Сигнатура Значение Описание
MSG_TXT 01 00 Обычное текстовое сообщение
MSG_URL 04 00 URL-сообщение, состоит из 2-х частей, разделенных 0xFE. Первая - описание URL, вторая - непосредственно сам URL

LOGIN

E8 03

Этот пакет используется для подключения (log) к серверу.

Параметры

Длина

Содержание

Сигнатура

Описание

4 байта

xx xx xx xx

PORT

порт для TCP-соединения

2 байта

xx xx

PASS_LENGTH

длина пароля, включающая NULL

переменная

xx...00

PASSWORD

строка, содержащая пароль и заканчивающаяся NULL

4 байта

78 00 00 00

X1

неизвестно

4 байта

xx xx xx xx

USER_IP

IP

1 байта

04

X2

неизвестно

4 байта

xx xx xx xx

STATUS

Статус пользователя, обычно 00 00 00 00

4 байта

02 00 00 00

X3

неизвестно

2 байта

xx xx

LOGIN_SEQ_NUM

Последовательный номер логина

4 байта

00 00 00 00

X4

неизвестно

4 байта

08 00 78 00

X5

неизвестно

CONTACT_LIST

06 04

Эта команда используется для информирования сервера о своем контакт листе

Параметры

Длина

Содержание

Сигнатура

Описание

2 байта

xx xx

NUM_CONTACTS

количество UIN в этом пакете

4 байта

xx xx xx xx

UIN_1

1-й UIN в вашем контакт листе

...

...

size=1>...

...

4 байта

xx xx xx xx

UIN_n

последний UIN в вашем контакт листе

SEARCH_UIN

1A 04

Поиск пользователя с заданным UIN

Параметры

Длина

Содержание

Сигнатура

Описание

2 байта

xx xx

SEARCH_SEQ_NUM

последовательный номер (уникальный)

4 байта

xx xx xx xx

SEARCH_UIN

искомый UIN

Ответ с сервера будет содержать соответствующее запросу значение SEARCH_SEQ_NUM.

SEARCH_USER

24 04

Поиск пользователя по его имени или эл. адресу.

Параметры

Длина

Содержание

Сигнатура

Описание

2 байта xx xx SEARCH_SEQ_NUM последовательный номер

2 байта

xx xx

LENGTH

длина ника (включая NULL)

переменная

 

NICK_NAME

Ник, заканчивающийся NULL

2 байта

xx xx

LENGTH

длина имени (включая NULL)

переменная

 

FIRST_NAME

Имя, заканчивающееся NULL

2 байта

xx xx

LENGTH

длина фамилии (включая NULL)

переменная

 

LAST_NAME

Фамилия, заканчивающаяся NULL

2 байта

xx xx

LENGTH

длина эл.адреса (включая NULL)

переменная

  EMAIL

Эл. адрес, заканчивающийся NULL

Заметьте, что поля поиска (NICK_NAME, FIRST_NAME, LAST_NAME, E_MAIL) могут быть пустыми, но не все одновременно, хотя бы одно должно содержать данные. Также отметьте, что вы можете начинать поиск, когда заполнено только одно поле EMAIL (все остальные поля пусты) или поле Name (но тогда хотя бы одно из остальных полей должно быть заполнено).

KEEP_ALIVE

2E 04

Эта команда должна посылаться серверу каждые 2 минуты. Если она не будет послана, то сервер примет, что вы находитесь off-line.

Параметров нет.

SEND_TEXT_CODE

38 04

Этот пакет используется для отправки серверу специальных команд как текста.

Параметры

Длина

Содержание

Сигнатура

Описание

2 байта

xx xx

LENGTH

длина текстовой команды, включая NULL-байт

переменная

xx..

TEXT_CODE

текст кода, заканчивающаяся NULL

2 байта xx xx X1 неизвестно, обычно 04 00 или 05 00

Возможные значения TEXT_CODE:

TEXT_CODE Описание
B_USER_DISCONNECTED Отсоединиться от сервера (в этом случае Х1 должно содержать 05 00)
B_MESSAGE_ACK

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

LOGIN_1

4C 04

Во время логина посылается неизвестный пакет.

INFO_REQ

60 04

Запрашивает основную информацию о пользователе.

Длина

Содержание

Сигнатура

Описание

2 байта xx xx INFO_SEQ_NUM Информационный последовательный номер

4 байта

xx xx xx xx

UIN

UIN пользователя, чье инфо вы запрашиваете

Сервер ответит INFO_REPLY с тем же INFO_SEQ_NUM

EXT_INFO_REQ

6A 04

Запрашивает расширенную информацию о пользователе.

Длина

Содержание

Сигнатура

Описание

2 байта xx xx INFO_SEQ_NUM Информационный последовательный номер

4 байта

xx xx xx xx

UIN

UIN пользователя, чье инфо вы запрашиваете

Сервер ответит EXT_INFO_REPLY с тем же INFO_SEQ_NUM

CHANGE_PASSWORD

9C 04

Сменить пароль входа.

Длина

Содержание

Сигнатура

Описание

2 байта xx xx PASSWORD_SEQ_NUM последовательный номер для смены пароля

2 байта

xx xx

LENGTH

длина нового пароля, включая NULL

переменная   NEW_PASSWORD новый пароль, заканчивающийся NULL (максимум 8 символов)

STATUS_CHANGE

D8 04

Изменяет online статус пользователя (Away, Invisible и др.)

Параметры

Длина

Содержание

Сигнатура

Описание

4 байта

xx xx xx xx

STATUS

Новый статус - см.ниже

Статусы

Сигнатура Значение Описание
STATUS_ONLINE 00 00 00 00 User is online
STATUS_AWAY 01 00 00 00 User is away
STATUS_DND 11 00 00 00 Do Not Disturb
STATUS_INVISIBLE 00 01 00 00 User is invisible

LOGIN_2

28 05

Используется во время логина

Длина

Содержание

Сигнатура

Описание

1 байт

00

X1

неизвестно

Сообщения, посланные сервером

ACK

0A 00

Квитанция на команду, посланную серверу.

Параметров нет.

Порядковые номера в заголовке содержат порядковые номера клиентский подтвержденных пакетов.

LOGIN_REPLY

5A 00

Этот пакет отсылается сервером в случае, если он корректно получил команду LOGIN.

Параметры

Длина

Содержание

Сигнатура

Описание

4 байта xx xx xx xx USER_UIN UIN пользователя
4 байта xx xx xx xx USER_IP IP-адрес пользователя
2 байта xx LOGIN_SEQ_NUM последовательный номер логина

4 байта

01 00 01 00

X1

неизвестно

4 байта

xx 00 16 00

X2

неизвестно (xx=19 или 18)

4 байта

8C 00 00 00

X3

неизвестно

4 байта

78 00 05 00

X4

неизвестно

6 байт

0A 00 05 00 01 00

X5

неизвестно

LOGIN_SEQ_NUM такой же как и в соответствующем поле команды LOGIN

USER_ONLINE

6E 00

Пользователь из вашего контакт листа он-лайн или изменил свой он-лайн статус

Параметры

Длина

Содержание

Сигнатура

Описание

4 байта

xx xx xx xx

REMOTE_UIN

UIN пользователя, сменившего статус

4 байта

xx xx xx xx

REMOTE_IP

IP-адрес пользователя

4 байта

xx xx xx xx

REMOTE_PORT

TCP-порт, используемый пользователем для соединения

4 байта

xx xx xx xx

REMOTE_REAL_IP

реальный IP-адрес пользователя

1 байт

04

X1

неизвестно

4 байта

xx xx xx xx

STATUS

Новый статус пользователя

4 байта

02 00 00 00

X2

неизвестно

REMOTE_IP - "внешний" IP-адрес отдаленного пользователя, REMOTE_REAL_IP - "внутренний" IP-адрес. Эти два адреса будут идентичны, если отдаленный пользователь не находится за firewall. REMOTE_IP - "официальный" IP-адрес, который отображен например в Инфо клиента. REMOTE_PORT - номер TCP- порта, используемый, когда клиент хочет открыть прямое соединение с отдаленным пользователем.  

 

USER_OFFLINE

78 00

Пользователь из вашего контакт листа ушел в офф-лайн

Длина

Содержание

Сигнатура

Описание

4 байта

xx xx xx xx

REMOTE_UIN

UIN пользователя, ушедшего в офф-лайн

USER_FOUND

8C 00

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

Параметры

Длина

Содержание

Сигнатура

Описание

2 байта xx xx SEARCH_SEQ_NUM последовательный номер поиска
4 байта xx xx xx xx FOUND_UIN UIN найденного пользователя

2 байта

xx xx

LENGTH

длина ника (включая NULL)

переменная

 

 

NICK_NAME

Ник, заканчивающийся NULL

2 байта

xx xx

LENGTH

длина имени (включая NULL)

переменная

 

 

FIRST_NAME

Имя, заканчивающееся NULL

2 байта

xx xx

LENGTH

длина фамилии (включая NULL)

переменная

 

 

LAST_NAME

Фамилия, заканчивающаяся NULL

2 байта

xx xx

LENGTH

длина эл.адреса (включая NULL)

переменная

 

 
EMAIL

Эл. адрес, заканчивающийся NULL

1 байт xx AUTHORIZE Статус автороизации пользователя, см. ниже

AUTHORIZE может содержать только 00 или 01. 00 значит, что клиенту нужно послать запрос об авторизации, перед тем, как добавить пользователя в контакт лист, 01 - посылать запрос не надо. Если не найдено ни одного пользователя, удовлетворяющего критериям поиска, будет послано END_OF_SEARCH и пакеты USER_FOUND больше приходить не будут.

RECEIVE_MESSAGE

DC 00

Этот пакет шлется вам во время вашего логина на сервер, если на сервере есть для вас какие-либо пакеты (так называемые "оффлайн-сообщения")

Длина

Содержание

Сигнатура

Описание

4 байта

xx xx xx xx

REMOTE_UIN

UIN отправителя

2 байта

xx xx

YEAR

год, когда было послано сообщение

1 байт

xx

MONTH

месяц, когда было послано сообщение

1 байт

xx

DAY

день месяца

1 байт

xx

HOUR

час, когда было послано сообщение

1 байт

xx

MINUTE

минута

2 байта xx xx TYPE тип сообщения, см. ниже
2 байта xx xx LENGTH длина сообщения (включая NULL)
переменная   MESSAGE текст сообщения

MESSAGE_TYPE может иметь одно из следующих значений:

Сигнатура Значение Описание
MSG_TXT 01 00 Обычное текстовое сообщение
MSG_URL 04 00 URL-сообщение, состоит из 2-х частей, разделенных 0xFE. Первая - описание URL
MSG_USER_ADDED 0C 00 Сообщение о том, что пользователь был добавлен в контакт лист. Состоит из 4 частей, разделенных 0xFE - ник, имя, фамилия, эл.адрес

END_OF_SEARCH

A0 00

Пакеты USER_FOUND больше приходить не будут.

Длина

Содержание

Сигнатура

Описание

2 байта

xx xx

SEARCH_SEQ_NUM

последовательный номер поиска

1 байт xx MORE_FOUND найдено пользователей больше, чем выводится на экран

Если MORE_FOUND равно 00, то вы получите всех подходящих пользователей из базы данных. Если 01, то в базе данных очень много пользователей, удовлетворяющих критериям поиска, но все они выводится на экран не будут. Предел - 40 пользователей.

INFO_REPLY

18 01

Возвращает основную информацию о пользователе.

Параметры

Длина

Содержание

Сигнатура

Описание

2 байта xx xx INFO_SEQ_NUM последовательный номер
4 байта xx xx xx xx REMOTE_UIN UIN отдаленного пользователя

2 байта

xx xx

LENGTH

длина ника (включая NULL)

переменная

 

 

NICK_NAME

Ник, заканчивающийся NULL

2 байта

xx xx

LENGTH

длина имени (включая NULL)

переменная

 

 

FIRST_NAME

Имя, заканчивающееся NULL

2 байта

xx xx

LENGTH

длина фамилии (включая NULL)

переменная

 

 

LAST_NAME

Фамилия, заканчивающаяся NULL

2 байта

xx xx

LENGTH

длина эл.адреса (включая NULL)

переменная

 

 
EMAIL

Эл. адрес, заканчивающийся NULL

1 байт xx AUTHORIZE Статус автороизации пользователя, см. ниже

AUTHORIZE может содержать только 00 или 01. 00 значит, что клиенту нужно послать запрос об авторизации, перед тем, как добавить пользователя в контакт лист, 01 - посылать запрос не надо.

EXT_INFO_REPLY

22 01

Возвращает расширенную информацию о пользователе.

Параметры

Длина

Содержание

Сигнатура

Описание

2 байта xx xx INFO_SEQ_NUM последовательный номер
4 байта xx xx xx xx REMOTE_UIN UIN отдаленного пользователя

2 байта

xx xx

LENGTH

длина названия города (включая NULL)

переменная

 

 

CITY

Город, заканчивающийся NULL

2 байта

xx xx

COUNTRY_CODE

код страны (включая NULL)

1 байт

xx

COUNTRY_STATUS

Определяет, установлен ли COUNTRY_CODE

2 байта

xx xx

LENGTH

длина названия штата(включая NULL)

переменная

 

 

STATE

штат (только для США), заканчивающаяся NULL

2 байта

xx xx

AGE

возраст отдаленного пользователя

1 байт

xx

SEX

пол

2 байта xx xx LENGTH длина номера телефона
переменная   PHONE телефон
2 байта xx xx LENGTH длина адреса домашней странички пользователя (включая NULL)
переменная   HOME_PAGE домашняя страничка пользователя
2 байта xx xx LENGTH длина About (включая NULL)
переменная   ABOUT Информация, которую пользователь хочет сообщить о себе

Код, используемый в COUNTRY_CODE - это международный телефонный префикс, т.е. 01 00 (1) для США, 2С 00 (44) для Великобритании, 2Е 00 (46) для Швеции и т.д. COUNTRY_STATUS обычно содержит FE, но если пользователь не ввел код страны (COUNTRY_CODE содержит FF FF), то тогда CONTRY_STATUS будет содержать 9С. Аналогично, если пользователь не ввел свой возраст, то поле AGE будет содержать FF FF. Поле SEX может содержать 3 различных значения: 00 - не определен, 01- женский, 02- мужской.

STATUS_UPDATE

A4 01

Пользователь из контакт листа сменил свой он-лайн-статус (Away и т.п)

Параметры

Длина

Содержание

Сигнатура

Описание

4 байта

xx xx xx xx

REMOTE_UIN

UIN пользователя, сменившего статус

4 байта

xx xx xx xx

STATUS

Новый статус пользователя

Статусы

Сигнатура Значение Описание
STATUS_ONLINE 00 00 00 00 User is online
STATUS_AWAY 01 00 00 00 User is away
STATUS_DND 11 00 00 00 Do Not Disturb
STATUS_INVISIBLE 00 01 00 00 User is invisible

 

О нас | Фото | Гостевая | Форум | Ария | Rammsten
© Copyright 2004 www.haggis.narod.ru
Design by Xakep and Melkor
Сайт управляется системой uCoz