Старый 30.11.2009, 07:37   #1
silver
RAM 256MB
 
Аватар для silver
 
Регистрация: 05.08.2009
Сообщений: 3,531
silver репутация неоспоримаsilver репутация неоспоримаsilver репутация неоспоримаsilver репутация неоспоримаsilver репутация неоспоримаsilver репутация неоспоримаsilver репутация неоспоримаsilver репутация неоспоримаsilver репутация неоспоримаsilver репутация неоспоримаsilver репутация неоспорима
silver вне форума

По умолчанию 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

[Ссылки доступны только зарегистрированным пользователям . Зарегистрируйся, чтобы увидеть ссылку.]
  Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

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

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



взломать аську аську взломать взлом программы сделать взлом программы как сделать взлом программы хакерские сайты как легко взломать аську лучшие хакерские сайты топ список хакерские сайты взлом паролей легкий взлом паролей

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd. Перевод: zCarot