• XSS.stack #1 – первый литературный журнал от юзеров форума

ICQ протокол

Winux

Старожил форума
Легенда
Регистрация
12.11.2004
Сообщения
6 358
Реакции
53
Думаю, каждого кодера рано или поздно заинтересует сабж. Всем хочется написать флудер/спамер или еще что прикольное для ICQ. В топике собираем доки по ICQ протоколу, желательно на русском.

Начнем.

Неофициальная документация по протоколу ICQv7 от Rejetto (создателя andrq)
Самая популярная документация по OSCAR
Люди хороши пишут о протоколе
Курсовая работа, посвященная исследованию протоколов ICQ
Спецификация протокола icq5
Спецификация протокола icq2
Спецификация протокола ICQ TCP версии #2
Спецификация протокола ICQ V4 (из списка рассылки icq-devel)
Описание шифрования в протоколе icq v5
Описание расшифровки v4 пакетов на c
Еще одна спецификация Оскара

Компоненты для кодинга:


Мало кому известный icq-aim-компонент.The best for advanced.Нуждается в MD5-модуле,тк аим работает с мд5.Delphi
KIcq.Компонент для C.Устарел и нуждается в переделке
TicqClient от coban2k.Не нуждается в представлении,имеет хороший хелп+несколько прог-примеров,легок в использовании.Не работает с aim.Во вложениях модицифированный компонент от неизвестного автора


Разное


Код:
oscar proto snac
Для тех, кто знает строение и названия разных снеков протокола в любительских описаниях, такое “иное” описание может быть интересным. Весь список публиковать пожже, но название некоторых общепринятых и известных снеков в этом списке, просто приводят в странное состояние. Вот тут только маленький списочек, в основном список снеков, которые пропущены любительскими составителями. Однако, несмотря на это описание, многих снеков сейчас просто не существует.

Family 0x0017 - BUCP Service (Login)
0x0008 ASASN
0x0009 ASASN Reply

Family 0x0013 - Feedbag (Buddylist)
0x000B Insert Class
0x000C Update Class
0x000D Delete Class
0x0013 Authorize Buddy
0x0017 Remove Me 2

Family 0x0004 - Instant Messenging (ICBM)
0x000E Sin List Query
0x000F Sin List Reply
0x0010 Sin Retrieve
0x0011 Sin Delete
0x0012 Notify Request
0x0013 Notify Reply

Family 0x0002 - Location
0x000D Group Capability Query
0x000E Group Capability Reply
0x0011 Get Keyword Info
0x0012 Get Keyword Info Reply
0x0013 Find List by Email
0x0014 Find List by Email Reply

Family 0x0001 - General
0x0019 Max Config Query
0x001A Max Config Reply
0x001B Store Config
0x001C Config Query
0x001D Config Reply

идентификация клиента:

Код:
ANDRQ =$FFFFFF7F;
MIRANDA =$FFFFFFFF;
STRICQ =$FFFFFF8F;
YSM =$FFFFFFAB;
MICQ =$7d0001ea;
MICQ2 =$ffffff42;
LICQ =$7d000000;
Trillian = 3B75AC09
IM2 = 3FF19BEB
CenterICQ = 3AA773EE
vICQ = 04031980
alICQ = FFFFFFBE
 
Всем последняя библиотека изумительна, пару недель как её пинаю...
Одно только не вкурил - как контакт-лист получают?
Чтоб массив номерков сформировать...
 
