Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
NetLogic — NetLogic est une boîte à outils avancée d'analyse réseau et de cybersécurité pour l'inspection du trafic, l'analyse de paquets et la détection de menaces. | Kitploit
Outils/GitHubGitHub/dmitryflynn/netlogic
OSINT (Renseignement de Sources Ouvertes)ReconnaissanceScanners de VulnérabilitésSécurité WebSécurité RéseauTests d'IntrusionSécurité CloudÉnumération de Sous-domainesAnalyse DNSSécurité de l'IA
GitHubdmitryflynn/netlogic

NetLogic

18il y a 12 joursPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

NetLogic est une boîte à outils avancée d'analyse réseau et de cybersécurité pour l'inspection du trafic, l'analyse de paquets et la détection de menaces.

Voir le dépôt

NetLogic

Cartographe de surface d'attaque Cloud-Native et corrélateur de vulnérabilités — v3.0

NetLogic est une plateforme de sécurité réseau combinant scan de ports actif, corrélation de CVE (API NVD en direct), analyse SSL/TLS, audit de sécurité HTTP, évaluation de la sécurité DNS/e-mail, détection de prise de contrôle de sous-domaine, OSINT passif, sondage de vulnérabilités actif, un moteur de raisonnement basé sur l'IA, la découverte de chaînes d'attaque inter-hôtes, et une architecture d'agent de sonde profonde — livrée en tant qu'application web (tableau de bord React + FastAPI). Le moteur de scan central est en Python 3.9+ pur avec la bibliothèque standard et zéro dépendance tierce.

Python 3.9+ License: MIT Platform


Fonctionnalités

ModuleDescription
Scan de portsScan TCP connect avec 43/58 ports, 22 sondes de service, récupération de bannières
Corrélateur de CVEAPI NVD v2.0 en direct + enrichissement EPSS via FIRST.org
Analyseur TLSVersions de protocole, chiffrements faibles, POODLE/BEAST/CRIME/DROWN, expiration du certificat
Audit d'en-tête HTTPHSTS, CSP, X-Frame-Options, CORS, drapeaux de cookie ; score 0–100
Empreinte de pileDétection de CMS, framework, fournisseur cloud, CDN, WAF à partir de bannière/en-tête/corps
Sécurité DNSSPF, DKIM, DMARC, DNSSEC, transfert de zone, score d'usurpabilité
OSINT passifJournaux de transparence des certificats, DNS DoH, recherche ASN — aucun contact direct avec la cible
Sonde de servicesSondes non authentifiées Redis/Mongo/ES/Docker/K8s/etcd, 33 chemins admin
Détecteur de prise de contrôleDécouverte de sous-domaines via logs CT + 25 empreintes CNAME de fournisseurs cloud
Intégration NucleiWrapper pour 13 000+ templates communautaires (CVE, tech, exposition, mauvaise configuration) — licence MIT
Pipeline de fusionPorte de signaux multi-capteurs → accord déterministe → arbitrage IA → graphe d'attaque → rapport en 6 sections
Empreinte WebHash de favicon (mmh3 compatible Shodan), secrets JS, marqueurs de version, fichiers exposés, détection de page d'accueil par défaut
Analyse IAOpenAI / Anthropic / OpenRouter / Ollama / Gemini / Groq / Kimi / Qwen — streaming de jetons SSE
Moteur de raisonnementBoucle adaptative observer→raisonner→agir avec EvidenceGraph, moteur d'hypothèses, décroissance de confiance, provenance, planificateur, playbooks, détection de changements, validation active
Sonde profondeArchitecture d'agent par service : ScoutAgent (recon), ProbeAgent (vérifications de CVE ciblées), Coordinateur, Sandbox
Agent d'investigation IABoucle de style ReAct : après les capteurs de base, l'IA pilote une surface d'outils organisée, limitée par scope et auditée (~35 outils) pour vérifier les pistes et construire des chaînes d'attaque — avec des outils agressifs optionnels (sondes de crash, preuve libre, exploit libre) pour les cibles autorisées

Comment exécuter

Il y a exactement deux façons d'exécuter NetLogic :

ModeCommandeDescription
Application webnetlogic --guiDémarre FastAPI + sert la SPA React + agent de scan intégré, génère automatiquement les secrets, et ouvre le tableau de bord dans votre navigateur. C'est la seule façon d'exécuter l'application web.

La surface du produit est l'application web (tableau de bord React + FastAPI). Le moteur de scan sous src/ alimente les tâches lancées depuis l'interface utilisateur.


Démarrage rapide```bash

One-time install

pip install -r requirements-api.txt pip install -e .

Run the web dashboard

netlogic --gui

→ Dashboard at http://localhost:8000, auto-generated secrets in ~/.netlogic/secrets.json

(first run builds the dashboard automatically; requires Node.js)

Or a one-shot CLI scan

netlogic scanme.nmap.org --full

root@kitploit:~
## Référence CLI```
netlogic [target] [flags]

Le point d'entrée est api.cli:main (défini dans pyproject.toml), qui délègue à netlogic.py:main(). Toute la logique de scan se trouve dans src/.

Target specification

Périmètre de scan```

Basic scan — 43 common ports + CVE correlation

netlogic example.com

Full scan — all modules enabled

netlogic example.com --full

Deep TLS + HTTP header audit

netlogic example.com --tls --headers

Subdomain takeover detection

netlogic example.com --takeover

Passive OSINT only

netlogic example.com --osint

Technology stack + WAF fingerprinting

netlogic example.com --stack

DNS/email security (SPF, DKIM, DMARC, DNSSEC)

netlogic example.com --dns

Active service probing (unauthenticated access, default creds, CVE-specific checks)

netlogic 10.0.0.5 --probe

Everything — all flags combined

netlogic example.com --full --probe

root@kitploit:~
### Sélection du port```
# Quick — 43 common ports (default)
netlogic example.com --ports quick

# Full — 58 extended ports
netlogic example.com --ports full

# Custom list
netlogic example.com --ports custom=22,80,443,8080,9200

Analyse IA```

OpenRouter (default)

netlogic example.com --ai --ai-key $KEY

OpenAI

netlogic example.com --ai --ai-provider openai --ai-key $KEY --ai-model gpt-4o-mini

Anthropic

netlogic example.com --ai --ai-provider anthropic --ai-key $KEY

Gemini

netlogic example.com --ai --ai-provider gemini --ai-key $KEY --ai-model gemini-2.0-flash

Local Ollama

netlogic example.com --ai --ai-provider ollama

Custom OpenAI-compatible endpoint

netlogic example.com --ai --ai-provider custom --ai-base-url https://... --ai-model model-name

root@kitploit:~
### Fournisseurs d'IA pris en charge

| Fournisseur | Modèle par défaut | Style d'API |
|---|---|---|
| `openrouter` | `anthropic/claude-sonnet-4` | OpenAI |
| `openai` | `gpt-4o-mini` | OpenAI |
| `anthropic` | `claude-3-5-sonnet-20241022` | Anthropic Messages |
| `kimi` (Moonshot) | `kimi-k2.6` | OpenAI |
| `qwen` (Alibaba) | `qwen-plus` | OpenAI |
| `groq` | `llama-3.3-70b-versatile` | OpenAI |
| `gemini` (Google) | `gemini-2.0-flash` | OpenAI |
| `ollama` | `llama3` | OpenAI |
| `custom` | spécifié par l'utilisateur | OpenAI |

### Moteur de raisonnement```
# Adaptive observe→reason→act loop (deterministic by default; AI-augmented with --ai)
netlogic example.com --reason

# Multi-host world modeling — discovers in-scope neighbours, reasons per host
netlogic example.com --reason --multi-host

# Change detection — diffs against prior saved report
netlogic example.com --since-last

# Active validation — confirms hypotheses with safe non-destructive GETs
netlogic example.com --reason --active-validate

# Deep probe — per-service agent architecture with context isolation
netlogic example.com --deep-probe

Agent d'investigation IA

Après l'exécution des capteurs de base, un agent optionnel de style ReAct permet à l'IA de piloter ses propres outils pour vérifier les pistes et construire des chaînes d'attaque, au lieu de laisser les résultats CVE de version/bannière comme pistes non vérifiées. L'IA propose des appels d'outils ; un environnement d'exécution déterministe les exécute — chaque outil est limité par périmètre à la cible, nettoyé et enregistré comme une observation. L'IA ne touche jamais directement au réseau.```

AI chooses tools after baseline (needs --ai)

netlogic example.com --ai --ai-agent

Depth mode — higher budgets, chases CVE leads + attack chains, blocks early stop

netlogic example.com --ai --agent-depth --agent-max-steps 24 --agent-max-requests 80

root@kitploit:~
L'agent dispose d'environ 35 outils en lecture seule/actifs sécurisés par défaut : sondes HTTP/TLS/DNS, `dir_enum`, `confirm_tech`, `timing_probe`, `cve_probe` (vérifications de marqueurs CVE connus et organisés), `sqli_boolean`/`sqli_time`, `ssrf_canary`, `idor_diff`, `file_disclosure`, `browser_get` (sans tête, passe les défis JavaScript), plus la comptabilité HackerOne (`record_poc`, `severity_suggest`, `submit_readiness`).

**Outils agressifs optionnels** — désactivés par défaut, **uniquement pour les cibles autorisées / en propriété dans le périmètre** (jamais sur un scan public ou inconnu). Chacun nécessite `--ai-agent` :

| Flag | Tool | Ce qu'il déverrouille | Garde-fous conservés |
|---|---|---|---|
| `--allow-crash-probes` | `crash_probe` | Vérifications CVE de crash/DoS organisées (http.sys, MS15-034) qui PEUVENT faire planter l'hôte | Catalogue fixe de 3 CVE — pas de forme libre |
| `--allow-freeform-proof` | `http_proof` | Niveau C : GET/HEAD/OPTIONS libres (+ POST sur les chemins de type recherche/connexion/graphql) | Schémas destructeurs + PUT/PATCH/DELETE bloqués ; preuve, pas de mutation |
| `--allow-exploit-requests` | `exploit_request` | Niveau E : **toute méthode** (incl. PUT/PATCH/DELETE) + chemin/en-têtes/corps arbitraire contre la cible | Limité au périmètre ; fermeture en cas d'échec sur les schémas massivement destructeurs (DROP/TRUNCATE TABLE, `rm -rf`) et injection d'en-têtes CR/LF ; chaque requête est auditée |

L'ActionGate déterministe maintient le cœur en `safe_active` ; ces trois flags sont les options explicites et auditées au-dessus. Exemple (boîte de labo possédée + modèle local) :```
netlogic YOUR_LAB_HOST --full --ai --ai-agent --agent-depth \
  --allow-crash-probes --allow-exploit-requests \
  --ai-provider ollama --ai-model gemma4:31b-cloud \
  --ai-base-url http://localhost:11434/v1 --ai-key ollama

Scan authentifié```

SSH key-based — reads real installed package versions

netlogic example.com --ssh-user admin --ssh-key ~/.ssh/id_rsa

SSH password (requires sshpass)

netlogic example.com --ssh-user admin --ssh-pass SECRET

Custom SSH port

netlogic example.com --ssh-user admin --ssh-key ~/.ssh/id_rsa --ssh-port 2222

root@kitploit:~
### Benchmark```
# Fusion pipeline benchmark against recorded cassettes (oracle mode — perfect AI upper bound)
netlogic --benchmark

# With real AI model
netlogic --benchmark --benchmark-ai

# Export report
netlogic --benchmark --benchmark-export report.md

# Verbose per-subject output
netlogic --benchmark --benchmark-verbose

Sortie```

Report format

netlogic example.com --report terminal # terminal output (default) netlogic example.com --report json # JSON file netlogic example.com --report html # HTML report netlogic example.com --report all # terminal + JSON + HTML

Output directory

netlogic example.com --out ./reports

CVSS threshold

netlogic example.com --min-cvss 7.0

Colour

netlogic example.com --no-color

root@kitploit:~
### Gestion du cache NVD```
netlogic --cache-stats
netlogic example.com --nvd-key YOUR_NVD_KEY

