Помните, мы разбирали, как мессенджер MAX сканирует сеть и наличие VPN? Энтузиасты провели реверс-инжиниринг протокола и выкатили полностью открытый бэкенд.
Сегодня у нас на разборе проект OpenMAX - эмулятор сервера для мессенджеров MAX и TamTam. Разберем архитектуру, посмотрим в исходники и учимся разворачивать независимую инфраструктуру.
Проект написан на Python 3.12+ с активным использованием асинхронности (asyncio). Разработчик под ником Alexey Polyakov проделал огромную работу по реверсу официального API (api.oneme.ru и api.tamtam.chat).
Стек технологий выглядит привычно и надежно для любого сисадмина:
- Сетевое взаимодействие строится на websockets и TCP.
- Для упаковки и сжатия трафика применяются msgpack и lz4.
- В качестве базы данных поддерживаются MySQL, MariaDB и легкий SQLite (через aiosqlite).
Судя по дампу SQL-таблиц, сервер локально хранит профили пользователей, токены авторизации, чаты, контакты и сами сообщения в формате JSON-объектов.
Интересная деталь: автор проекта жестко выступает против современных трендов вайбкодинга. В правилах проекта (CODE_OF_CONDUCT.md) прямо указано, что OpenMAX не принимает правки и Pull Requests, написанные с использованием искусственного интеллекта и нейросетей. Только ручной хардкор.
Как переключить на свой сервер?
Просто скачать официальное приложение из стора и вбить IP-адрес не выйдет. Сервер требует модификации клиента.
У вас есть два пути:
1. Использовать пропатченный мобильный клиент MAX для Android или iOS (в репозитории есть раздел с инструкциями по патчингу IPA и APK).
2. Собрать открытый клиент Komet из исходного кода, жестко заменив адреса серверов на свои локальные.
Развертывание и настройка
Проект пока находится на ранней стадии и не рекомендуется для сурового продакшена, но для тестирования закрытого корпоративного контура подходит.
Для старта серверу обязательно требуются SSL-сертификаты. Если у тебя нет валидных сертификатов от Let's Encrypt, можно сгенерировать самоподписанные прямо в терминале.# Генерация самоподписанного сертификата X.509 на 365 дней
openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 365
Далее нужно настроить переменные окружения. Сервер слушает сразу несколько портов для совместимости с разными клиентами.# Пример минимальной конфигурации .env файла
host = "0.0.0.0"
oneme_tcp_port = "443"
tamtam_tcp_port = "4433"
oneme_ws_port = "81"
tamtam_ws_port = "82"
log_level = "debug"
db_type = "sqlite"
db_file = "openmax.db"
certfile = "cert.pem"
keyfile = "key.pem"
Что делать, если хочется попробовать?
Авторы сами предупреждают в README: проект находится на ранней стадии разработки, вероятно полон багов и категорически не рекомендован для профессиональной среды. На данный момент у сервера нет опубликованных релизов, стабильных версий и changelog-ов.
Под капотом:
- Весь код написан на Python и лежит в директории `src/`.
- Реализован собственный TCP/WS-стек через модули `oneme_tcp`, `tamtam_tcp` и `tamtam_ws`.
- Конфигурация задается через файл `.env` (шаблон доступен в `.env.example`).
- Схема базы данных описана в файле `tables.sql`.
Уже этого набора характеристик достаточно, чтобы понять: пускать этот код в контур, где критична безопасность, нельзя.
Вердикт: используйте проект исключительно как локальную песочницу в закрытой сети с тестовыми данными. Если очень хочется развернуть сервер — прячьте его в изолированный контейнер без доступа к боевым базам и вашей основной внутренней сети.
❗️❗️❗️ Нравится формат? Ставь 👍
👉 Рубрика: #News@LinuxSkill
#MAX #OpenSource #Python #Security #SelfHosted #ReverseEngineering