Pull to refresh

ICQ-маскарад как универсальное решение проблем с изменениями протокола ICQ

Reading time 2 min
Views 1.3K
Это мой первый пост на хабре, поэтому любые пожелания к стилю написания приветствуются.

В связи с периодическими изменениями протокола ICQ, не все сторонние клиенты успевают за ними, поэтому появилась необходимость в прослойке между сервером и клиентом, которую можно достаточно быстро подстраивать.

В данной статье я расскажу об реализации такой прослойки, в виде специализированного прокси — ICQGATE или ICQ-маскарад.

Немного истории

Будучи еще студентом в далекий 1999 год, когда университетский интернет протягивали и настраивали по общежитиям энтузиасты, возникла задача проксирования ICQ, поскольку единственный выход в интернет был через университетский HTTP-прокси, который был перегружен запросами.

Изначально была идея написать полноценный ICQ-сервер, но реально оценив свои шансы и время, пришлось упростить задачу до только прокси, т.к. надо было уже «вчера».

Кстати, локальный ICQ-сервер все таки был написан: IServerd
Вся информация по протоколу, в то время, была взята из исходников MICQ

Подробности

Следует отметить, что простой редирект на login.icq.com для ICQ не проходит, поскольку сервер сам присылает клиенту специальный IP адрес, с которым идет дальнейшее взаимодействие.

Схема проксирования с простейшей авторизацией (без MD5):
  1. Посылаем запрос авторизации на login.icq.com.
  2. Получаем новый IP сервера от login.icq.com.
  3. Заменяем этот IP на адрес нашего прокси в ответе клиенту.

Эта схема была быстро реализована на Perl и работает до сих пор на университетском сервере. В 2005 году были написаны оптимизированные версии для FreeBSD и Linux уже для провайдеров, которые добавили у себя услугу бесплатной аськи для пользователей и получили заметное конкуретное преимущество среди провайдеров домовых сетей.

Так как все написано на Perl, то должно работать практически везде.

Демонстрационную версию можно скачать тут: icqgate-2.0.2.zip
UPDATE: теперь поддерживает авторизацию с MD5.

Все исходники можно скачать бесплатно, никаких ограничений нет.
На днях постараюсь сделать версию, которая будет скрывать последние изменения, для всех старых клиентов.

Как пользоваться

Вариант с роутером

Пусть ваш локальный адрес 192.168.0.2, а адрес роутера 192.168.0.1,
тогда запускаете на роутере ICQGATE так:

./icqgate.pl --port=5190 --host=192.168.0.1

В клиенте нужно прописать вместо login.icq.com адрес роутера 192.168.0.1, для надежности, можно переопределить домен в c:/windows/system32/drivers/etc/hosts.

Вариант с localhost

Все тоже самое, только адрес роутера заменяйте на 127.0.0.1.

Теперь о решении проблем с изменениями протокола AOL

В этот прокси можно добавлять любую логику, которая скрывает любые изменения протокола от клиентов. Например, можно подставлять нужный номер flap последовательности,
по определеному алгоритму.
Tags:
Hubs:
+61
Comments 155
Comments Comments 155

Articles