Skip to content

h3lix-it/mpip

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MPIP

Python application

Самописный Open-Source Децентрализованный Мессенджер + Протокол (да, жри говно, я такое могу сделать, а ты нет))))) MPIP!!!!

Как запустить

python server.py
python server.py 5050
python server.py 5050 pass

Рядом создается server.db если что.

Что умеет

  • Чаты: PM + история
  • Контакты: заявки / принять / отказ
  • Пользователи: регистрация, логин, статус, кто онлайн
  • Комнаты: войти, выйти, история
  • Файлы: JSON + base64 (да,да)

Быстрые команды

  • /register : регистрация
  • /login : вход
  • /pm : личное сообщение
  • /history : история чата
  • /add_contact , /accept , /decline
  • /who: онлайн; /search : поиск
  • /use , /leave, /history_room

Файл по JSON

{"type":"FILE","from":"alice","to":"bob","filename":"pic.png","size":12345,"data":"<base64>"}

Клиент декодирует data и сохраняет, например, в downloads.

Свой клиент

  • TCP к серверу; если есть пароль — пришлите первой строкой
  • Отправляйте команды выше, парсьте ответы
  • Для файлов — JSON как в примере

Примечание

  • Без TLS. Для интернета — пускайте за прокси/туннель.

Децентрализованный протокол

Децентрализованный протокол обмена мгновенными сообщениями. Любой может установить собственный сервер, либо присоединиться к уже существующему, и начать общаться, причём все сообщения передаются в зашифрованном виде для защиты приватности.

Особенности

  • Децентрализация: Каждый может запустить свой сервер или подключиться к существующему
  • Шифрование: Все сообщения можно передавать в зашифрованном виде для защиты приватности
  • Совместимость: Простой протокол на основе сокетов, совместимый со старыми системами
  • Простота: Минимальные зависимости, легкий в использовании

Установка

  1. Установите зависимости:
pip install -r requirements.txt
  1. Убедитесь, что у вас установлен Python 3.6 или выше.

Использование

Запуск сервера

Запустите сервер на указанном порту:

python main.py server --port 8888

С шифрованием (все участники должны использовать тот же пароль):

python main.py server --port 8888 --password secret123

Подключение как клиент

Подключитесь к серверу:

python main.py client --host localhost --port 8888 --username ВашеИмя

Если сервер использует шифрование, укажите пароль:

python main.py client --host localhost --port 8888 --username ВашеИмя --password secret123

Использование отдельных модулей

Вы также можете запускать сервер и клиент напрямую:

Сервер:

python server.py [порт] [пароль]

Клиент:

python client.py <host> <port> <username> [пароль]

Команды в базовом клиенте

  • Введите текст для отправки сообщения
  • /encrypt - переключить режим шифрования (если пароль установлен)
  • exit - выйти из программы

Клиент client.py

Наш Базовый Клиент на Python(Жиртон).

Запуск

python client.py <host> <port> <username> [password]
# пример:
python client.py 127.0.0.1 8888 alice mysecret

Что умеет

  • Подключение к серверу и интерактивный режим
  • Отправка сообщений (обычных и зашифрованных)
  • Отправка файлов до ~10 МБ (base64), сохранение входящих в downloads
  • Показ онлайн-юзеров, вход/выход участников (если сервер шлёт события)

Горячие команды в консоли

  • Введите текст — отправить сообщение
  • /encrypt — включить/выключить шифрование (если password указан при запуске)
  • /file путь_к_файлу — отправка файла
  • exit — выход

Шифрование общее (по паролю) — без сложной криптографии и без обмена ключами.

Архитектура

Проект состоит из следующих модулей:

  • encryption.py - Модуль шифрования (AES-256-CBC)
  • protocol.py - Протокол обмена сообщениями (JSON)
  • server.py - Сервер для приема подключений
  • client.py - Базовый клиент (ну клиент который например под основу можно взять, если свой будете делать. А так его и просто юзать можно, он полностью рабочий ^^)
  • main.py - Главный модуль с CLI интерфейсом

Протокол

Протокол использует простой текстовый формат JSON для максимальной совместимости:

  • Типы сообщений: MESSAGE, JOIN, LEAVE, PING, PONG, KEY_EXCHANGE, USER_LIST
  • Сообщения шифруются с помощью AES-256-CBC
  • Каждое сообщение содержит timestamp и информацию о шифровании

Безопасность

  • Сообщения шифруются с использованием AES-256-CBC
  • Каждое сообщение использует уникальный IV для повышения безопасности
  • Пароль хэшируется с помощью SHA-256 для генерации ключа

Совместимость со старыми системами

Этот проект разработан с учетом совместимости со старыми системами:

  • Использует стандартные библиотеки Python (socket, threading, select)
  • Простой текстовый протокол без сложных зависимостей
  • Минимальные требования к системе
  • Работает на Python 3.6+ (можно адаптировать для более старых версий)

Сервера

Пока-что есть только единственный сервер:

  • 64.188.105.32 (port 8888)

Лицензия

ДА СУКА ПЖЖ НЕ ПИШИ ЧТО ЭТО ТЫ СОЗДАЛ, А НЕ ТО К ТЕБЕ БАБАЙКА ПРИЙДЕТ!!!!

About

MPIP - Общение без проблем!

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages