Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #58, СЕНТЯБРЬ 2005 г.

Забытый протокол от AOL

Вольф Данияр

Спецвыпуск: Хакер, номер #058, стр. 058-078-7


*/

static unsigned char *encode_toc_send_im(char *buf, const char *remscreenname, char *mess)

{

char *sflap, *message;

message=(char )malloc(128* sizeof(char *));

memset(message, 0, 128);

buf=sflap=flap_begin(buf, TYPE_DATA);

sprintf(message, "toc_send_im %s \"%s\"", remscreenname, mess);

buf=writes(buf, message, strlen(message));

buf=writeb(buf, 0x00);

flap_end(buf, sflap);

free(message);

return buf;

}

//Функция по добавлению разрешенных пользователей

static unsigned char *encode_toc_add_permit(char *buf)

{

char *sflap;

buf=sflap=flap_begin(buf, TYPE_DATA);

buf=writes(buf, "toc_add_permit ", strlen("toc_add_permit "));

buf=writeb(buf, 0x00);

flap_end(buf, sflap);

return buf;

}

//Функция по добавлению пользователя в черный список

static unsigned char *encode_toc_add_deny(char *buf)

{

char *sflap;

buf=sflap=flap_begin(buf, TYPE_DATA);

buf=writes(buf, "toc_add_deny ", strlen("toc_add_deny "));

buf=writeb(buf, 0x00);

flap_end(buf, sflap);

return buf;

}

/*

Функция по установке статуса пользователя, обычно она запрашивает contact list:

*/

static unsigned char *encode_toc_set_config(char *buf)

{

char *sflap, *message;

message=(char *)malloc(128*sizeof(char *));

memset(message, 0, 128);

buf=sflap=flap_begin(buf, TYPE_DATA);

sprintf(message, "toc_set_config {%c %d.%c General.}", 'm', 4, 'g');

buf=writes(buf, message, strlen(message));

buf=writeb(buf, 0x00);

flap_end(buf, sflap);

free(message);

return buf;

}

/*

Добавление пользователя в contact list. Если в виде параметра к команде toc_add_buddy выступает твой UIN или SN, то ты обретаешь статус online

*/

static unsigned char *encode_toc_add_buddy(char *buf, const char *screenname)

{

char *sflap, *message;

message=(char )malloc(128*sizeof(char));

buf=sflap=flap_begin(buf, TYPE_DATA);

sprintf(message, "toc_add_buddy %s", screenname);

buf=writes(buf, message, strlen(message));

buf=writeb(buf, 0x00);

flap_end(buf, sflap);

free(message);

return buf;

}

/*

Функция формирует пакет в виде команды готовности к работе приема, передачи сообщений.

Обычно посылается после аутентификации на сервисе aimа.

*/

static unsigned char *encode_toc_init_done(char *buf)

{

char *sflap;

buf=sflap=flap_begin(buf, TYPE_DATA);

buf=writes(buf, "toc_init_done", strlen("toc_init_done"));

buf=writeb(buf, 0x00);

flap_end(buf, sflap);

return buf;

}

А что же дальше?

Пожалуй, с протоколом немного разобрались. Необходимая база у нас есть, какую пользу мы можем извлечь из всего этого? Конечно же, я имею в виду написание bruteforce ICQ/AIM UIN'ов или ICQ/AIM flood. Но знание одного протокола не поможет, нужна еще одна важная вещь: если производить прямые активные действия с сервером ICQ/AIM (bruteforce, flood), сервер попросту заблочит номер на некоторое время. Поэтому как в случае с bruteforce, так и в случае с flood нужно использовать косвенное соединение через proxy.

Кратко поясню, как происходит работа через proxy-сервер на уровне сетевого протокола. Для работы с сервером через косвенное (proxy) соединение необходимо подключится к proxy-серверу и отослать ему команду (определенного формата) для установки соединения с реальным сервером, используя метод CONNECT (в нашем случае это toc.oscar.aol.com). Так выглядит дамп пакета уровня приложений для работы с proxy-сервером:

Назад на стр. 058-078-6  Содержание  Вперед на стр. 058-078-8