← Retour aux projets


Projet personnel
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
- 1Découverte des hôtesLe backend résout le sous-réseau local et pinge chaque IP pour construire la liste des hôtes actifs.
- 2Scan de ports concurrentPour chaque hôte actif, un ThreadPoolExecutor sonde la liste TOP_PORTS en parallèle — ports ouverts et noms de services collectés.
- 3Classification des risquesChaque port ouvert est recherché dans RISK_MAP et étiqueté élevé / moyen / faible selon le risque d exposition connu.
- 4Streaming WebSocketRé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.
- 5Rendu ReactLe 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)