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 Дополнительно Т.к. судя по виду, эту либу будут использовать в основном для спама или флуда или в других программах которые будут приность прибыль людям, то исходники данной DLL выкладывать не буду. Тем кому они понадобятся могу продать за определенную плату. Пример использования в Delphi Пример реализации в делфи простого бота который будет выводить в консоль сообщение которые посылает юзвери и их UIN's на запрос !TIME будет отослано текущее время. Пример лежит в архиве TimeBot.dpr - сам бот IcqMod.pas - вспомогательный модуль описывающий константы и прототипы IcqMod.dll - сама dll Пример использования в C/C++ Примера не будет, просто в файле IcqMod.h описаны константы и прототипы функций. Кому нужно разберутся. Подробное описание функций? констант и структур Code: 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"); -------------------------------- Code: 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 - текст сообщения На последок всякая инфа Как будет работать DLL - хз. тестил на локальном компе. Сообщениями обменивался с QIP Infium на рус и англ языке. всё было норм. При написании DLL некоторые вещи были подсмотрены в TICQClient (запросы на отсылку сообщений и работу с авторизаций) Чтение сообщений и коннект подсмотренный с CommView и php классе работы с аськой. Так что сильно прошу не пинать )) И главное - не спамте мою аську :'( (С) SLESH 2009
Вообще DLL написана на Си но спокойно компилится и как СИ код и как С++ так что норм. А на делфи в основном демки делаю потому, что когда тестирую какуюто DLL то побыстрому в дельфе это делаю. Вот пример на Си как работать через прокси Code: 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();
в демке работы в С++/С просто привел как юзать функции. т.е. не проверял результат выполнения их Насчет исходников - я уже описал. Выкладывать в паблике както не охото. Потому что потом быстро они будут встроены во всякие другие проги. А так придется таскать DLL и юзать ограниченный набор функций. Имея на руках эти исходники и исходники компонента TICQClient можно в легкую расширить возможности.
slesh, крутой релиз, ты мастер! Спасибо тебе! Количество ICQ спамеров и флудеров явно теперь увеличиться.
Офигенный релиз , большой тебе респект и + конечно. 100% И насчет исходников , может будешь давать людям с репутацией ? Мало ли возможно кто - то захочет расширить функционал.
slesh откровенно сказать то мне не оч понравился релиз этой dll, просто спамеры за...колебали, ты хорошо подумал прежде чем давать код в руки публики? Может стоит убрать по крайней мере функцию запроса авторизации? Я бы сделал 100-500 мс. зачем лишний раз прогонять цикл, с такой микро паузой.
отлично, буду СИ изучать вспомню а пока + за старания! Хотя я уверен такому профессионалу это не многова стоило..
2 ErrorNeo C чего ты это взял? Есть люди, но все они заняты другими вещами и проектами в другой области ) 2 t04 Ну вообще от спама можно защититься, но влом ) настрой антиспам бота или непринимать запрос на авторизацию. Паузу в 1 миллисекунду - это для теста просто поставил. На реале она будет 16 миллисекунд минимум. А вообще я думал над тем что выкладывать или нет и именно по этой причине выложил без исходников. По этому первое же изменение протокола и пахать не будет и не исправишь без исходников. Также может с играть такой факт: Когда спам очень сильно увеличится, то это подтолкнет владельцев аськи на введение какойнить защиты или на смену протокола. 2 =Zeus= Смотря для чего. делфовый конпонент довольно классный, удобный и функциональный. Но он большой. Смотря для чего юзать. Моя либа в основном тока для спама, флуда и других узкоспециализированных задач. Ну или для тех вещей где важен небольшой размер или нужно писать не на Делфи. Моя подпись чуть в другую тематику направлена. Там я имел в виду, что пока будут вредоносные проги, то всегда будет работа у админов, специалистов по защите инфы, всякого обслуживающего персонала, который будет переустанавливать проги после вирей, у программистов работа, по созданию антивирусных прог. )
Так я это понял А вообще очень хорошо, что появилась твоя либа. Я вот писал программу, которая должна была отправлять IP на асю. Пришлось юзать VCL из-за компонента. В результате 300 кб веса )). К слову того же самого ICQClient так много версий, потому что часто меняют протокол. Его автор говорил, что это всего 2 строчки изменить, а столько проблем. И он хотел выпустить (а может уже) програмку для автосмены кода, чтоб каждый раз не выкладывать весь обновленный компонент. Так что еще 1 плюс - у тебя всего 1 длл, просто перекомпилить и выложить, если протокол сменят ))
Не думаю так как он хорошо документирован и поддерживается "сообществом" если можно так сказать. Так же его функционал более впечетляющий. А если кого интересует только размер то на делфи можно написать компактный icq клиент. Например написанный мной icq клиент после upx весит 15 кб, умеет все то же самое что и длл от слеша, но сообщения отправляет длиной около 2400 символов, если же подключить функции запроса контакт листа и работы с ним + определение смены статусов то размер растет до 17 кб, но я делал под бот (не спам), и поэтому из последней разработки убрал контакт лист за ненадобностью.
2 intNet HTTPS - влом было. Да и делал просто так, чтобы отдохнуть от написания других прог. 2 Retimiled А это идея ) 1 Января если будет время выложу исходники данной либы )
2 Slesh Спасибо за dll-ку, сделал из него стоящего бота Я вот сделал оболочку под эту либу на AutoIt, а вот на питоне никак не допру как сделать структуру Оо (через ctypes), кто-нибудь знает?