Транспорт-бот Jabber конференций для Telegram
Доброго времени суток.
В один прекрасный день, после значительного перерыва, судьба вновь столкнула меня с jabber-конференциями. Правда, среди знакомых jabber уже никто не использует, 2007 год канул в лету, а основным средством общения стал Telegram. Поддержка XMPP на мобильных устройствах оставляла желать лучшего — клиенты на Android хороши каждый в чём-то одном, с iOS и WP всё мягко скажем, не очень. И особенности протокола тоже сказываются на автономности. Поэтому возникла мысль: а не сделать ли бота, которой будет транслировать сообщения из конференций в чат Telegram?
Основные возможности и зависимости
Из готовых реализаций удалось найти только jabbergram, но он позволяет работать только с одним юзером. Ещё есть реализация на Go, с которым опыта работы не было, так что этот вариант не рассматривался и о функционале не могу ничего сказать.
Выбор библиотек обусловлен, в основном, желанием поработать с asyncio.
Изначально разрабатывалась версия с tet-a-tet диалогом для одного пользователя, которая позднее была расширена использованием XMPP Components для групповых чатов, с отдельным xmpp-юзером для каждого участника.
Бот настроен так, что добавить его в чат с иным пользователем невозможно, поэтому как универсальную реализацию рассматривать нельзя.
Почему так сделано? API ботов весьма ограничивает количество входящих/исходящих запросов за короткое время, и при достаточно интенсивном обмене сообщениями будут возникать ошибки.
При разработке удобно использовать виртуальные окружения, так что можно создать одно:
Для использования нужно установить из pip aiohttp, slixmpp и ujson. При желании можно добавить gunicorn. С окружением или без, все пакеты есть в PyPI:
В конце поста есть ссылки на bitbucket репозитории с исходниками.
История telegram
Так что была сделана простенькая обёртка над основными объектами и методами bots api, запросы отправляются с помощью requests, json парсится ujson, потому что быстрее.
Настройка бота осуществляется посредством скрипта-конфига:
Представление объектов выглядит примерно так:
Jabber telegram что это
XMPP — Extensible Messaging and Presence Protocol (англ. расширяемый протокол обмена сообщениями и информацией о присутствии), ранее известный как Jabber (джа́ббер (англ. болтовня, трёп; тарабарщина) — это основанный на XML открытый, свободный для использования протокол для мгновенного обмена сообщениями и информацией о присутствии в режиме, близкому к режиму реального времени. Изначально спроектированный легко расширяемым, протокол, помимо передачи текстовых сообщений, поддерживает передачу голоса, видео и файлов по сети.
В отличие от коммерческих систем мгновенных сообщений, таких, как AIM, ICQ, MSN и Yahoo, XMPP является децентрализованной, расширяемой и открытой системой. Любой желающий может открыть свой сервер мгновенных сообщений, регистрировать на нём пользователей и взаимодействовать с другими серверами XMPP. На основе протокола XMPP уже открыто множество частных и корпоративных серверов XMPP. Среди них есть достаточно крупные проекты, такие как Google Talk, LiveJournal и Gizmo5.
В отличие от других интернет-пейджеров, джаббер больше похож на электронную почту:
• нет нумерации, есть произвольные имена
• джаббер-сервер может запустить любой
• у одного сервера может быть несколько имён (алиасов)
• каждый сервер может свободно общаться с каждым
• возможно безопасное подключение к серверу
• возможно шифрование отправляемых сообщений на уровне клиента
• возможно хранение всей истории чата на сервере
• есть веб-интерфейс
• возможно создание vCard визиток
• подтверждение доставки сообщения
В то же время, джаббер унаследовал некоторые приятные черты чатов:
• отображение статуса собеседника (в т.ч. расширенные статусы)
• многопользовательские комнаты («конференции»)
• боты полезной функциональности
Обзор Jabber клиентов под Windows: _http://habrahabr.ru/blogs/jabber/50776/
Для того, чтобы воспользоваться Jabber, необходимо иметь учётную запись на сервере. Таковую вы можете получить на следующих серверах (список серверов с графическим отображением поддерживаемых транспортов): _http://jabberworld.info/Список_работающих_публичных_серверов_Jabber
В: Как надо произносить «Jabber»?
О: Джаббер.
В: Как зарегистрироваться на сайте? Как зарегистрироваться на сервере?
О: Получить логин и пароль можно:
1. В разделе регистрации на сайте.
2. Через любой джаббер-клиент.
Для входа на сайт нужно использовать полный логин (ваше_имя@jabber.ru) и пароль.
В: Я забыл пароль, что мне делать?
О: Воспользуйтесь формой восстановления пароля: www.jabber.ru/xremind.
Восстановление возможно только при наличии адреса email в вкарде.
В: Что такое транспорт?
О: Сервис, который позволяет разговаривать с пользователями других IM-сетей через единственное подключение.
В: Как мне подключить транспорт ICQ?
О: Подробное описание подключения в Bombus здесь bombus-im.org/wiki/howto/howto_icq. Инструкция подойдет для любого клиента.
В: Я хочу перенести свои контакты из аськи в джаббер с сохранением ников.
О: Скачайте программу QIP Contacts Manager. В этой программе выполните команду «Export» в файл *.clb.
Зарегистрируйтесь на транспорте ICQ.
Откройте файл *.clb в текстовом редакторе.
Введите имя ICQ и содержимое файла *.clb на _www.jabber.ru/jabaddons/qip2jabber.
Нажимайте кнопку. Вы получите данные в формате, подходящем для J.RU.
В: Я хочу перенести свои контакты с одного аккаунта на другой?
О: Можно воспользоваться утилитой JRU _http://www.jabber.ru/jabaddons/jru/jru.php.
В: Я хочу перенести свои контакты с одного транспорта на другой или удалить ненужные контакты?
О: Можно воспользоваться утилитой JRU _http://www.jabber.ru/jabaddons/jru/jru.php.
В: Что такое конференция/комната?
О: Сервис @conference.jabber.ru позволяет создавать комнаты, каждая из которых работает как отдельный чат. Зайти в конференцию можно из любого джаббер-клиента.
В: Как создать конференцию на сервере Jabber.Ru?
О: Новая конференция создается при первом заходе в нее пользователя. Такой пользователь получает права владельца (owner). По умолчанию, конференция временная. После создания комнаты можно изменить ее свойства и сделать постоянной (галочка «Persistent» в свойствах конференции).
В: Чем отличаются участники от модераторов? Кем я могу быть в конференции?
О: Иерархия пользовательских прав существует специально для того, чтобы пользователи путались могли контролировать процесс общения (например, в тематических конференциях).
1. Owner: может всё.
2. Admin
3. Moderator
4. Member
5. None
6. Participant
Для новичков рекомендую Jimm Aspro.
Из WМ клиентов альтернативы Talkonaut’у не вижу.
это из тех клиентов, темы для которых созданы на форуме. однако, ни один из перечисленных не имеет поддержки конференций. из клиентов с поддержкой оных есть OneTeam и japyt(это не совсем клиент, работает по принципу прокси c любым jabber-клиентом, написан на python Disabler’ом).
Преимущества транспортов
Транспорты настраиваются один раз и не зависят от клиента, с которого их используют. Подключив шлюзы с Jabber-клиента на домашнем компьютере, не требуется подключать их на мобильном телефоне и ноутбуке.
При прямом использовании нескольких сетей (через многопротокольные клиенты) может значительно возрасти количество передаваемых данных. Транспорты же потребляют гораздо меньше трафика, особенно если подключенных сетей много.
Транспорты, дающие доступ к специальным ботам позволяют создать из своего Jabber-клиента универсальный инструмент, объединяющий в себе, к примеру, RSS-читалку, почтовый клиент, словари и переводчики, а также средство для просмотра погоды и отправки СМС.
Примеры использования таких транспортов:
tg4xmpp 0.2 — Jabber-транспорт в сеть Telegram
Вышла вторая (0.2) версия транспорта из Jabber в сеть Telegram.
— Данный транспорт позволяет вам общаться с пользователями Telegram из сети Jabber. Необходим существующий Telegram аккаунт.
— Jabber-транспорты
— Например, если хотите использовать Telegram на любом устройстве, где нет официального клиента (например, платформа Symbian).
Что умеет транспорт?
— Авторизовываться, в том числе используя двухфакторную аутентификацию
— Отправлять и принимать сообщения из/в Telegram
— Работать с группами, супергруппами и каналами
— Синхронизировать ростер и статусы
— Загружать медиа из сети Telegram
Что не умеет транспорт?
— Инициировать диалог (т.е. диалог уже должен существовать, либо вам должны написать первому)
— Изменять настройки аккаунта
— Голосовые и видеозвонки
— Секретные чаты
— Теперь используем Telethon версии 0.15.5
— Повышена стабильность работы
— Исправлен баг с бесконечными запросами авторизации
— Реализован импорт контакт-листа из Telegram (XEP-0144)
— Когда неизвестный контакт пишет нам, автоматически добавляем его в ростер
— Исправлена обработка статусов
— Исправлен спам статусами (по-умолчанию статусы обновляются не чаще, чем раз в 60 секунд)
— Теперь при перезапуске транспорта сессии поднимаются автоматически
— Полная поддержка «сервисных уведомлений» (кто-то вошёл в группу, вышел из неё и пр.)
Общаемся в Telegram со смартфонов на Symbian
Среди всех вещей, которые люди делают с устаревшей вычислительной техникой есть одно довольно широкое направление, участники которого занимаются расширением возможностей вышедших из употребления устройств, стараясь сделать их актуальными настолько, насколько это вообще возможно. Мне тоже нравится выжимать все соки из устройств, особенно из мобильных, поэтому сегодня мы займёмся выводом телефонов середины-конца нулевых в современную сеть обмена сообщениями.
Введение
На самом деле получить доступ в Telegram на Symbian можно даже двумя способами. Но сейчас я расскажу только об одном, более трудоёмком в настройке и сложном, с точки зрения технической организации. Также стоит сразу оговориться, что описанный способ позволяет общаться не только в Telegram, но и в других современных сетях и работать будет на многих платформах, а не только на Symbian. Почему? Увидите позднее.
Так что же лежит в основе?
И что же со всем этим делать?
Давайте теперь пошагово разберем процесс настройки. Начать стоит с регистрации на одном из серверов Jabber. Этот пункт не обязателен, если у вас уже есть аккаунт, можно использовать его. Крупнейшим сервером в Рунете является jabber.ru. Требуется придумать имя пользователя и пароль. Ничего сложного. После регистрации можно переходить к следующему пункту: настройке десктопного клиента.
В качестве клиента я использовал Gajim, основное окно которого представлено ниже. Да, Psi+ более популярен и в начале я поставил его, но у меня далеко не всё заработало сразу и во время поисков проблемы я поменял в том числе клиент и Gajim полностью меня устроил (но проблема была не в Psi).
При клике по аккаунту откроется выпадающее меню, в котором надо выбрать «Просмотреть сервисы».
В открывшемся окне в строку адреса нужно ввести jabbercity.ru. Да, транспорт в Telegram установлен и на других серверах, но этот уже проверен и точно работает. Далее в списке транспортов находим нужный, выбираем его и тыкаем по кнопке «Зарегистрироваться».
Здесь потребуется ввести свой номер телефона и, нажав далее, дождаться сообщения об удачном завершении регистрации.
После этого сразу или некоторое время в Telegram придет стандартное сообщение с кодом подтверждения логина, а в «диалог» с Telegram-транспортом запрос этого самого кода, который нужно просто отправить ответным сообщением. Ии сразу после логина в Gajim появится запрос на добавление выгруженных контактов. На него, естественно, нужно ответить положительно. На этом работа в Gajim и самый сложный этап настройки закончен. Все добавленные контакты автоматически соберутся в одну группу.
Переходим к настройке клиента на Symbian. Я использовал Slick. Просто потому что мне его посоветовали. Если вы знаете более удобный и свежий клиент, буду рад советам в комментариях. Взять программу можно на сайте разработчика. Не буду вдаваться в подробности установки приложений Symbian, почитать об этом можно вот тут. После запуска попадаем в меню настройки аккаунтов. Здесь нужно поставить галочку рядом с Jabber и перейти в редактор учетной записи, в котором ввести имя пользователя, адрес сервера, на котором аккаунт был зарегистрирован, пароль и выбрать необходимость шифрования. Затем вернуться назад, нажать на кнопку сохранения и кнопку подключения к сети Jabber, выбрать точку доступа и.
И если всё получилось успешно, попасть в ростер, в котором будет группа Telegram со всеми подключенными контактами. Остаётся только выбрать, кому отправить сообщение.
Послесловие
Как я и говорил, точно так же можно получить доступ не только к Telegram, но к любой сети, для которой существует шлюз в Jabber и работать это будет на любом устройстве, для которого существует Jabber-клиент.
В моём случае это работает на Nokia C6. Все скриншоты были получены с неё.
В завершение хотелось бы ещё поблагодарить Дмитрия Вахрушева за помощь и советы при создании этой статьи, пользователя сайта 4PDA с ником Bugul Noz за инструкцию, которая стала основой вышеописанного, а также LonelyCatGames за такую долгую поддержку приложения и сайта.
Как шифровать переписку в Jabber: пошаговая инструкция
Содержание статьи
Выбор приватных мессенджеров велик, но о безопасности некоторых из них говорить не приходится. Сразу отсекаем WhatsApp, Viber, Skype и социальные сети. Чем они это заслужили? Наверное, лучшим ответом будет твит создателя Telegram Павла Дурова.

Остается вот такой список наиболее известных мессенджеров, которые считаются надежными:
Есть еще и менее известные, но у всех них один общий минус — привязка к номеру телефона. Конечно, можно запариться и приобрести виртуальную симку, но делать неудобно, к тому же об анонимности платежа в таком случае тоже неплохо бы позаботиться.
Справочник анонима
Статьи из этого цикла публикуются бесплатно и доступны всем. Мы убеждены, что каждый имеет право на базовые знания о защите своих данных.
Другие статьи цикла:
Если для тебя эти материалы тривиальны — отлично! Но ты сделаешь доброе дело, отправив ссылку на них своим друзьям, знакомым и родственникам, менее подкованным в технических вопросах.
Давай прикинем, какие критерии должны соблюдаться мессенджером, чтобы он был действительно анонимным. У меня вышел вот такой список.
Так как почти все новомодные мессенджеры не подходят по одному из пунктов, то лучшим вариантом для безопасного общения остается Jabber — известно, что даже специалисты АНБ используют его для переписки.
Пара слов о приватности
Под словом «приватность» обычно подразумевают две довольно разные по своей сути вещи. Первая — защита твоих данных от мониторинга государством и извлечения из них выгоды корпорациями. Вторая — защищенность от целенаправленной прослушки третьими лицами (к примеру, ради шантажа или промышленного шпионажа). Для нас важны оба этих аспекта, но нужно понимать, что во втором случае абсолютных гарантий не бывает. Можно предвидеть технические способы деанона (к примеру, от MitM защитит любой мессенджер с шифрованием), но существуют и другие. Опытный специалист постарается использовать для поиска любую выданную тобой крупицу информации, не говоря уже про методы социальной инженерии.
Но чтобы Jabber стал по-настоящему безопасным, его нужно правильно настроить, чем мы сейчас и займемся. Я для наглядности разделил этот процесс на несколько шагов.
Шаг 1. Качаем софт
Для начала нам необходимо скачать сам клиент. Я для примера возьму Pidgin — он кросс-платформенный и прост в настройке.
Также нам необходим плагин OTR (Off-the-Record Messaging), который обеспечивает шифрование. Инсталлятор для виндовой версии Pidgin или исходники для сборки в Linux можешь скачать с сайта проекта.
При первом запуске Pidgin предложит войти под учетной записью, но мы пока что это отложим. Дело в том, что регистрация будет происходить с нашего реального IP-адреса, а нам хорошо бы позаботиться о том, чтобы IP оказался скрыт даже от владельцев сервиса (вдруг они решат радостно предоставить эту информацию любому, кто попросит!). Для этого можно использовать любой вид прокси, но мы для пущей надежности выберем Tor.
Шаг 2. Пробрасываем трафик через Tor
Если у тебя установлен Tor Browser, то настроить проброс трафика можешь прямо из окна регистрации во вкладке «Прокси».
После запуска Tor Browser и нашего клиента Jabber нужно открыть вкладку «Средства» и выбрать там пункт «Настройки», а в настройках открыть пункт «Прокси». Ставь галочку в чекбоксе «Использовать удаленный DNS с прокси SOCKS4», а в пункте «Тип прокси» выбирай «Tor/Конфиденциальность (SOCKS5)»
В пункте «Узел» указывай 127.0.0.1 и выбирай порт 9150. Это стандартный порт Tor, хотя иногда встречается вариация 9050.

Как ты уже мог догадаться, Tor Browser должен быть запущен и слушать свой порт все время, пока ты будешь вести беседу. Включай его до запуска Pidgin — тогда тот не будет ругаться на отсутствие соединения с сервером.

Теперь трафик Pidgin идет через Tor, и мы можем приступать к регистрации. Для начала нам необходимо определиться с сервером, на котором мы хотим завести учетку. Конечно, можно развернуть свой сервер, но тогда сохранить анонимность станет еще сложнее.
Шаг 3. Выбираем сервер
Серверов существует огромное количество, владельцы многих из них заявляют, что не ведут логов. Но проверить это невозможно. Как будет выглядеть слитый лог, можешь полюбоваться на картинке.

При выборе сервера в первую очередь стоит смотреть, в какой стране он находится. ЕС, США и страна, в которой ты живешь, — это заведомо неудачный вариант. Идеально, если сервер находится там, где законодательно запрещено собирать логи. Вот небольшой список серверов, которым доверяют многие хакеры, как в СНГ, так и за рубежом. Но обрати внимание, что некоторые из серверов находятся в США.
| Сервер | Страна | Примечания | Логи | Onion-зеркало |
|---|---|---|---|---|
| securejabber.me | Германия | Могут заблокировать аккаунт по требованию немецких властей | Нет | giyvshdnojeivkom.onion |
| jabber.calyxinstitute.org | Нидерланды | Нет | ijeeynrc6x2uy5ob.onion | |
| sj.ms | Швейцария | Нет | Нет | |
| swissjabber.ch | Швейцария | Нет | Нет | |
| xmpp.jp | Япония | Нет | Нет | |
| wallstreetjabber.biz | США | Бывший securetalks.biz | Нет | wsjabberhzuots2e.onion |
| thesecure.biz | Сингапур | Нет | Нет | |
| exploit.im | Франция | Нет | Нет | |
| fuckav.in | Франция | Есть фильтр кириллических символов | Нет | Нет |
| jabber.otr.im | Канада | Сервер от создателей OTR | Нет | 5rgdtlawqkcplz75.onion |
| jabber.ccc.de | Австрия | Нет | okj7xc6j2szr2y75.onion | |
| xmpp.rows.io | США | Нет | yz6yiv2hxyagvwy6.onion | |
| jabber.cryptoparty.is | Румыния | Нет | cryjabkbdljzohnp.onion | |
| neko.im | Нидерланды | Ранее базировались в Норвегии | Нет | Нет |
| riseup.net | США | Нет | 4cjw6cwpeaeppfqz.onion |
Мелочи имеют значение
Возьмем для примера выбор никнейма. Казалось бы, элементарный пункт, но многие палятся именно на нем. Ты можешь не помнить, что уже использовал его где-то еще, а вот Google помнит все.
Второй тонкий момент заключается в том, что хорошо бы не использовать никнеймы с символами, у которых есть кириллический аналог. Не на всех серверах настроены фильтры, которые запрещают такие трюки, так что у тебя в какой-то момент может появиться близнец, буквы имени которого не отличаются на вид, но имеют другие коды.
Шаг 4. Регистрируемся на сервере
Определившись с логином и паролем, можешь приступать к регистрации на сервере. Открывай клиент и выбирай вкладку «Учетные записи», а в ней пункт «Управление учетными записями» (или просто нажми Ctrl + A).

В появившемся окне жми «Добавить», откроется окно регистрации и авторизации.

Тут нам необходимо сделать следующее:
После ввода всех данных может появиться отдельное окно для регистрации пользователя. Придется все ввести еще разок и нажать ОK.

Шаг 5. Включаем OTR
Учетка готова, и можно приступать к настройке шифрования. Я рекомендую один из двух вариантов: PGP или OTR. Здесь я для примера возьму OTR — он обеспечивает высокий уровень безопасности и легко настраивается. Однако при его использовании не шифруются сообщения в логах — так что для полной надежности их лучше отключать. А вот на сервере картинка выходит примерно следующая.

Поскольку плагин мы уже скачали и установили, его можно активировать из клиента. Открываем Pidgin, жмем «Средства» и выбираем пункт «Модули».

Активируем плагин Off-the-Record (OTR).

Далее нам необходимо настроить этот модуль. Для этого в самом низу списка модулей нажимаем «Настроить модуль».

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

Ключи создаются быстро, однако на этом шаге иногда происходит небольшое подвисание. Не пугайся! Pidgin не завис, он просто немного занят. Когда работа закончится, жми Ok и увидишь свой «отпечаток» из сорока символов (пять групп по восемь знаков).

Теперь отмечай галочками следующие пункты:
Ведение журнала — дело исключительно добровольное. Если он пригодится, то включай, если нет, то помни, что его сможет прочитать любой, кому удастся получить доступ к твоему компьютеру — удаленный или совершенно непосредственный.
Ну и последняя галочка — это Show Otr button in toolbar. Она просто добавляет в интерфейс кнопку защиты чата и аутентификации собеседника.

Шаг 6. Аутентифицируем собеседника и защищаем чат
По сути, защищенный канал связи у тебя уже есть. Для добавления собеседника нужно нажать «Собеседники» и выбрать «Добавить собеседника».


Теперь собеседнику придет запрос, и, когда он его подтвердит, можете начинать чат. Статус защищенности можно посмотреть прямо в окне чата. Если шифрование не включено, то там так и будет написано: «Не защищено». Нажав на него, ты увидишь меню.

Если же начать защищенный разговор, то надпись сменится на «Не идентиф.» — это значит, что чат защищен, но нужно аутентифицировать собеседника, чтобы быть уверенным, что он именно тот, за кого себя выдает.
Аутентифицировать собеседника можно тремя способами.
Вопрос и ответ на него. Ты задаешь вопрос собеседнику, а он должен дать правильный ответ.
Общий секрет.
Ручная сверка ключа. Это вариант на тот случай, если ключ нужно передать не через Jabber, а каким-то иным способом.
После того как собеседник будет аутентифицирован, на кнопке наконец появится зеленая надпись «Защищено».
Шаг 7. Настраиваем мобильный клиент
Клиенты Jabber с поддержкой шифрования есть и на мобильных устройствах. Например, ChatSecure для iOS и для Android. На всякий случай предупреждаю, что приложение для Android не указано на официальном сайте и для мессенджера требует многовато привилегий, так что используй на свой страх и риск.
Регистрация в приложении аналогична регистрации на компьютере. Если у тебя уже есть учетная запись, то вместо создания нового аккаунта выбери Existing Account на главной странице.

Далее выбирай XMPP.

И вводи свои данные.

Если хочешь завести новый аккаунт, то нажимай «Создать новую учетную запись» и заполняй все данные. Большой плюс ChatSecure заключается в том, что он умеет пускать трафик через Tor без дополнительных ухищрений.

В ChatSecure заложен и список приватных серверов — выбирай, какой нравится, или, если уже выбрал раньше, вводи адрес в поле Custom в самом низу.

В конце тебе предложат сохранить сертификат. Сохраняй и дождись, пока закончится регистрация.

Теперь достаточно нажать на значок нового сообщения и в появившемся меню нажать «Добавить контакт».

Вводи адрес контакта.

И аутентифицируй его одним из тех методов, которые мы уже перечисляли.
U’r awesome and private 🙂
Поздравляю, теперь ты знаешь, как настроить канал связи, который будет неплохо защищен от отслеживания и перехвата! Однако, чтобы достичь приватности наивысшего уровня, придется пойти дальше — все же заморочиться и развернуть собственный сервер, а также заменить OTR на PGP. Но об этом как-нибудь в другой раз.