Divers```

netlogic --version # Show version and exit netlogic --gui # Start web dashboard

root@kitploit:~
## Pipeline de fusion

Le pipeline de fusion est un entonnoir **capteurs → porte → arbitrage IA → synthèse** qui remplace les appels IA monolithiques par une porte de précision. Il se trouve dans `src/fusion/` (12 fichiers).

### Schéma de signal (`src/fusion/signals.py`)

Contrat de données portant des preuves. Chaque capteur émet des objets `Signal` :
- `source` : `probe`/`banner`/`nuclei`/`wappalyzer`/`nvd`/`osv`/`tls`/`dns`
- `kind` : `vuln`/`tech`/`exposure`/`misconfig`/`service`
- `claim` : sujet normalisé (ex. `"CVE-2021-44228"`, `"nginx"`)
- `host`, `port`, `service`, `evidence` (limité à 600 caractères)
- `confidence` (0..1), `reliability` (`high`/`medium`/`low`)
- `kev`, `epss` (0..1), `cvss` (0..10), `exploit_available`, `version_matched`, `probe_confirmed`
- `exposure` dict (reachability, WAF, vantage)
- `observed_data` (octets bruts envoyés à l'IA — PAS les noms de capteurs ou les sévérités pour éviter un biais d'étiquetage)
- `ai_view()` supprime les métadonnées du capteur, ne renvoie que les faits observés

### Gate (`src/fusion/gate.py`)

Accord déterministe — étant donné `list[Signal]`, regroupe par sujet et renvoie `list[Verdict]` :

| Condition | Verdict |
|---|---|
| KEV-listed OR probe-confirmed OR critical+exploit/high-EPSS | **Confirmé** (épinglé — indéboulonnable) |
| ≥2 sources indépendantes d'accord, ≥1 haute fiabilité | **Confirmé** (sauf si toutes correspondent par version → gris) |
| Faible fiabilité unique, impact faible/moyen, aucune corroboration | **Rejeté** |
| Tout le reste | **Gris** (coûte un jeton IA) |

### Arbitrage IA (`src/fusion/adjudicator.py`)

Ne touche que la bande grise. Contraintes de sécurité appliquées dans le code (pas via le prompt) :
- Les éléments gris haut/critique ne peuvent JAMAIS être rejetés — au pire rétrogradés en `potential`
- Les correspondances par version uniquement sont limitées à `potential` (les distributions backportent sans incrément de version)
- L'IA découvre également de nouvelles trouvailles à partir du contexte complet de l'hôte
- Défaillance douce : une panne de l'IA laisse la bande grise en `potential` — aucune perte silencieuse de données

### Synthèse (`src/fusion/synthesis.py`)

`build_attack_graph(verdicts)` → graphe de reachabilité déterministe à partir des trouvailles CONFIRMÉES.
`full_synthesize(...)` → rapport IA en 6 sections :
1. Résumé exécutif
2. Trouvailles clés (tableau)
3. Chaînes d'attaque (basées sur graphe, LLM raconte les arêtes réelles)
4. Au-delà des CVE connues
5. Faux positifs et bruit
6. Remédiation

### Capteurs

| Capteur | Fichier | Ce qu'il produit |
|---|---|---|
| Engine bridge | `engine_bridge.py` | Convertit les artefacts de scan → Signaux depuis NVD, sondes, stack, Nuclei, vérificateur |
| Wappalyzer | `sensors/wappalyzer.py` | Empreinte compatible Wappalyzer sans dépendance des réponses HTTP |
| Nuclei | `sensors/nuclei.py` | Exécute des modèles YAML sur les réponses (sous-ensemble de la syntaxe Nuclei) |
| Cassette | `cassette.py` | Enregistrement/rejeu à partir de cassettes HTTP (données de benchmark hors ligne) |

### Cross-host (`src/fusion/cross_host.py`)

Regroupement post-arbitrage des verdicts entre hôtes par service+version partagé pour la narration de chaîne d'attaque multi-sauts dans la synthèse.

### Flux du pipeline```
Engine artifacts / Cassette data
    ↓
engine_bridge.py / cassette.py     → Signal list
    ↓
gate.py::adjudicate()              → Verdict list (confirmed/discarded/gray)
    ↓
adjudicator.py::run_adjudication() → AI on gray band only
    ↓
synthesis.py::full_synthesize()    → 6-section report + attack graph

Moteur de raisonnement

Situé dans src/reasoning/ (~58 fichiers). Boucle multi-phase, sécurisée par paliers, observe→raisonne→agit. Activé avec --reason.

Boucle principale (src/reasoning/director.py — ReconDirector.run())

  1. Phase 2 Balayage des capteurs : StrategyManager sélectionne le persona → Scheduler choisit l'action → SensorStep exécute → EvidenceGraph intègre les observations → ConfidenceEngine rafraîchit les croyances
  2. Phase 3 Cycle IA : Les générateurs déterministes remplissent les objectifs/hypothèses → Les agents IA proposent des enveloppes typées Proposal → AICoordinator normalise/classe/vérifie → Les propositions acceptées ensemencent l'état → Compiler → ExecutionPlanner → ExecutionKernel exécute les sondes → InferenceEngine résout
  3. Phase 6c Multi-hôte : Découverte inter-hôtes via CrossHostGraph, génère des instances HostReasoner filles

Hiérarchie des états (src/reasoning/state.py)

Composants clés

Sous-système IA (src/reasoning/ai/)

Pipeline : Générer → Normaliser → Classer → (élagage MetaReasoner) → Vérifier → Stocker


Architecture de sonde approfondie

Situé dans src/deep/ (7 fichiers). Utilisé avec --deep-probe. Architecture agent par service pour une exécution de sonde en contexte isolé.

Déroulement de DeepCoordinator.run() :

  1. Construire le plan de capteur IA (_build_sensor_plan via sensor_director)
  2. Envoyer ScoutAgent pour la reconnaissance passive
  3. Regrouper les découvertes par service → instances ProbeAgent par service (chacune avec un contexte CVE/technologie isolé)
  4. Exécuter l'énumération de service, Nuclei (balises sélectionnées par IA), le moteur de vérification, la prise de contrôle, la sonde de sous-réseau dirigée par IA, la topologie, SSH authentifié, le diff de scan, le sondage d'accessibilité

Moteur de vérification

Situé dans src/verifier/ (3 fichiers). Confirmation de CVE pilotée par IA avec des sondes ciblées.

Re-vérification Phase 2 (reverify_with_context) fournit le contexte complet de l'hôte pour affiner les tests échoués.


Directeurs de capteurs IA

Situé dans src/directors/ (4 fichiers). Sélection des paramètres de scan pilotée par LLM.


Orchestration multi-hôte

Situé dans src/orchestrator.py. Déclenché par des cibles séparées par des virgules. Exécute run_scan() par hôte, agrège les résultats, construit un contexte inter-hôtes à partir des verdicts de fusion combinés. Les groupes inter-hôtes détectent les services/versions partagés entre hôtes pour la narration de chaînes d'attaque multi-sauts.


Couverture CVE

Direct : NVD API v2.0 (src/nvd_lookup.py)

  • Recherche directe pour les produits/versions non couverts
  • 192 signatures hors ligne pour environnements isolés
  • Cache sur disque avec écritures atomiques
  • Clé API NVD pour des limites de débit plus élevées (--nvd-key)

Enrichissement

  • EPSS (src/epss.py) : API FIRST.org par lots de 100 ID CVE, cache disque 24h dans ~/.netlogic/epss_cache.json, repli doux à 0,0
  • CISA KEV : CVE activement exploitées dans la nature
  • Suivi des exploits publics : Marqueurs Metasploit et PoC

Intégration Nuclei

src/external/nuclei_runner.py enveloppe le binaire Nuclei (licence MIT). Optionnel — se dégrade gracieusement si le binaire n'est pas trouvé. Les résultats alimentent le pipeline de fusion sous forme de signaux typés (étiquettes de sévérité supprimées pour éviter les biais du LLM).```

Install Nuclei

scoop install nuclei # Windows brew install nuclei # macOS go install github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest # Linux

root@kitploit:~
---

## Fusion Benchmark

`src/fusion/benchmark.py` — mesure hors ligne sur des cassettes HTTP étiquetées (`benchmark/*.json` et `src/fusion/data/`). Métriques :

| Métrique | Seuil de passage |
|---|---|
| Réduction des FP | ≥ 80 % |
| Rappel critique | = 100 % |

Deux modes :
- **Oracle** (`--benchmark`) : borne supérieure de l'IA parfaite — mesure le fonctionnement déterministe seul
- **Modèle réel** (`--benchmark --benchmark-ai`) : mesuré avec le LLM configuré

---

