Skip to content

devgopher/ShortP2P

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ShortP2P

ShortP2P — прототип mesh-мессенджера: приложение для обмена сообщениями между пользователями без центрального сервера чата, с попыткой доставки через несколько узлов (ограниченная глубина поиска по сети), прямым UDP, опционально Bluetooth (RFCOMM на Windows) и ретрансляцией по заранее известному или найденному маршруту.

Это исследовательский/демонстрационный код: протоколы и параметры безопасности не претендую на production-уровень; цель — проверить идеи маршрутизации, мульти-транспорта и сквозного шифрования в одном решении.

Что уже есть в прототипе

  • Локальное хранилище чатов и сообщений (SQLite через sqlite-net-pcl), локальная регистрация/логин (хеш пароля, ключи пользователя).
  • Обнаружение пиров в LAN по UDP (ShortP2P.Discovery).
  • Единый шлюз на пользователя (SharedUserUdpGateway): один UDP-сокет под данные, отдельный канал presence/ping (порт 565, broadcast), периодические объявления и устаревание «видимости» пира (~10 с интервал, ~25 с timeout).
  • Маршрутизация «по графу»: настраиваемая глубина поиска 1–3 хопа (P2pRoutingSettings.MaxSearchHops), ожидание ответов на поиск, повторы при сбое отправки. Маршрут может быть прямым UDP или цепочкой ретрансляции (ChatRelayRoute: первый хоп + strip relay).
  • Адаптивный транспорт для чата (AdaptiveChatTransportLayer): если известен последний адрес пира по ping — отправка на него при доступном транспорте; иначе — отправка через шлюз по текущему маршруту (в т.ч. relay).
  • Два UI: WinForms (Windows) и .NET MAUI (в репозитории ориентир на Windows; другие платформы — по комментариям в .csproj). Общая логика вынесена в ShortP2P.Client.
  • Проект ShortP2P.UI — заглушка под отдельный UI-слой; основные оболочки — WinForms и MAUI.

Технический стек

Область Реализация
Платформа .NET 8, часть библиотек — netstandard2.0 (ShortP2P.Crypto)
Транспорт Абстракция ITransport → UDP (ShortP2P.Transport), Bluetooth WinRT RFCOMM (ShortP2P.Transport.Bluetooth.Windows), опционально последовательный/IR (InfraredSerialTransport)
Криптография RSA (рукопожатие), сессия на ECDH-подобных ключах; AES-128-CBC + HMAC-SHA256 (усечённый tag), верхняя граница зашифрованного пакета 128 байт; крупные полезные нагрузки режутся в MessengerService
Мессенджер ShortP2P.Messenger: шифрование/фрагментация поверх ITransport + P2PSession
Клиент QR (обмен пирами), ZXing/ImageSharp, Polly для устойчивости, сканирование LAN, настройки маршрутизации на диске
Тесты xUnit: ShortP2P.Crypto.Tests

Структура репозитория (логические слои)

ShortP2P.Crypto/              # Ключи, handshake, P2PSession
src/
  ShortP2P.Transport.Abstractions/
  ShortP2P.Transport/         # UDP, заглушка BT, serial
  ShortP2P.Transport.Bluetooth.Windows/
  ShortP2P.Discovery/         # UDP discovery
  ShortP2P.Messenger/         # Шифрованный бинарный обмен поверх транспорта
  ShortP2P.Client/            # Сценарии пользователя, маршрутизация, БД, QR
  ShortP2P.UI/                # Заготовка UI
  ShortP2P.WinForms/          # Десктоп Windows
  ShortP2P.MauiApp/           # MAUI-клиент
  ShortP2P.Crypto.Tests/

В каждом проекте есть свой README.md с краткой структурой папок и файлов.

Сборка и запуск (кратко)

  • Решение: ShortP2P.sln.
  • Тесты: dotnet test из корня репозитория (после восстановления пакетов).
  • MAUI на не-Windows целях может потребовать dotnet workload restore и расширение TargetFrameworks (см. src/ShortP2P.MauiApp/ShortP2P.MauiApp.csproj).
  • Для unpackaged MAUI на Windows при ошибках среды выполнения см. комментарии в ShortP2P.MauiApp.csproj (Windows App SDK).

Ограничения прототипа

  • Mesh-логика упрощена: нет полноценной отказоустойчивой mesh-сети уровня продукта; глубина и таймауты заданы константами/настройками.
  • Криптография и размеры ключей (например RSA-1024 в коде генерации) подходят для эксперимента, а не как эталон для угрозной модели в интернете.
  • Bluetooth реализован для Windows; на других ОС нужны свои реализации ITransport.

Инструменты разработки

Этот проект разрабатывался с использованием Cursor — IDE на базе Visual Studio Code с встроенными средствами ИИ-помощи.

About

Short P2P ecryption library

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages