Aller au contenu
Retour aux projets
Cover
Projet personnel

Scanner Réseau (FastAPI + React)

Scanner Réseau (FastAPI + React)

Scanner réseau temps réel — backend FastAPI + WebSocket + interface React/Vite

Contexte

Projet personnel de sécurité réseau : un scanner de réseau local full-stack capable d identifier les hôtes actifs et les ports ouverts sur un segment LAN, de diffuser les résultats en temps réel via WebSocket, et de classifier chaque service par niveau de risque. Conçu en deux couches : un backend Python FastAPI avec threads concurrents, et un frontend React/Vite affichant les résultats en direct.

Fonctionnalités développées

  • Découverte d hôtes : résolution du sous-réseau local et ping de chaque IP pour lister les hôtes actifs
  • Scan de ports concurrent via ThreadPoolExecutor — tous les top ports scannés en parallèle par hôte
  • Table de détection de 45 services connus (HTTP, SSH, RDP, MSSQL, Redis, MongoDB, Docker, K8s...)
  • Classification des risques (élevé / moyen / faible) par port via RISK_MAP (Telnet, RDP, BDD exposées...)
  • Streaming WebSocket en temps réel — résultats envoyés au frontend dès que chaque hôte termine
  • Frontend React/Vite : cartes d hôtes en live, badges de ports colorés par risque, indicateur de progression

Stack & Technologies

  • Python 3 + FastAPI — Backend API REST et WebSocket
  • uvicorn — Serveur ASGI pour FastAPI
  • ThreadPoolExecutor — Scan de ports concurrent (stdlib concurrent.futures)
  • WebSockets — Streaming temps réel backend → frontend
  • React 18 + Vite — Frontend SPA avec mise à jour live
  • CORS middleware — Intégration backend/frontend cross-origin

Fonctionnement

  1. 1
    Découverte des hôtes
    Le backend résout le sous-réseau local et pinge chaque IP pour construire la liste des hôtes actifs.
  2. 2
    Scan de ports concurrent
    Pour chaque hôte actif, un ThreadPoolExecutor sonde la liste TOP_PORTS en parallèle — ports ouverts et noms de services collectés.
  3. 3
    Classification des risques
    Chaque port ouvert est recherché dans RISK_MAP et étiqueté élevé / moyen / faible selon le risque d exposition connu.
  4. 4
    Streaming WebSocket
    Résultats envoyés au frontend en temps réel dès que chaque hôte termine son scan — sans attendre la fin du scan complet.
  5. 5
    Rendu React
    Le frontend reçoit les événements JSON via WebSocket et affiche des cartes d hôtes avec badges de ports colorés à la volée.

Points techniques clés

Transport
WebSocket (FastAPI + uvicorn)(Streaming temps réel)
Concurrence
ThreadPoolExecutor(Sondage parallèle par hôte)
Couverture ports
45 services(Dict KNOWN_SERVICES)
Niveaux de risque
3 niveaux(Élevé / Moyen / Faible via RISK_MAP)
Dépendances
Minimales(fastapi, uvicorn, websockets + React/Vite)

Captures d'écran

Screenshot 1