## Architecture```
netlogic/
├── netlogic.py                  ← Local launcher (`--gui`, optional CLI helpers)
│
├── src/                         ← Scan engine (used by the web API)
│   ├── scanner.py               ← TCP scanner, 22 service probes, banner grabbing
│   ├── engine.py                ← Orchestrator: SensorStep pipeline, all scan modules + fusion
│   ├── orchestrator.py          ← Multi-host: per-host scan → cross-host context
│   ├── ai_analyst.py            ← LLM integration (9 providers, stdlib-only transport)
│   ├── cve_correlator.py        ← CVE matching: NVD 
│   ├── nvd_lookup.py            ← NVD API v2.0 client, disk cache, CISA KEV
│   ├── epss.py                  ← EPSS enrichment (FIRST.org, 24h cache)
│   ├── service_prober.py        ← Unauthenticated service access, default creds, admin paths
│   ├── vuln_prober.py           ← CVE-specific safe active probes
│   ├── osint.py                 ← DoH, CT logs, ASN lookup
│   ├── tls_analyzer.py          ← SSL/TLS deep analysis
│   ├── header_audit.py          ← HTTP security header audit
│   ├── stack_fingerprint.py     ← CMS, framework, cloud, CDN, WAF detector
│   ├── web_fingerprint.py       ← Favicon mmh3, JS secrets, version files, exposed paths, lander detection
│   ├── dns_security.py          ← SPF, DKIM, DMARC, DNSSEC, zone transfer
│   ├── takeover.py              ← Subdomain takeover (25 provider fingerprints)
│   ├── authenticated.py         ← SSH subprocess: dpkg/rpm/apk parsing, 60+ product mappings
│   ├── topology.py              ← PTR, IPv6, traceroute, ASN/org/country
│   ├── reachability_prober.py   ← Lateral movement matrix from subnet adjacency
│   ├── network_prober.py        ← /24 subnet sweep: live-host → full port scan
│   ├── service_enum.py          ← Protocol attribute extraction (SSH KEX, SMBv1, RDP NLA, SNMP)
│   ├── ssl_utils.py             ← Configurable SSL context management, TLS probe
│   ├── scan_diff.py             ← Change-over-time: diffs against prior JSON report
│   ├── json_bridge.py           ← Streaming JSON events for agent / REST API
│   ├── reporter.py              ← Terminal, JSON, HTML output renderers
│   │
│   ├── fusion/                  ← Precision funnel (12 files)
│   │   ├── signals.py           ← Signal schema
│   │   ├── gate.py              ← Deterministic agreement
│   │   ├── adjudicator.py       ← AI adjudication (gray band only)
│   │   ├── synthesis.py         ← Attack graph + 6-section report
│   │   ├── ai.py                ← CompleteFn/StreamCompleteFn adapter
│   │   ├── engine_bridge.py     ← Artifacts → Signals → verdicts
│   │   ├── benchmark.py         ← Offline benchmark (oracle + real model)
│   │   ├── cassette.py          ← HTTP cassette record/replay
│   │   ├── corpus.py            ← Cassette→case conversion + CLI
│   │   ├── cross_host.py        ← Cross-host verdict correlation
│   │   ├── sensors/nuclei.py    ← Nuclei YAML → Signal conversion
│   │   └── sensors/wappalyzer.py← Wappalyzer fingerprint → Signal
│   │
│   ├── directors/               ← AI sensor directors (4 files)
│   │   ├── sensor_director.py   ← LLM selects which sensors to enable
│   │   ├── reprobe.py           ← LLM designs re-probe plans
│   │   ├── nuclei_selector.py   ← LLM selects Nuclei template tags
│   │   └── subnet_director.py   ← LLM directs subnet probing
│   │
│   ├── verifier/                ← AI CVE verification (3 files)
│   │   ├── engine.py            ← Verifier orchestration
│   │   ├── planner.py           ← Built-in + AI-generated probe plans
│   │   └── runner.py            ← Raw TCP/TLS probe execution
│   │
│   ├── deep/                    ← Deep probe agents (7 files)
│   │   ├── coordinator.py       ← Full deep pipeline orchestrator
│   │   ├── scout_agent.py       ← Passive recon agent
│   │   ├── probe_agent.py       ← Per-service probe agent
│   │   ├── chain.py             ← Exploit chain planning + PoC generation
│   │   ├── sandbox.py           ← Restricted PoC execution
│   │   ├── base_agent.py        ← Abstract base
│   │   └── models.py            ← Mission/AgentReport data models
│   │
│   ├── reasoning/               ← Adaptive reasoning engine (~58 files)
│   │   ├── director.py          ← ReconDirector (main loop)
│   │   ├── state.py             ← WorldModel/InvestigationState/ExecutionState
│   │   ├── hypothesis.py        ← Hypothesis engine (competing candidates)
│   │   ├── evidence_graph.py    ← Temporal entity graph (content-addressed obs)
│   │   ├── confidence.py        ← Noisy-OR belief computation
│   │   ├── provenance.py        ← Observation→Inference→Hypothesis edges
│   │   ├── scheduler.py         ← Information-gain action selection
│   │   ├── strategy.py          ← Meta-reasoning: personas, explore/exploit
│   │   ├── strategies.py        ← Concrete strategy implementations
│   │   ├── action_gate.py       ← Risk-tiered probe authorisation
│   │   ├── change_detection.py  ← Phase 7: observation-level diff
│   │   ├── active_validation.py ← Phase 8b: SAFE_ACTIVE probes
│   │   ├── cross_host.py        ← Cross-host world modeling
│   │   ├── objective.py         ← Objective DAG management
│   │   ├── intent.py            ← Intent model + EvidenceType enum (29 types)
│   │   ├── candidate.py         ← Action candidate with lazy factory
│   │   ├── actions.py           ← Action model with RiskTier + Predicate
│   │   ├── compiler.py          ← Intent → InvestigationGraph
│   │   ├── execution_planner.py ← InvestigationGraph → ProbePlanGraph
│   │   ├── execution_kernel.py  ← Probe execution with validators
│   │   ├── probe_executor.py    ← Read-only probe backends
│   │   ├── primitive_registry.py← Probe primitive catalogue
│   │   ├── generators.py        ← Deterministic objective/hypothesis population
│   │   ├── playbooks.py         ← YAML playbook system
│   │   ├── planning_pass.py     ← GoalPlanner integration
│   │   ├── budget.py            ← Probe budget management
│   │   ├── inference.py         ← Deterministic rule-based inference
│   │   ├── novel_inference.py   ← Novel-vuln hypothesis rules
│   │   ├── investigation_planner.py  ← Goal-directed investigation planning
│   │   ├── investigation_memory.py   ← Strategy attempt memory
│   │   ├── observation_translator.py ← Raw data → structured observations
│   │   ├── observation.py       ← Immutable, content-addressed observation
│   │   ├── reflect.py           ← PlannerFeedback generation
│   │   ├── reasoning_validator.py ← Continuous integrity audit
│   │   ├── builder.py           ← State population from artifacts
│   │   ├── trace.py             ← Execution tracing
│   │   ├── explanation.py       ← Explanation records
│   │   ├── ai/                  ← AI cognitive layer (subsystem)
│   │   ├── packs/               ← Technology pack calibration
│   │   ├── playbooks/           ← YAML playbook templates
│   │   └── rules/               ← JSON inference rules
│   │
│   └── external/nuclei_runner.py ← Nuclei binary wrapper
│
├── api/                         ← FastAPI controller
│   ├── main.py                  ← App factory, lifespan, middleware stack
│   ├── cli.py                   ← Typer -> netlogic.py bridge
│   ├── db.py                    ← PostgreSQL connection + migration runner
│   ├── crypto.py                ← Fernet seal/unseal (AES-128-CBC + HMAC-SHA256)
│   ├── auth/
│   │   ├── api_keys.py          ← Dual-store (memory/PG), SHA-256 hashed
│   │   ├── jwt_handler.py       ← Stdlib-only HS256 JWT
│   │   ├── oidc.py              ← Clerk/IdP OIDC (RS256 + JWKS)
│   │   ├── license.py           ← LicenseManager (stub → real payment API)
│   │   ├── rate_limit.py        ← Sliding-window, IP banning
│   │   ├── provisioning.py      ← Clerk auto-provisioning
│   │   └── dependencies.py      ← require_org FastAPI dependency
│   ├── agents/
│   │   ├── registry.py          ← Agent lifecycle (concurrency-aware, JSON persistence)
│   │   └── local_agent.py       ← Built-in in-process agent
│   ├── jobs/
│   │   ├── manager.py           ← ScanJob lifecycle, capped event deque (10k), SSE, Postgres
│   │   └── executor.py          ← Dispatch (capability/selector, least-loaded, reclaimer)
│   ├── middleware/audit.py      ← X-Request-ID + structured audit + SIEM shipping
│   ├── models/
│   │   ├── scan_request.py      ← Pydantic ScanRequest (ipaddress validation)
│   │   └── agent.py             ← AgentRegistration constraints
│   ├── routes/
│   │   ├── auth.py              ← /v1/auth/*
│   │   ├── jobs.py              ← /v1/jobs/*
│   │   ├── agents.py            ← /v1/agents/*
│   │   ├── health.py            ← /health + /v1/health
│   │   ├── license.py           ← /v1/license/*
│   │   └── settings.py          ← /v1/settings/*
│   └── storage/
│       ├── json_store.py         ← 10 MB cap, 500 file cap, atomic writes
│       ├── pg_store.py           ← Postgres JSONB upsert
│       └── reasoning_store.py    ← Dual-store for reasoning state
│
├── dashboard/                   ← React SPA (Vite + TypeScript + Tailwind + Clerk)
│   └── src/
│       └── pages/               ← Dashboard, NewScan, ScanDetail, Agents, Targets,
│                                   TargetTimeline, Settings, License, Login, SignUp, Legal
│
├── docs/                        ← Design documentation
│   ├── DEPLOY_SAAS.md, saas-auth.md
│   ├── REASONING_ENGINE_DESIGN.md
│   ├── LEGAL_COMPLIANCE.md
│   ├── ENTERPRISE_READINESS.md
│   └── DESIGN_PARTNER_PACK.md
│
├── db/migrations/               ← PostgreSQL schema migrations
└── benchmark/                   ← HTTP cassette recordings for fusion benchmark

Référence de l'API

Toutes les routes sous le préfixe /v1/. Authentification:

  • Machine: Clé API → POST /v1/auth/token → HS256 JWT (expiration par défaut 1h)
  • Humain: JWT de session Clerk OIDC → la dépendance require_org vérifie via JWKS

Authentification```

POST /v1/auth/token Exchange API key for JWT [10/min/IP] POST /v1/auth/keys Create API key (X-Admin-Key) [admin] GET /v1/auth/keys List keys (masked) [admin] DELETE /v1/auth/keys Revoke key (body, not URL) [admin]

root@kitploit:~
### Tâches```
POST   /v1/jobs                Create scan job                    [30/min/org]
GET    /v1/jobs                List recent jobs
GET    /v1/jobs/history/{target}  Scan history for target
GET    /v1/jobs/{id}           Job detail
GET    /v1/jobs/{id}/stream    SSE event stream                   [60/min/org]
GET    /v1/jobs/{id}/export    Export (format=json|md|raw)
POST   /v1/jobs/{id}/explore-beyond  AI deep-dive on finding
POST   /v1/jobs/{id}/cancel    Cancel job
DELETE /v1/jobs/{id}           Remove job

Agents```

POST /v1/agents/register Register agent [5/hr/IP] POST /v1/agents/{id}/heartbeat Keep-alive [3/min] GET /v1/agents/{id}/tasks Poll pending jobs POST /v1/agents/{id}/tasks/{job_id}/events Submit events [60/min, 500/batch] POST /v1/agents/{id}/tasks/{job_id}/complete Mark done/failed GET /v1/agents List agents (org-scoped) GET /v1/agents/{id} Agent detail DELETE /v1/agents/{id} Deregister POST /v1/agents/{id}/activate Enable agent POST /v1/agents/{id}/deactivate Disable agent

root@kitploit:~
### Licence / Paramètres```
GET    /v1/license              License status
POST   /v1/license/activate     Activate key                    [3/hr/IP]
GET    /v1/settings/ai          Get org AI config (key masked)
POST   /v1/settings/ai          Update org AI config (encrypted)
POST   /v1/settings/ai/test     Test AI connection

Système```

GET /health Service status + uptime GET /docs OpenAPI docs GET /redoc ReDoc docs

root@kitploit:~
---

## Variables d'environnement

### Contrôleur

| Variable | Défaut | Description |
|---|---|---|
| `NETLOGIC_ENV` | _(non défini)_ | `production`/`prod` = validation du secret au démarrage |
| `NETLOGIC_JWT_SECRET` | `changeme-in-production` | Secret de signature HS256, ≥32 caractères |
| `NETLOGIC_JWT_EXPIRY` | `3600` | Durée de vie du JWT en secondes |
| `NETLOGIC_ADMIN_KEY` | `admin-changeme` | Identifiant administrateur, ≥32 caractères en production |
| `NETLOGIC_API_KEYS` | _(vide)_ | Clés initiales : `key1:org1,key2:org2,...` |
| `NETLOGIC_CORS_ORIGINS` | _(vide)_ | Origines autorisées (CORS désactivé si vide) |
| `NETLOGIC_PORT` | `8000` | Port d'écoute |
| `NETLOGIC_HOST` | `0.0.0.0` | Adresse d'écoute |
| `NETLOGIC_NO_BROWSER` | _(non défini)_ | `1` désactive l'ouverture automatique |
| `NETLOGIC_OIDC_ISSUER` | _(non défini)_ | URL de l'API Frontend Clerk → connexion OIDC |
| `NETLOGIC_OIDC_AUDIENCE` | _(non défini)_ | Audience OIDC |
| `NETLOGIC_OIDC_DEFAULT_ORG` | _(non défini)_ | org_id de repli pour les utilisateurs OIDC |
| `NETLOGIC_DATABASE_URL` | _(non défini)_ | Chaîne de connexion PostgreSQL |
| `NETLOGIC_SECRETS_KEY` | _(non défini)_ | Clé Fernet pour les informations d'identification au repos |
| `NETLOGIC_AGENT_TOKEN_MAX_AGE` | `604800` | Durée de vie du jeton agent (7 jours) |
| `NETLOGIC_AGENT_PENDING_CAP` | `50` | Nombre max de tâches en attente par agent |
| `NETLOGIC_MAX_AGENTS_PER_ORG` | `100` | Nombre max d'agents enregistrés |
| `NETLOGIC_AI_PROVIDER` | `openrouter` | Fournisseur IA par défaut |
| `NETLOGIC_AI_API_KEY` | _(vide)_ | Clé IA par défaut |
| `NETLOGIC_AI_MODEL` | par défaut du fournisseur | Modèle par défaut |
| `NETLOGIC_AI_BASE_URL` | par défaut du fournisseur | URL de base personnalisée |
| `NETLOGIC_NVD_KEY` | _(vide)_ | Clé API NVD |
| `NETLOGIC_VALID_LICENSES` | _(vide)_ | Surcharges de licence de développement/test |
| `NETLOGIC_LICENSE_KEY` | _(vide)_ | Clé de licence de l'instance |
| `NETLOGIC_SCANS_DIR` | _(par défaut)_ | Répertoire de stockage des scans |
| `NETLOGIC_SIEM_ENDPOINT` | _(vide)_ | URL d'expédition des journaux d'audit |
| `NETLOGIC_WAPPALYZER_DATA` | _(intégré)_ | Chemin des empreintes Wappalyzer |

### Agent

| Variable | Défaut | Description |
|---|---|---|
| `NETLOGIC_CONTROLLER` | `http://localhost:8000` | URL de base du contrôleur |
| `NETLOGIC_API_KEY` | _(non défini)_ | Clé API pour l'enregistrement |

---

## Architecture de sécurité

### Pile des middleware (ordre d'application)
1. **AuditMiddleware** — Corrélation `X-Request-ID`, journal d'audit JSON structuré, expédition SIEM
2. **RequestSizeLimitMiddleware** — Limite du corps de 10 Mo (protection anti-DoS)
3. **LicenseMiddleware** — Bloque toutes les routes `/v1/` en l'absence de licence (renvoie 402)
4. **SecurityHeadersMiddleware** — HSTS (1 an), CSP (différencié HTML vs API), X-Frame-Options, X-Content-Type-Options, Permissions-Policy, Referrer-Policy
5. **OriginCheckMiddleware** — Validation de l'origine pour POST/PUT/DELETE (défense en profondeur contre les CSRF)
6. **CORSMiddleware** — Restrictif : pas de wildcard, origines spécifiques uniquement

### Authentification
- **Clés API** : SHA-256 hachées au repos ; en clair uniquement sur `create()` et dans le corps de la requête lors de `verify()`
- **JWT** : HS256 avec la bibliothèque standard (`hashlib`+`hmac`+`base64`), champ `alg` fixé avant vérification (empêche alg=none), fallback aléatoire éphémère pour le développement
- **OIDC** : Clerk/Auth0/WorkOS — RS256 + JWKS, provisionnement automatique des utilisateurs et organisations lors de la première connexion
- **Jetons d'agent** : SHA-256 hachés dans le registre, comparaison en temps constant, expiration à 7 jours

### Limitation de débit
Fenêtre glissante en mémoire. Par point de terminaison, par portée (IP, org_id, agent_id). Bannissement IP après 5 échecs d'échange de jetons en 10 minutes (bannissement de 1 heure).

### Protection des données
- Clés API LLM : chiffrées avec Fernet au repos (AES-128-CBC + HMAC-SHA256). Fermeture en cas d'échec en production : nécessite `NETLOGIC_SECRETS_KEY`
- Multi-tenant : toutes les données limitées à `org_id` ; une recherche inter-organisation renvoie 404 (pas 403)
- Traversée de chemin : tous les chemins de stockage sont validés, les séparateurs et `..` sont rejetés

---

## CI / Tests```bash
pip install -r requirements-dev.txt
python -m pytest

CI pipeline (.github/workflows/ci.yml) — 5 tâches :

  1. test — 1 000+ cas pytest
  2. postgres-integration — migrations DB + tâches durables + clés par organisation
  3. fusion-benchmark — réduction FP ≥ 80% + rappel critique = 100%
  4. securité — Bandit (HIGH) + pip-audit
  5. build-dashboard — npm ci + npm run build

Avis légal

NetLogic est destiné uniquement aux évaluations de sécurité autorisées, aux tests d'intrusion et à l'administration réseau. Scanner ou sonder des hôtes sans autorisation écrite explicite est illégal dans la plupart des juridictions. L'auteur décline toute responsabilité en cas d'utilisation non autorisée.


Licence

MIT © 2026 Dmitry Flynn — Voir LICENSE.txt

Télécharger l’outil
Moteur de vérificationRe-vérification de CVE pilotée par l'IA : conçoit des plans de sondes HTTP brutes à partir du contexte CVE, exécute via sockets stdlib
Orchestration multi-hôtePipeline de scan complet par hôte → contexte inter-hôtes et matrice d'accessibilité → découverte de chaîne d'attaque
Directeurs de capteurs IALe LLM décide quels capteurs prioriser en fonction des ports ouverts, de la pile technologique et des CVE
SSH authentifiéSous-processus ssh avec identifiants lit les versions réelles des paquets installés (60+ correspondances de produits)
Énumération de servicesExtraction d'attributs au niveau protocole (KEX SSH, SMBv1, NLA RDP, communauté SNMP, état d'authentification HTTP)
Cartographe de topologieDNS inversé, IPv6, traceroute, ASN/org/pays via ip-api.com
Sonde d'accessibilitéMatrice de mouvement latéral post-compromise à partir de l'adjacence de sous-réseau
Sonde réseauBalayage de sous-réseau actif (/24 voisins privés) avec découverte en deux phases (balayage en direct → scan de ports complet)
Diff de scanÉvolution dans le temps : différences entre le scan actuel et le rapport JSON antérieur le plus récent par cible
Gestion des licencesSystème de licence commerciale avec activation par clé (stub pour Stripe/Paddle/Lemon Squeezy)
Configuration IA par organisationChaque organisation stocke ses propres identifiants LLM chiffrés au repos via Fernet
OIDC / ClerkConnexions humaines via des JWT de session émis par Clerk vérifiés contre JWKS public avec provisionnement automatique
PostgreSQLPersistance multi-locataire complète avec migrations automatiques (tâches de scan, paramètres organisation, état de raisonnement, audit)
Benchmark FusionBenchmark hors ligne contre des cassettes HTTP enregistrées ; métriques précision/rappel/rappel critique/réduction FP
CLI
netlogic <target> [flags]
Scan terminal unique (pas de serveur), imprime/écrit le rapport.
FormatExempleMode
Nom d'hôteexample.comScan mono-hôte
IPv410.0.0.5Scan mono-hôte
CIDR192.168.1.0/24Balayage CIDR (scanner uniquement, pas de fusion)
Séparés par des virgulestarget1,target2Orchestration multi-hôtes (contexte inter-hôtes)
  • Phase 8 Passe de planification : GoalPlanner produit des plans d'investigation
  • Continu : Audit d'intégrité ReasoningValidator → ProvenanceBuilder enregistre les arêtes → état persistant
  • CoucheClasseCe qu'elle suit
    WorldModelWorldModelEvidenceGraph, observations, croyances, hôtes, technologie, accessibilité
    InvestigationStateInvestigationStateObjectifs (DAG), hypothèses, contradictions, impasses, persona actuel
    ExecutionStateExecutionStateBudget, historique des sondes, provenance, plans d'investigation, transcription IA
    LearnedPatternsLearnedPatternsHeuristiques multi-scan + playbooks
    ComposantFichierDescription
    EvidenceGraphevidence_graph.pyGraphe d'entités temporelles dédupliquées (observations adressées par contenu via SHA-256)
    Moteur d'hypothèseshypothesis.pyCandidats concurrents avec vraisemblances, entropie, gain d'information, résolution postérieure
    ConfidenceEngineconfidence.pyNoisy-OR sur des sources distinctes ; version seule plafonnée à 0,60 ; KEV/sonde bloqué à 0,97
    ProvenanceBuilderprovenance.pyArêtes Observation→Inférence→Hypothèse, adressées par hachage de contenu
    Schedulerscheduler.pySélection d'actions par gain d'information avec explore_reserve (10%)
    StrategyManagerstrategy.pyMéta-raisonnement : sélection du persona, mode exploration/exploitation, détection de plateau
    ActionGateaction_gate.pyDéfense en profondeur : niveaux de risque (READ_ONLY < SAFE_ACTIVE < INTRUSIVE < EXPLOIT), maximum cœur est SAFE_ACTIVE
    InferenceEngineinference.pyRègles déterministes depuis rules/*.json, n'écrit jamais de confiance
    NovelInferenceEnginenovel_inference.pyRègles pour cache_poisoning, request_smuggling, auth_bypass, etc.
    ExecutionKernelexecution_kernel.pyValide + exécute + trace les sondes (portée → lecture seule → budget → déduplication → profondeur)
    Système de playbooksplaybooks.pyPlaybooks YAML avec conditions de déclenchement et modèles d'intention
    Détection de changementchange_detection.pyPhase 7 : diff sur les observations immuables (pas l'état), produit un ScanDelta de DeltaEvents
    Validation activeactive_validation.pyPhase 8b : sondes SAFE_ACTIVE non destructives via ActionGate
    FichierComposant
    coordinator.pyAICoordinator — orchestration du pipeline par étapes
    proposals.pyEnveloppe typée Proposal avec payload spécifique au type, provenance, économie
    normalize.pyProposalNormalizer — porte de validation totale
    rank.pyProposalRanker — score = raw_score × prob_correct × reputation_weight
    meta_reasoner.pyÉlagage déterministe (détection de boucle, réduction d'incertitude)
    verifier.py4 étapes : Syntaxe → Sémantique → Preuve → Sécurité
    store.pyProposalStore — registre de cycle de vie
    transcript.pyInvestigationTranscript — enregistrement des chaînes causales
    evaluation.pyHarnais d'évaluation déterministe basé sur cassettes
    reputation.pyAgentReputation — suit le taux d'acceptation/rejet par agent
    agents/hypothesis_generator.pyC1 — propose des explications concurrentes + hypothèses de vulnérabilité inédites
    agents/counterfactual.pyC11 — propose des objectifs de réfutation
    agents/investigation_designer.pyC2 — conçoit des plans de collecte de preuves
    ComposantFichierDescription
    DeepCoordinatorcoordinator.pyOrchestre le pipeline profond complet : plan de capteur IA → ScoutAgent → ProbeAgent par service → énumération de service → Nuclei → vérificateur → prise de contrôle → sonde de sous-réseau → topologie → authentification → diff → accessibilité
    ScoutAgentscout_agent.pyReconnaissance passive : TLS, en-têtes, pile, DNS, OSINT
    ProbeAgentprobe_agent.pyCible un service avec un contexte CVE/technologie isolé — exécute les sondes + vérificateur
    ExploitChainchain.pyPlanification de chemin d'attaque BFS sur des verdicts confirmés par fusion, génération de PoC
    Sandboxsandbox.pySous-processus restreint pour la validation de PoC (répertoire temporaire, délai d'attente, nettoyage)
    Mission / AgentReportmodels.pyModèles de données pour les directives et résultats des agents
    ComposantFichierDescription
    run_verifier()engine.pyOrchestre : générer des plans → exécuter → construire des Signaux confirmés par sonde
    generate_plans_for_cves()planner.pyPar CVE (CVSS ≥ 7,0) : vérifie ~20 plans intégrés → l'IA génère un plan HTTP brut (méthode, chemin, en-têtes, corps, statut/corps attendu)
    run_test()runner.pyExécution brute de socket TCP/TLS, analyse manuelle HTTP/1.0, correspondance de motif de corps attendu
    DirecteurFichierCe qu'il décide
    SensorDirectorsensor_director.pyQuels capteurs activer/désactiver et à quelle priorité, en fonction des ports ouverts + pile technologique + CVE
    ReprobeDirectorreprobe.pySi des résultats potentiels peuvent être résolus avec des sondes HTTP ciblées
    NucleiSelectornuclei_selector.pyQuelles balises de modèles Nuclei inclure/exclure (réduit les exécutions non pertinentes)
    SubnetDirectorsubnet_director.pyQuels hôtes adjacents sonder, quels ports, à quelle profondeur (ignorer/rapide/standard/profonde)