Как стать автором
Обновить

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

Время на прочтение2 мин
Количество просмотров1.4K
Это мой первый пост на хабре, поэтому любые пожелания к стилю написания приветствуются.

В связи с периодическими изменениями протокола 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 последовательности,
по определеному алгоритму.
Теги:
Хабы:
Всего голосов 97: ↑79 и ↓18+61
Комментарии155

Публикации

Истории

Ближайшие события

19 августа – 20 октября
RuCode.Финал. Чемпионат по алгоритмическому программированию и ИИ
МоскваНижний НовгородЕкатеринбургСтавропольНовосибрискКалининградПермьВладивостокЧитаКраснорскТомскИжевскПетрозаводскКазаньКурскТюменьВолгоградУфаМурманскБишкекСочиУльяновскСаратовИркутскДолгопрудныйОнлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн
10 – 11 октября
HR IT & Team Lead конференция «Битва за IT-таланты»
МоскваОнлайн
25 октября
Конференция по росту продуктов EGC’24
МоскваОнлайн
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн