Безопасный пиринговый мессенджер с сквозным шифрованием и возможностью передачи файлов, построенный на Python и современных веб-технологиях.
- 🔥 Возможности
- 🏗️ Архитектура проекта
- 🚀 Быстрый старт
- 📖 Подробное руководство по установке
- 🔧 Конфигурация
- 🧪 Тестирование
- 🔒 Детали безопасности
- 🌐 Сетевой протокол
- 📝 Возможности расширения
- 🐛 Устранение неполадок
- 🤝 Вклад в проект
- Сквозное шифрование с использованием эллиптической криптографии (ECDH)
- Идеальная прямая секретность с эфемерными ключами сессии
- Цифровые подписи для проверки подлинности сообщений
- Onion-маршрутизация для повышения приватности
- Безопасный обмен ключами с протоколом рукопожатия
- P2P-сообщения в реальном времени без центральных серверов
- Обнаружение пиров через UDP-рассылку
- Квитанции о доставке и статус прочтения
- Системные уведомления для передачи файлов
- История чата с локальным хранением SQLite
- Безопасная передача файлов с шифрованием
- Чанковая загрузка для больших файлов
- Отслеживание прогресса с обновлениями в реальном времени
- Проверка файлов с контрольными суммами
- Автопринятие для доверенных пиров
- Поддержка отмены передачи
- Современный адаптивный веб-интерфейс
- Обновления в реальном времени без перезагрузки страницы
- Предпросмотр файлов и индикаторы прогресса
- Мобильная совместимость
- Поддержка тем (светлая/темная)
back/
├── main.py # Основная логика мессенджера
├── web.py # Flask веб-сервер и API
├── core/ # Криптографическое ядро
│ ├── crypto.py # Движок шифрования
│ ├── secure_memory.py # Безопасная работа с памятью
│ └── exceptions.py # Исключения криптосистемы
├── messaging/ # Система сообщений
│ ├── handshake.py # Протокол рукопожатия
│ └── message.py # Класс сообщений
├── network/ # Сетевой уровень
│ ├── connection.py # Менеджер P2P соединений
│ ├── onion_router.py # Реализация onion-маршрутизации
│ ├── file_transfer.py # Безопасная передача файлов
│ ├── discovery.py # Обнаружение пиров
│ └── protocols.py # Протоколы сообщений
├── storage/ # Хранение данных
│ ├── database.py # Управление базой данных SQLite
│ └── models.py # Модели данных
└── api/ # API сервер
└── local_api.py # Локальный API сервер
frontend/
├── index.html # Главная страница приложения
├── login.html # Страница аутентификации
├── css/
│ └── styles.css # Современные адаптивные стили
└── js/
└── app.js # Интерактивная логика фронтенда
- ECDH (Elliptic Curve Diffie-Hellman) для обмена ключами
- ECDSA для цифровых подписей
- AES-256-GCM для шифрования сообщений
- HKDF для вывода ключей
- SHA-256 для проверки целостности
- Децентрализованная сеть без центральных серверов
- UDP-рассылка для обнаружения пиров в локальной сети
- Прямые TCP-соединения между пирами
- Onion-маршрутизация для анонимности
- Трехэтапное рукопожатие для установления соединения
- Эфемерные ключи для каждой сессии
- Проверка подлинности через цифровые подписи
- Защита от replay-атак
- Чанкование файлов для надежной передачи
- Шифрование каждого чанка сессионным ключом
- Проверка целостности через контрольные суммы
- Возобновление передач после обрыва
- Python 3.8 или выше
- pip менеджер пакетов
-
Клонирование репозитория
git clone https://github.com/your-username/MnM_HEX-TEAM.git cd MnM_HEX-TEAM -
Создание виртуального окружения
python3 -m venv .venv source .venv/bin/activate # Windows: .venv\\Scripts\\activate
-
Установка зависимостей
pip install -r requirements.txt
-
Запуск приложения
python3 run_server.py
-
Открытие браузера Перейдите на
http://localhost:8080/login
Для Linux/macOS:
# Обновление пакетов
sudo apt update && sudo apt upgrade -y # Debian/Ubuntu
# или
sudo yum update -y # CentOS/RHEL
# Установка Python и pip
sudo apt install python3 python3-pip -yДля Windows:
- Скачайте Python с python.org
- Установите с опцией "Add to PATH"
- Проверьте установку:
python --version pip --version
# Клонирование репозитория
git clone https://github.com/your-username/MnM_HEX-TEAM.git
cd MnM_HEX-TEAM
# Создание виртуального окружения
python3 -m venv .venv
# Активация окружения
# Linux/macOS:
source .venv/bin/activate
# Windows:
.venv\\Scripts\\activate
# Установка зависимостей
pip install -r requirements.txt# Создание необходимых директорий
mkdir -p uploads downloads
# Настройка прав доступа
chmod 755 uploads downloads# Запуск сервера
python3 run_server.py
# Проверка работоспособности
curl http://localhost:8080Создайте файл Dockerfile в корне проекта:
FROM python:3.11-slim
# Установка системных зависимостей
RUN apt-get update && apt-get install -y \\
gcc \\
&& rm -rf /var/lib/apt/lists/*
# Установка рабочей директории
WORKDIR /app
# Копирование файлов зависимостей
COPY requirements.txt .
# Установка Python зависимостей
RUN pip install --no-cache-dir -r requirements.txt
# Копирование исходного кода
COPY . .
# Создание необходимых директорий
RUN mkdir -p uploads downloads
# Открытие портов
EXPOSE 8080 8765
# Запуск приложения
CMD ["python3", "run_server.py"]Создайте файл docker-compose.yml:
version: '3.8'
services:
messenger:
build: .
ports:
- "8080:8080"
- "8765:8765"
volumes:
- ./uploads:/app/uploads
- ./downloads:/app/downloads
- ./secure_chat.db:/app/secure_chat.db
environment:
- PYTHONUNBUFFERED=1
restart: unless-stopped
network_mode: host # Для P2P обнаружения# Сборка образа
docker build -t secure-messenger .
# Запуск через docker-compose
docker-compose up -d
# Проверка статуса
docker-compose ps
# Просмотр логов
docker-compose logs -f messenger# Проверка доступности
curl http://localhost:8080
# Вход в контейнер для отладки
docker-compose exec messenger bashexport MESSENGER_USERNAME="your_username" # Имя пользователя по умолчанию
export DEBUG=1 # Режим отладки
export MESSENGER_PORT=8080 # Порт веб-сервера
export P2P_PORT=8765 # P2P портОтредактируйте run_server.py для настройки:
- Порт веб-сервера
- P2P порт коммуникации
- Лимиты загрузки файлов
- Настройки обнаружения
# Расположение БД
./secure_chat.db
# Очистка БД
rm secure_chat.db
# Резервное копирование
cp secure_chat.db backup_$(date +%Y%m%d).dbpython3 tests/run_all_tests.pypython3 tests/quick_test.py # Базовая функциональность
python3 tests/test_file_transfer.py # Система передачи файлов
python3 tests/test_comprehensive_p2p.py # P2P интеграция
python3 tests/test_complete_file_transfer.py # End-to-end передача
python3 tests/test_integration.py # Общая интеграция- ✅ Криптографические операции
- ✅ P2P сообщения
- ✅ Протокол передачи файлов
- ✅ Onion-маршрутизация
- ✅ Web API эндпоинты
- ✅ Интеграция фронтенда
# Запуск тестов в контейнере
docker-compose run --rm messenger python3 tests/run_all_tests.py
# Интерактивное тестирование
docker-compose run --rm messenger bash- Кривая: secp256r1 (prime256v1)
- Обмен ключами: ECDH с HKDF
- Шифрование: AES-256-GCM
- Подписи: ECDSA с SHA-256
- Хеширование: SHA-256 для целостности
- Без центральных серверов - чистый P2P
- Onion-маршрутизация для защиты IP
- Эфемерные ключи для прямой секретности
- Локальное хранение только - без облачного доступа
- Replay-атаки: временные метки и nonce
- Man-in-the-middle: проверка подписей
- DoS-атаки: ограничение частоты запросов
- Атаки на память: безопасное затирание данных
HANDSHAKE_INIT- Инициация безопасного соединенияHANDSHAKE_RESPONSE- Завершение рукопожатияSECURE_MESSAGE- Зашифрованные сообщения чатаFILE_OFFER- Предложение передачи файлаFILE_CHUNK- Зашифрованные данные файлаDELIVERY_RECEIPT- Подтверждение доставки
- UDP-рассылка в локальной сети
- Обмен информацией о пирах
- Автоматическое обнаружение пиров
- Идентификация устройств
{
"type": "SECURE_MESSAGE",
"sender_id": "device_id",
"timestamp": 1234567890,
"nonce": "random_bytes",
"encrypted_data": "base64_encrypted_content",
"signature": "base64_signature"
}- Создайте новые модули в
/back/network/ - Расширьте протоколы в
/back/network/protocols.py - Добавьте новые API эндпоинты в
/back/web.py
- Обновите
/frontend/js/app.jsдля новой логики - Добавьте стили в
/frontend/css/styles.css - Создайте новые HTML компоненты
- Реализуйте новые протоколы в
/back/network/ - Добавьте обработчики в
/back/main.py - Обновите систему сообщений
# /back/network/voice.py
class VoiceMessageProtocol:
def encode_audio(self, audio_data):
# Кодирование аудио
pass
def transmit_voice(self, peer_id, audio_chunk):
# Передача голоса
pass# /back/network/video.py
class VideoCallProtocol:
def establish_call(self, peer_id):
# Установка видеозвонка
pass
def stream_video(self, video_frames):
# Потоковая передача видео
pass# /back/plugins/plugin_manager.py
class PluginManager:
def load_plugin(self, plugin_path):
# Загрузка плагина
pass
def execute_hook(self, hook_name, data):
# Вызов хуков плагинов
passПорт уже используется
# Убить существующие процессы
lsof -ti:8080 | xargs kill -9
lsof -ti:8765 | xargs kill -9
python3 run_server.pyБлокировка файрволом
# Linux
sudo ufw allow 8080
sudo ufw allow 8765
sudo ufw allow out 8080
sudo ufw allow out 8765
# macOS
sudo pfctl -f /etc/pf.confПиры не обнаруживаются
- Проверьте сетевое подключение
- Убедитесь в одной подсети
- Отключите VPN при необходимости
- Проверьте настройки файрвола
Передача файлов не работает
- Проверьте место на диске
- Убедитесь в правах доступа к файлам
- Проверьте стабильность соединения
- Проверьте лимиты размера файлов
Включите отладочное логирование:
export DEBUG=1
python3 run_server.py# Просмотр логов в реальном времени
tail -f /var/log/messenger.log
# Поиск ошибок
grep -i error /var/log/messenger.log
# Анализ производительности
grep -i performance /var/log/messenger.log# Проверка портов
netstat -tulpn | grep :8080
netstat -tulpn | grep :8765
# Тестирование соединения
telnet localhost 8080
telnet localhost 8765
# Проверка UDP-рассылки
tcpdump -i any udp port 8765- Форкните репозиторий
- Создайте ветку функционала:
git checkout -b feature-name - Закоммитьте изменения:
git commit -am 'Add feature' - Отправьте в ветку:
git push origin feature-name - Отправьте pull request
- Python: соответствие PEP 8
- JavaScript: современные стандарты ES6+
- CSS: адаптивный дизайн с flexbox/grid
- Документация: исчерпывающие docstrings
- Автоматические тесты должны проходить
- Код должен соответствовать стандартам
- Документация должна быть обновлена
- Безопасность должна быть учтена
🔐 Secure P2P Messenger - Общайтесь свободно, безопасно и без центрального контроля.