fc3392779b
feat: slider sensibilité + z-score standardization pour clustering plus précis
...
Sensibilité (0.5x–3.0x) :
- Multiplie k : sensibilité=2x avec k=14 → 28 clusters effectifs
- Labels UI : Grossière / Normale / Fine / Très fine / Maximum
- Paramètres avancés (k, fenêtre) masqués dans un <details>
- Cache invalidé si sensibilité change
Z-score standardisation (Bishop 2006 PRML §9.1) :
- Normalise par variance de chaque feature avant K-means
- Features discriminantes (forte std) pèsent plus
- Résultat : risque 0→1.00 sur clusters bots vs 0→0.27 avant
- Bots détectés : 4 337 IPs vs 1 604 (2.7x plus)
- Nouveaux clusters : Bot agressif, Tunnel réseau, UA-CH Mismatch distincts
Fix TextLayer deck.gl :
- Translittération des accents (é→e, à→a, ç→c…) + strip emojis
- Évite les warnings 'Missing character' sur caractères non-ASCII
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-03-19 10:07:23 +01:00
b2c3379aa0
feat: WebGL clustering (deck.gl) + K-means++ sur toutes les IPs (183K)
...
- Ajout numpy + scipy à requirements.txt (K-means vectorisé, convex hull)
- Réécriture clustering_engine.py :
* K-means++ entièrement vectorisé numpy (100x plus rapide que pur Python)
* PCA-2D par power iteration (numpy)
* Enveloppes convexes par cluster via scipy.spatial.ConvexHull
* Traitement des probabilités nulles (points dupliqués) en K-means++ init
- Réécriture clustering.py :
* Calcul sur la TOTALITÉ des IPs (sans LIMIT) : 183K IPs, 16.8 MB features
* Computation en background thread (ThreadPoolExecutor) + cache 30 min
* Endpoint /api/clustering/status pour polling frontend
* Endpoint /api/clustering/cluster/{id}/points (coordonnées PCA pour WebGL)
- Réécriture ClusteringView.tsx en WebGL (deck.gl) :
* PolygonLayer : enveloppes convexes colorées par niveau de menace
* ScatterplotLayer centroïdes : taille ∝ sqrt(ip_count)
* ScatterplotLayer IPs : chargé sur sélection (LOD), GPU-accelerated
* TextLayer : labels (emojis strippés — non supportés par bitmap font)
* LineLayer : arêtes inter-clusters (optionnel)
* OrthographicView avec pan/zoom natif
* Sidebar : radar 21 features, pagination IPs, export CSV
* Polling automatique toutes les 3s pendant le calcul
- Ajout @deck.gl/react @deck.gl/core @deck.gl/layers à package.json
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-03-19 09:40:27 +01:00
e2db8ca84e
feat: clustering multi-métriques + TCP fingerprinting amélioré
...
- TCP fingerprinting: 20 signatures OS (p0f-style), scoring multi-signal
TTL/MSS/scale/fenêtre, détection Masscan 97% confiance, réseau path
(Ethernet/PPPoE/VPN/Tunnel), estimation hop-count
- Clustering IPs: K-means++ (Arthur & Vassilvitskii 2007) sur 21 features
TCP stack + anomalie ML + TLS/protocole + navigateur + temporel
PCA-2D par puissance itérative (Hotelling) pour positionnement
- Visualisation redesign: 2 vues lisibles
- Tableau de bord: grille de cartes groupées par niveau de risque
(Bots / Suspects / Légitimes), métriques clés + mini-barres
- Graphe de relations: ReactFlow avec nœuds-cartes en colonnes
par niveau de menace, arêtes colorées par similarité, légende
- Sidebar: RadarChart comportemental + toutes métriques + export CSV
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-03-18 18:22:57 +01:00
05d21ae8fb
feat: Réputation IP depuis bases publiques (sans clé API)
...
- Nouveau service backend/services/reputation_ip.py
- IP-API.com: Géolocalisation + détection Proxy/Hosting
- IPinfo.io: ASN + Organisation
- Agrégation des sources avec score de menace 0-100
- Niveaux: clean/low/medium/high/critical
- Nouvelle route API GET /api/reputation/ip/:ip
- Validation IPv4
- Version complète et summary
- Timeout 10s par source
- Nouveau composant frontend ReputationPanel.tsx
- Badge de niveau de menace (code couleur)
- 4 badges détection: Proxy 🌐 , Hosting ☁️ , VPN 🔒 , Tor 🧅
- Infos géographiques: pays, ville, ASN, organisation
- Liste des avertissements
- Sources et timestamp
- Intégration dans InvestigationView
- Panel affiché en premier (avant Graph de corrélations)
- Chargement asynchrone au montage du composant
- Dépendance: httpx==0.26.0 (requêtes HTTP async)
Testé avec 141.98.11.209 (Lithuania, AS209605) → 🟢 CLEAN (0/100)
Aucun proxy/hosting/VPN/Tor détecté
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com >
2026-03-15 18:15:01 +01:00