я хозе как там в либе этой, но ваще можно сдедать так:
после логина на основной сервер в первом ответном пакетом сервера передаются номерки. от размера к/л зависит на сколько пакетов он будет разбит... пока не знаю как это точно узнать =(
но короче я отлавливаю к/л так - делаю примерно такой саб для обработки входящих пакетов (perl):
Код:
...
# авторизация
# логин на основной сервер
sub getCL
{
    my $packet=shift;
    recv(my $cl,65535,0,0);
    my @uins=$cl=~/[\d]{5,9}/g;
    chomp(@uins);
    return @uins;
}
 
H2O2
Эту версию уже слил, буду тестить, спасибо...
 
Icq,также как и AIM работают по одноу протоколу-OSCAR (Open systems for Communications in RealTime),более того через одни и теже серверы.Это позволяет сидеть в AIM через свой уин.Протокол OSCAR основан на приеме и передаче FLAP пакетов.В свою очередь Flap содержит в себе SNAC и TVL-пакет.



Рассмотрим подробнее устройство FLAP-пакетов



FLAP-это низкоуровневый протокол который облегчает создание более выского уровня. Ориентированного на многоуровневую связь.Он использует протокол TCP/IP для подключения между всеми клиентами и серверами (UPD.Раньше протокол был полностью на UDP).Заголовок FLAP-пакета имеет постоянную длину(6 байт) и блок данных (0x2a) –начало пакета icq.Номер последовательности FLAP-пакета используется для обнаружений ошибок. Происхождение номера последовательности пакета выбрано случайно.И нет никакой связи между номером который присвоил сервер и клиент.Числа всегда увеличиваются (до 0x8000) для каждой посланной команды. Если число последовательности действительно достигает 0x8000, оно будет опущенно до 0x0000, по очевидным причинам. Если Вы запускаете новое подключение, рекомендуется, чтобы новое происхождение номера последовательности было выбрано для этого подключения, (для того чтобы последовательность не нарушалась)

В AIM-сервисе есть такое понятие как канал.Всего их пять, и в зависимости от того какой канал был передан в пакете,он передается на обработку сооветствующим функциям.



Chanel1 –служит для авторизации.

Chanel2 –служит для обработки snac-данных,в том числе и сообщений.

Chanel3 – обработка ошибок в FLAP-пакетах

Chanel4 – отсоединение от сервера



Номера последовательности независимы от каналов: есть отдельный ряд чисел последовательности для подключения по TCP-протоколу.

После того как новое подключение установлено,используя канал 0x01, данные нужно только передать на канал 0x02.SNAC-пакеты передаются только по каналу номер два.



Для прочтения FLAP-пакетов требуется получить заголовок(6 байт).От этих 6 байт вы определяете сколько еще нужно прочитать для завершения команды и сколько свободного места в памяти вы должны выделить чтобы хранить его.При усечении или наоброт прочтении более 6 байт хидера пакета произойдет ошибка которая приведет к выполнению непонятной команды.Например при чтении больше чем положено вы начнете обрабатывать начало следующей команды которая будет являться плохой.Также потерянные данные не приримаются сервисами.

FLAP пакет несет в себе также SNAC и TVL пакеты (ТВЛы находятся в Снаках).



Snac и TLVпакеты.


Снэки несут в себе 2 значения-мажор и минор.SNAC использует 0x02 канал.Данные посланные через другие каналы игнорируются(не принимаются).Основные свойста этих пакетов так называемые флаги.

SNAC –пакет содержит в себе TLV -пакет который представляет из себя текст.Это может быть уин и пароль.Несмотря на то что обычно эти данные содержатся в Снаках ,в некоторых случаях они существуют самостоятельно-тому пример пакеты «login»

TLV-пакет никогда не заканчивается пустым указателем.



Вот и все начальные сведения об icq-aim протоколе OSCAR.
 
SNAC(02,04) ака CLI_SET_LOCATION_INFO
Одна из 2 запакованных в снаку тлвшек имеет такой вид:
Код:
00 01  	word  	TLV.Type(0x01) - mime type
xx xx  	word  	TLV.Length
xx ..... xx	string  	mime type name
что за mime type name, что это такое?
 
SNAC (02,04) это CLI_SETUERINFO говорит мне ICQMenace

Крыса

Код:
2a 02 67 14 00 9e 00 02-00 04 00 00 00 00 00 01   *.g.............
00 05 00 90 09 46 13 49-4c 7f 11 d1 82 22 44 45   .....F.IL..."DE
53 54 00 00 09 46 13 44-4c 7f 11 d1 82 22 44 45   ST...F.DL..."DE
53 54 00 00 09 46 13 4d-4c 7f 11 d1 82 22 44 45   ST...F.ML..."DE
53 54 00 00 09 46 00 00-4c 7f 11 d1 82 22 44 45   ST...F..L..."DE
53 54 00 00 56 3f c8 09-0b 6f 41 bd 9f 79 42 26   ST..V?...oA..yB&
09 df a2 f3 09 46 13 4e-4c 7f 11 d1 82 22 44 45   .....F.NL..."DE
53 54 00 00 09 46 13 4c-4c 7f 11 d1 82 22 44 45   ST...F.LL..."DE
53 54 00 00 1a 09 3c 6c-d7 fd 4e c5 9d 51 a6 47   ST....<l..N..Q.G
4e 34 f5 a0 b2 ec 8f 16-7c 6f 45 1b bd 79 dc 58   N4......|oE..y.X
49 78 88 b9                                       Ix..


Куип

Код:
2a 02 41 bd 00 de 00 02-00 04 00 00 00 00 00 04   *.A.............
00 05 00 d0 56 3f c8 09-0b 6f 41 bd 9f 79 42 26   ....V?...oA..yB&
09 df a2 f3 09 46 13 49-4c 7f 11 d1 82 22 44 45   .....F.IL..."DE
53 54 00 00 09 46 13 4c-4c 7f 11 d1 82 22 44 45   ST...F.LL..."DE
53 54 00 00 09 46 13 4d-4c 7f 11 d1 82 22 44 45   ST...F.ML..."DE
53 54 00 00 17 8c 2d 9b-da a5 45 bb 8d db f3 bd   ST....-...E.....
bd 53 a1 0a 09 46 13 4e-4c 7f 11 d1 82 22 44 45   .S...F.NL..."DE
53 54 00 00 97 b1 27 51-24 3c 43 34 ad 22 d6 ab   ST....'Q$<C4."..
f7 3f 14 92 09 46 00 00-4c 7f 11 d1 82 22 44 45   .?...F..L..."DE
53 54 00 00 67 36 15 15-61 2d 4c 07 8f 3d bd e6   ST..g6..a-L..=..
40 8e a0 41 09 46 13 43-4c 7f 11 d1 82 22 44 45   @..A.F.CL..."DE
53 54 00 00 09 46 13 44-4c 7f 11 d1 82 22 44 45   ST...F.DL..."DE
53 54 00 00 b9 97 08 b5-3a 92 42 02 b0 69 f1 e7   ST......:.B..i..
57 bb 2e 17 1a 09 3c 6c-d7 fd 4e c5 9d 51 a6 47   W.....<l..N..Q.G
4e 34 f5 a0                                       N4..
 
Протокол ICQ.v7

Ниже вашему вниманию предоставляется неофициальная версия 7-ого протокола ICQ. Именно его используют клиенты ICQ2000a и ICQ2000b. Так что можете изучать и программировать своё собственный СОФТ. Надеюсь, скоро список софта пополнит и Ваша собственная программа.

подробнее
 
nerezus
эмс... чего?)

Я так и не врубился чем заполнять снаку 02,04, зато на васме отрыл упоминание что можно отправить client_ready и status_change сразу после снаки 01,17. И мессаги будут нормально доходить)
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх