Skip to content

iwhitedark/net_hack_snapshoot_2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SecureMesh

Децентрализованное peer-to-peer приложение для обмена сообщениями на Android, работающее без централизованной инфраструктуры. Поддерживает текстовые сообщения, передачу файлов и голосовые звонки через локальные Wi-Fi сети и Wi-Fi Direct.

Архитектура

┌───────────────────────────────────────────────────────────┐
│                     Слой интерфейса                        │
│  ┌────────────┐ ┌────────────┐ ┌──────────┐ ┌──────────┐  │
│  │PeersFragment│ │ChatFragment│ │GroupChat │ │LogFragment│  │
│  └─────┬──────┘ └─────┬──────┘ └────┬─────┘ └────┬─────┘  │
│  ┌─────┴──────────────┴─────────────┴────────────┴──────┐  │
│  │              ViewModels / LiveData / Flow              │  │
│  └──────────────────────────┬────────────────────────────┘  │
├─────────────────────────────┴────────────────────────────────┤
│                        MeshService                           │
│  ┌──────────────────┐ ┌───────────┐ ┌──────────────────┐     │
│  │   Обнаружение    │ │Маршрутиз. │ │  Криптография    │     │
│  │  UDP mcast       │ │ Flood+TTL │ │  AES-256-GCM    │     │
│  │  239.255.42.99   │ │ LRU дедуп │ │  Ed25519 подп.  │     │
│  │  :42099          │ │           │ │  X25519 DH      │     │
│  │ + Wi-Fi Direct   │ │           │ │  BeaconSigner   │     │
│  │ + BLE Discovery  │ │           │ │  TOFU пиннинг   │     │
│  └───────┬──────────┘ └─────┬─────┘ └────────┬─────────┘     │
│  ┌───────┴──────────┐ ┌─────┴─────┐          │              │
│  │ UDP Multicast    │ │TCP :42100 │          │              │
│  │ + P2P :42101     │ │           │          │              │
│  │ + BLE GATT       │ │           │          │              │
│  └──────────────────┘ └───────────┘          │              │
│  ┌──────────────────┐ ┌──────────────────────┴────────┐     │
│  │ Передача файлов  │ │  WebRTC менеджер звонков      │     │
│  │ 32КБ чанки+SHA256│ │  Opus аудио, метрики         │     │
│  └──────────────────┘ └───────────────────────────────┘     │
│  ┌──────────────────┐ ┌───────────────┐ ┌───────────────┐   │
│  │  GroupManager    │ │NetworkMonitor │ │BatteryAware   │   │
│  │  Групповые чаты  │ │ Wi-Fi состоян.│ │ Энергосбереж. │   │
│  │  E2E на участника│ │ Авто-реконнект│ │ 4 режима      │   │
│  └──────────────────┘ └───────────────┘ └───────────────┘   │
└──────────────────────────────────────────────────────────────┘

Возможности

  • Обнаружение узлов: UDP multicast (239.255.42.99:42099) + Wi-Fi Direct (:42101) + BLE GATT-сервер с автоматическими подписанными HELLO/BYE маяками
  • Текстовые сообщения: Зашифрованный P2P чат с подтверждениями доставки (ACK)
  • Групповые чаты: Создание групп, приглашения, E2E-шифрование на каждого участника (без общего группового ключа)
  • Мультихоп-маршрутизация: Flooding с TTL (макс. 5 хопов) + LRU-дедупликация (кэш 10K)
  • Передача файлов: Чанки по 32 КБ с SHA-256 проверкой целостности, скользящее окно, возобновление
  • Голосовые звонки: WebRTC с SDP-сигнализацией через mesh, метрики качества (RTT/потери/джиттер)
  • Шифрование: AES-256-GCM (AEAD), подписи Ed25519, X25519 DH, HKDF-SHA256 со случайной солью, TOFU-пиннинг ключей
  • Хранение ключей: EncryptedSharedPreferences (AES-256-GCM + AES-256-SIV)
  • Подпись маяков: Все HELLO/BYE подписаны Ed25519 через интерфейс BeaconSigner
  • Надёжная доставка: ACK + повторы с экспоненциальным откатом (2с/4с/8с, макс. 3 попытки)
  • Мониторинг сети: Отслеживание состояния Wi-Fi/Ethernet, автоматический реконнект при смене сети
  • Энергосбережение: 4 режима (FULL_POWER/BALANCED/LOW_POWER/CRITICAL), адаптивные интервалы маяков, приоритет BLE при низком заряде
  • Журнал событий: UI в реальном времени с событиями обнаружения, маршрутизации, криптографии и доставки

Технологический стек

  • Язык: Kotlin
  • Платформа: Android (minSdk 26, targetSdk 34)
  • Сеть: UDP Multicast, TCP Sockets, Wi-Fi Direct, BLE GATT, WebRTC
  • Криптография: Google Tink (AEAD), java.security (Ed25519, X25519), AndroidX Security Crypto
  • Асинхронность: Kotlin Coroutines + Flow + StateFlow
  • Интерфейс: Material Design 3, ViewBinding, RecyclerView

Сборка и запуск

# Клонирование
git clone <repo-url>
cd net_hack

# Сборка
./gradlew assembleDebug

# Установка
adb install app/build/outputs/apk/debug/app-debug.apk

# Запуск тестов
./gradlew test

Тестирование на эмуляторах

Для проверки peer-to-peer связи:

  1. Запустите два Android-эмулятора на одной машине
  2. Оба эмулятора используют общую сеть хоста, поэтому multicast-обнаружение работает
  3. Установите приложение на оба эмулятора
  4. Узлы должны появиться автоматически в течение 5 секунд
  5. Нажмите кнопку чата у узла для начала обмена сообщениями

Структура проекта

app/src/main/java/com/hexteam/securemesh/
├── SecureMeshApp.kt          # Класс Application
├── MainActivity.kt           # Главная активность с ViewPager
├── model/                    # Классы данных
│   ├── Peer.kt               # Информация об узле
│   ├── MeshMessage.kt        # Сообщение протокола
│   ├── MessageType.kt        # Перечисление типов (14 типов)
│   ├── ChatMessage.kt        # UI-сообщение чата
│   ├── LogEntry.kt           # Запись журнала событий
│   ├── FileTransferInfo.kt   # Состояние передачи файла
│   └── GroupChat.kt          # Модель группового чата
├── protocol/
│   └── MessageCodec.kt       # JSON кодирование/декодирование + фрейминг
├── network/
│   ├── MeshEventBus.kt       # Центральная шина событий (Flow)
│   ├── MulticastDiscovery.kt # UDP multicast HELLO/BYE + подпись
│   ├── WifiDirectDiscovery.kt # Wi-Fi Direct обнаружение + подпись
│   ├── BleDiscovery.kt       # BLE GATT обнаружение (fallback)
│   ├── TcpTransport.kt       # TCP соединения + фрейминг
│   ├── MeshRouter.kt         # Flooding + TTL + LRU дедупликация
│   ├── ReliableDelivery.kt   # ACK + очередь повторов
│   ├── GroupManager.kt       # Групповые чаты + E2E на участника
│   ├── NetworkMonitor.kt     # Мониторинг Wi-Fi/Ethernet состояния
│   └── BatteryAwareManager.kt # Энергосбережение (4 режима)
├── crypto/
│   ├── KeyManager.kt         # Генерация и хранение ключей (EncryptedSharedPrefs)
│   ├── MessageEncryptor.kt   # AES-GCM + подпись Ed25519
│   └── BeaconSigner.kt       # Интерфейс подписи/верификации маяков
├── file/
│   └── FileTransferManager.kt # Передача файлов чанками
├── call/
│   ├── CallSignaling.kt      # SDP/ICE через mesh
│   ├── WebRtcCallManager.kt  # WebRTC аудиозвонки
│   └── CallMetrics.kt        # RTT, потери, джиттер
├── service/
│   └── MeshService.kt        # Foreground-сервис
└── ui/
    ├── peers/                 # Вкладка списка узлов
    ├── chat/                  # Вкладка чата
    ├── log/                   # Вкладка журнала событий
    └── call/                  # Активность звонка

docs/
├── spec.md                   # Спецификация архитектуры
├── threat_model.md           # Модель угроз
├── guide_deploy.md           # Сборка, развёртывание, тестирование
├── guide_network.md          # Настройка сетевых подключений
└── guide_user.md             # Руководство пользователя

Разрешения

Разрешение Назначение
INTERNET TCP/UDP сетевое взаимодействие
ACCESS_WIFI_STATE Получение информации о Wi-Fi для multicast
CHANGE_WIFI_STATE Управление Wi-Fi Direct
CHANGE_WIFI_MULTICAST_STATE Включение MulticastLock
ACCESS_FINE_LOCATION Wi-Fi Direct / BLE обнаружение (Android 6–12)
NEARBY_WIFI_DEVICES Wi-Fi Direct обнаружение (Android 13+)
BLUETOOTH BLE обнаружение (до Android 12)
BLUETOOTH_ADMIN BLE сканирование/рекламирование (до Android 12)
BLUETOOTH_SCAN BLE сканирование (Android 12+)
BLUETOOTH_ADVERTISE BLE рекламирование (Android 12+)
BLUETOOTH_CONNECT BLE подключение (Android 12+)
RECORD_AUDIO Голосовые звонки
FOREGROUND_SERVICE Фоновая работа mesh-сервиса

Документация

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages