Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

IcqMod DLL

-

Треп

- Басни, анекдоты и все, что не подходит ни под один из разделов

Ответ
 
Опции темы
Старый 30.01.2010, 14:05   #1
Я вас люблю ^^
 Старший сержант
Аватар для Glavos
 
Glavos блестящий пример для подражанияGlavos блестящий пример для подражанияGlavos блестящий пример для подражанияGlavos блестящий пример для подражанияGlavos блестящий пример для подражанияGlavos блестящий пример для подражанияGlavos блестящий пример для подражанияGlavos блестящий пример для подражанияGlavos блестящий пример для подражанияGlavos блестящий пример для подражанияGlavos блестящий пример для подражания
Регистрация: 31.08.2009
Сообщений: 189
Популярность: 1506
Сказал(а) спасибо: 62
Поблагодарили 630 раз(а) в 289 сообщениях
Отправить сообщение для Glavos с помощью ICQ Отправить сообщение для Glavos с помощью Telegram Отправить сообщение для Glavos с помощью Yahoo Отправить сообщение для Glavos с помощью Skype™
 
По умолчанию IcqMod DLL

IcqMod DLL

Что это?
Это небольшая DLL для работы с аськой ) которая реализует основные функции для работы с протоколом.
Основные - это коннект, дисконнект, отправка и получение сообщений, запрос авторизации и отказ авторизовать.

Зачем оно нужно?
1) Очень удобный модуль для ICQ спама
2) Очень удобный модуль для ICQ флуда
3) Возможность быстрого создания простых ICQ ботов
4) Использование в любом другом софте который использует ICQ протокол

В чем особенность?
1) чистый размер DLL - 6 килобайт
2) возможность использования в любом компилируемом языке
3) простота использования
4) поддержка socks4 и socks5
5) нет нужно юзать VCL и тому подобные вещи.
6) собственный двиг (не используется TICQClient)/ собственно по размеру это видно
7) в онлайн можно выводить сколько угодно номеров (в особенности если юзать прокси) при этом тормозить ничего не будет в отличии от использования VCL компонента TICQClient

Какие функции имеются?
ICQClose - закрытие соединение
ICQConnect - коннект к серверу
ICQSendMsg - посылка сообщения
ICQSendAuth - посылка запроса на авторизацию с передачей текста
ICQAuth - авторизовать UIN или отказать в авторизации
ICQReadMsg - проверка на наличие сообщения в очереди

Технические особенность
1) максимальное кол-во параллельно работающих коннектов - неограничено, на сколько система позволит
2) максимальный размер входящего сообщения - 240 байт. Просто большие сообщения отправляются другим способом, который не поддерживается в dll
3) поддержка приема русских сообщений
4) оправка сообщений на русском языке требует предварительного конверта текста в UTF8. Английский и так прокатывает.
5) используется только WinSock2
6) написан на Си.
7) Скомпилирован в VS 2008 Pro

Пример использования в Delphi
Пример реализации в Delphi простого бота который будет выводить в консоль сообщение которые посылает юзеры и их UIN's
на запрос !TIME будет отослано текущее время.

Пример лежит в архиве
TimeBot.dpr - сам бот
IcqMod.pas - вспомогательный модуль описывающий константы и прототипы
IcqMod.dll - сама dll

Пример использования в C/C++
Примера не будет, просто в файле IcqMod.h описаны константы и прототипы функций. Кому нужно разберутся.

Подробное описание функций, констант и структур
Код:
Цитата:
PROXY_INFO = packed record
ProxyType : dword; // тип прокси
ProxyIp : dword; // адрес прокси
ProxyPort : word; // порт прокси
end;
PPROXY_INFO = ^PROXY_INFO;

Данная структура описывает инфо о прокси.
Типы прокси:
PROXY_TYPE_SOCKS_4 = 1;
PROXY_TYPE_SOCKS_5 = 2;

заполняется так примерно:
proxy.ProxyType = PROXY_TYPE_SOCKS_5;
proxy.ProxyPort = 1222;
proxy.ProxyIp = inet_addr("127.0.0.1");
--------------------------------
Код:
Цитата:
ICQ_CLIENT = packed record
status : byte;
sequence : word;
sock : dword;
end;

основная структура описывающая состояние работы. Заполняется функцией ICQConnect
В ней не стоит ничего менять, просто используете для работы. Единственная переменная за состоянием которой нужно следить - status она может принимать значение:
ICQ_CLIENT_STATUS_CONNECTED = 1; - связь установлена
ICQ_CLIENT_STATUS_DISCONNECTED = 2; - нет связи с сервером
--------------------------------
function ICQConnect(var client : ICQ_CLIENT; host : PAnsichar; port : word; login : PAnsichar; pass : PAnsichar; pproxy : PPROXY_INFO) : dword; stdcall; external ICQMOD_DLL;

подключение к серверу, где
client - переменная для хранения состояния
host - имя сервака типа login.icq.com
port - порт сервера (5190)
login - UIN
pass - пароль для UINа
pproxy - указатель на структуру описывающую прокси.
Если 0 значит не юзать прокси, если указана структура прокси, то берет из неё данные для коннекта

Функция возвращает код состояния:
ICQ_CONNECT_STATUS_OK = $FFFFFFFF; // подключился удачно
ICQ_CONNECT_STATUS_RECV_ERROR = $FFFFFFFE; // ошибка чтения данных
ICQ_CONNECT_STATUS_SEND_ERROR = $FFFFFFFD;// ошибка отправки данных
ICQ_CONNECT_STATUS_CONNECT_ERROR = $FFFFFFFC;// ошибка коннекта к серваку
ICQ_CONNECT_STATUS_AUTH_ERROR = $FFFFFFFB; // не смог авторизоваться. Или пас не подходит или превышен лимит
-----------------
function ICQReadMsg(var client : ICQ_CLIENT; UIN : PAnsichar; msg : PAnsichar; var msglen : integer) : dword; stdcall; external ICQMOD_DLL;

Проверка на сообщение.
client - описание состояния
UIN - адрес буфера куда будет помещен UIN человека от которого пришло сообщение. желательно чтобы был 10 байт.
msg - адрес буфера куда будет записано сообщение.
msglen - переменная в которую будет записана длинна сообщения.

Функция возвращает:
0 - сообщения нет
1 - сообщение получено.

Данная функция извлекает данные из сокета если они есть. И если это сообщение, то парсит его.
----------------
function ICQAuth(var client : ICQ_CLIENT; UIN : PAnsichar; AuthOk : dword) : dword; stdcall; external ICQMOD_DLL;


Авторизация номера.
client - описание состояния
UIN - номер человека которого нужно авторизовать
AuthOk - флаг авторизации:
0 - послать команду - в авторизации отказано
1 - авторизовать человека.
---------------------
procedure ICQClose(var client : ICQ_CLIENT); stdcall; external ICQMOD_DLL;

закрывает соединение
--------------------

function ICQSendAuth(var client : ICQ_CLIENT; UIN : PAnsichar; msg : PAnsichar) : dword; stdcall; external ICQMOD_DLL;

Отсылка запроса на авторизацию.
UIN - кому отсылается
msg - текст который будет присутствовать в запросе
---------------------
function ICQSendMsg(var client : ICQ_CLIENT; UIN : PAnsichar; msg : PAnsichar) : dword; stdcall; external ICQMOD_DLL;

Посылка сообщения
UIN - кому
msg - текст сообщения

Вот пример на Си как работать через прокси
Код:
Цитата:
WSADATA ws;
ICQ_CLIENT cl;
char UIN[10];
char msg[4096];
int msglen;
PROXY_INFO proxy;

WSAStartup(0x202, &ws);

proxy.ProxyType = PROXY_TYPE_SOCKS_5;
proxy.ProxyPort = 1222;
proxy.ProxyIp = inet_addr("127.0.0.1");

ICQConnect(&cl, "login.icq.com", 5190, "UIN", "PASS", &proxy);
ICQSendMsg(&cl, "454042", "hello slesh");

printf("Conn ok\n");
ICQAuth(&cl, "454042", 1);
// матаем цикл пока есть коннект
while (cl.status == ICQ_CLIENT_STATUS_CONNECTED)
{
if (ICQReadMsg(&cl, UIN, msg, &msglen)) // если есть сообщение
{
printf("UIN=%s\nMSG=%s\n", UIN, msg); // выведем сообщение
ICQSendMsg(&cl, UIN, "Yes"); // пошлем слово YES
}
Sleep(1); // маленькая пауза чтобы не вешать систему
}

printf("finish");
getch();

(С) SLESH 2009 forum.Antichat.ru
[Ссылки могут видеть только зарегистрированные пользователи. ]
________________
Все материалы исключительно для ознакомления. (Рад помочь!)

[Ссылки могут видеть только зарегистрированные пользователи. ]
  Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
HellFire (30.01.2010), Kelvin (09.02.2010)
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 20:45.

Пишите нам: forum@zhyk.ru
Copyright © 2025 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net