nmap-interactif est un wrapper en ligne de commande (CLI) de nouvelle génération conçu pour optimiser, simplifier et sécuriser l'exécution des scans Nmap. Développé spécifiquement pour les environnements de pénétration tactique (Kali Linux), cet outil combine la puissance brute de Nmap avec l'ergonomie moderne d'interfaces utilisateur interactives guidées.
Grâce à une intégration fluide de questionary et rich, l'outil abstrait la complexité syntaxique de Nmap tout en garantissant un contrôle absolu au pentester avant toute injection de paquets sur le réseau.
- Moteur d'Intentions Pédagogique : Sélectionnez graphiquement vos objectifs de reconnaissance (Ping Sweep, Full Recon, Vuln Scan) via des menus dynamiques et interactifs.
- Contrôle Absolu Avant Action : Inspectez la commande générée et bénéficiez d'une explication didactique, argument par argument, de ce que s'apprête à faire le binaire Nmap.
- Modification à la Volée : Modifiez manuellement la chaîne de commande finale directement depuis l'invite CLI juste avant l'exécution pour injecter des options spécifiques (ex:
-v,-Pn,--script). - Rendu Visuel Avancé (Real-time Streaming) : Suivez la progression des phases de scan (ARP Ping, Syn Stealth Scan, etc.) en temps réel grâce à un parseur d'événements asynchrone couplé à une barre de progression fluide.
- Gestion Sécurisée des Processus (Anti-Zombie) : Nettoyage automatique et instantané des processus Nmap enfants en cas d'interruption abrupte (
Ctrl+C). - Sauvegarde Structurée : Organisation automatique des rapports générés (fichiers
.nmap,.xml,.gnmap) dans des répertoires horodatés pour faciliter la post-exploitation.
Le projet respecte scrupuleusement le pattern moderne src/ pour garantir un packaging robuste, une isolation des composants et une testabilité maximale.
├── docs
│ └── reference
│ ├── nmap-help.txt
│ └── nmap-options.json
├── pyproject.toml
├── README.md
├── src
│ └── nmap_interactif
│ ├── core
│ │ ├── command_builder.py # Génération dynamique et explications des syntaxes
│ │ ├── environment.py # Vérification des prérequis système (Nmap, privilèges)
│ │ ├── paths.py # Gestionnaire des structures de répertoires d'I/O
│ │ ├── progress.py # Parseur d'analyse d'événements et de pourcentage
│ │ └── runner.py # Exécuteur événementiel de sous-processus
│ ├── intents
│ │ └── engine.py # Arbre logique des choix d'audit
│ ├── __init__.py
│ └── ui
│ └── main.py # Point d'entrée, menus et affichage Rich
├── tests
│ └── test_core.py # Suite de tests unitaires et mocks intensifs
└── tools
└── parse_help.py # Utilitaire d'extraction de l'aide Nmap
❯ Installation et Configuration
Prérequis
Assurez-vous que votre système dispose des dépendances suivantes :
Python 3.9+ (Entièrement validé sur Python 3.13)
Nmap installé et disponible dans votre PATH
Installation en mode développement (Recommandé)
Pour déployer l'outil globalement tout en conservant la capacité de modifier le code source à la volée, utilisez pipx avec le flag --editable :
# Clonez le dépôt
git clone [https://github.com/votre-utilisateur/nmap-interactif.git](https://github.com/votre-utilisateur/nmap-interactif.git)
cd nmap-interactif
# Installez l'outil localement de manière éditable
pipx install -e .
❯ Utilisation
Une fois installé, l'outil est accessible de n'importe où dans votre terminal :
nmap-interactif
Déroulement typique d'une session :
1 - Saisie des cibles : Indiquez vos IP, domaines ou sous-réseaux.
2 - Choix du profil : Sélectionnez le type d'analyse requis via les flèches du clavier.
3 - Revue de sécurité : Analysez le tableau explicatif généré par Rich.
4 - Ajustement de dernière minute : Acceptez ou éditez manuellement la commande brute si nécessaire.
5 - Exécution : Observez le spinner et la barre de progression remonter les données réseau en temps réel.
❯ Validation & Tests
La robustesse de l'exécuteur réseau et du parseur de progression est surveillée par une suite de tests unitaires rigoureux isolant les appels système.
Pour exécuter la suite de tests avec pytest :
pytest -v /tests
❯ Contribution
Les contributions, rapports de bugs et suggestions d'améliorations (nouvelles intentions de scan, scripts NSE prédéfinis) sont les bienvenus.
Forkez le projet.
Créez votre branche de fonctionnalité (git checkout -b feat/super-feature).
Validez vos modifications avec la suite de tests (pytest).
Commitez vos changements en respectant les conventions Conventional Commits.
Ouvrez une Pull Request.
❯ Licence
Ce projet est sous licence MIT. Consultez le fichier LICENSE pour plus de détails.