
Audit de sécurité du réseau local avec EOL, CVE, identité des appareils et rapports HTML
Audit de sécurité réseau pour les humains — propulsé par nmap, conçu pour tout le monde.
Site web : sunsetscan.com
SunsetScan est un outil d'audit de sécurité réseau local pour les propriétaires de réseaux domestiques et le personnel informatique qui veulent la profondeur de nmap sans apprendre la syntaxe de nmap. Pointez-le sur votre réseau et il trouve chaque appareil actif, identifie les logiciels en cours d'exécution, vérifie les bases de données de vulnérabilités connues et les registres de fin de vie, sonde les interfaces web pour détecter les faiblesses courantes, effectue en option un audit des identifiants par défaut d'usine sans risque de verrouillage, et produit un rapport HTML propre avec des explications en langage clair et des étapes numérotées pour corriger chaque constatation. Il est entièrement en lecture seule et non destructif — rien sur votre réseau n'est jamais modifié.
Pourquoi Linux ? SunsetScan repose sur des sockets bruts (scan ARP, capture passive de paquets), des API spécifiques à Linux (
/proc,ip route) et des vérifications de privilèges (os.geteuid()) qui ne sont pas disponibles sur Windows natif. WSL2 fournit un noyau Linux complet et est le moyen recommandé pour les utilisateurs Windows.
SunsetScan est fourni avec un installateur qui gère les outils système (nmap, masscan, git, python3-venv), crée un environnement virtuel Python local au projet et installe toutes les dépendances Python à l'intérieur. Vous ne serez jamais invité à pip install quoi que ce soit en tant que root — c'est important sur les systèmes Debian/Pi OS modernes, voir Pourquoi un venv ? ci-dessous.
Debian, Ubuntu, Raspberry Pi OS (Bookworm et plus récent), Linux Mint, Pop!_OS.
Fedora, RHEL, CentOS, Rocky, Alma, Arch, Manjaro, openSUSE, macOS.
Recommandé pour Debian, Ubuntu, Raspberry Pi OS, Linux Mint et Pop!_OS :```bash curl -LO https://github.com/NoCoderRandom/sunsetscan/releases/download/v2.1.0/sunsetscan_2.1.0-1_all.deb curl -LO https://github.com/NoCoderRandom/sunsetscan/releases/download/v2.1.0/sunsetscan_2.1.0-1_all.deb.sha256 sha256sum -c sunsetscan_2.1.0-1_all.deb.sha256 sudo apt install ./sunsetscan_2.1.0-1_all.deb sunsetscan --version
#### 2. Amorçage en une ligne
Clone le dépôt dans `~/sunsetscan` et lance l'installateur:```bash
curl -fsSL https://raw.githubusercontent.com/NoCoderRandom/sunsetscan/main/bootstrap.sh | bash
Vous voulez l'installer ailleurs ? Définissez INSTALL_DIR :```bash
INSTALL_DIR=/opt/sunsetscan curl -fsSL https://raw.githubusercontent.com/NoCoderRandom/sunsetscan/main/bootstrap.sh | bash
> **Une note sur `curl | bash`**: c'est pratique, mais cela signifie exécuter un script que vous n'avez pas lu. Si vous préférez l'inspecter d'abord, utilisez l'option 3 ou 4.
#### 3. Cloner et installer```bash
git clone https://github.com/NoCoderRandom/sunsetscan.git
cd sunsetscan
./install.sh
sudo apt install -y nmap masscan git python3 python3-venv python3-pip libpcap-dev build-essential avahi-utils git clone https://github.com/NoCoderRandom/sunsetscan.git && cd sunsetscan python3 -m venv venv && ./venv/bin/pip install -r requirements.txt ./sunsetscan --version
(Remplacez le gestionnaire de paquets de votre distribution par `apt` — `dnf`, `pacman`, `zypper` ou `brew`. Le paquet avahi est `avahi-tools` sur Fedora/RHEL, `avahi` sur Arch, `avahi-utils` sur openSUSE, et n'est pas nécessaire sur macOS.)
### Après l'installation — première exécution```bash
./sunsetscan --setup # download EOL/CVE/credential databases (once)
sudo ./sunsetscan --instant # ARP-only inventory of your local subnet
sudo ./sunsetscan --full-assessment --target 192.168.1.0/24
Le lanceur ./sunsetscan active automatiquement le venv — vous n'avez jamais besoin d'exécuter source venv/bin/activate. Utilisez sudo pour les scans qui nécessitent des sockets bruts, mais exécutez --setup, --download, et --update-cache en tant qu'utilisateur normal afin que les fichiers de cache restent accessibles en écriture depuis la TUI.
Relancer ./install.sh est sûr et idempotent — il détecte les composants existants et les réutilise.
Les distributions modernes basées sur Debian (Debian Bookworm, Raspberry Pi OS Bookworm, Ubuntu 23.04+) sont livrées avec l'application de la PEP 668. Cela entraîne l'échec de pip install lorsqu'il est exécuté en tant que root avec le Python du système :```
error: externally-managed-environment
× This environment is externally managed
Deux des dépendances de SunsetScan (`pysnmp` v6 en particulier) nécessitent des versions plus récentes que celles fournies par les dépôts apt, donc une installation pure-apt n'est pas possible. La solution de l'installateur est la solution standard : installer les outils système (nmap, masscan, libpcap, avahi-utils) via apt, et placer les dépendances Python de SunsetScan dans un répertoire `./venv` local au projet. Rien au niveau système n'est modifié, donc PEP 668 ne s'applique pas, et désinstaller SunsetScan revient simplement à `rm -rf ~/sunsetscan`.
### Optionnel : garder SunsetScan en arrière-plan
Une évaluation complète d'un sous-réseau /24 sur un Raspberry Pi peut prendre 10 à 30 minutes. Utilisez `tmux` ou `screen` pour que l'analyse survive à une déconnexion SSH :```bash
sudo apt install -y tmux
tmux new -s sunsetscan
sudo ./sunsetscan --full-assessment --target 192.168.1.0/24
# Ctrl+B then D to detach. "tmux attach -t sunsetscan" to come back later.
cd ~/sunsetscan git pull ./install.sh # idempotent — picks up any new dependencies
### Désinstallation```bash
rm -rf ~/sunsetscan
sudo rm -f /usr/local/bin/sunsetscan # only if you used --symlink
Windows n'est pas directement pris en charge (SunsetScan nécessite des sockets bruts, /proc et os.geteuid), mais WSL2 fonctionne bien :```powershell
wsl --install -d Ubuntu # in PowerShell, as Administrator
Redémarrez, ouvrez **Ubuntu** depuis le menu Démarrer, puis suivez l'installation standard ci-dessus. WSL2 utilise un adaptateur réseau virtuel — transmettez votre sous-réseau réel avec `--target` si l'auto-détection choisit le mauvais.
---
## Démarrage rapide
| Exigence | Minimum | Notes |
|---|---|---|
| **Python** | 3.9+ | 3.12 recommandé |
| **nmap** | Toute version récente | Doit être dans le PATH système |
| **OS** | Linux (natif ou WSL2) | Voir [Support des plateformes](#platform-support) |
| **masscan** | Toute version | Optionnel — découverte de ports plus rapide |
| **avahi-utils** | Toute version | Optionnel — fournit `avahi-browse`, utilisé pour la découverte mDNS fiable des appareils Apple / Bonjour / Sleep-Proxy. Se replie sur le `zeroconf` Python si absent. |
| **git** | Toute version | Optionnel — utilisé pour `--setup` et `--update` |
| **Privilèges** | Utilisateur standard | Root/sudo requis pour les profils FULL, STEALTH, SMB, la détection ARP et la capture passive |
---```bash
# Interactive mode (recommended for first-time users)
sudo python3 sunsetscan.py -i
# Full security assessment with HTML report
sudo python3 sunsetscan.py --full-assessment --target 192.168.1.0/24
# Quick scan of your network
python3 sunsetscan.py --target 192.168.1.0/24
# IoT device scan (cameras, routers, smart devices)
python3 sunsetscan.py --target 192.168.1.0/24 --profile IOT
# Quick device inventory (no security checks)
python3 sunsetscan.py --identify --target 192.168.1.0/24
# Download all data modules for extended detection
python3 sunsetscan.py --download all
SunsetScan exécute 12 modules de vérification de sécurité lors d'une évaluation complète :
hardware-eol-home, tandis que des profils bureau, entreprise, industriel,
fournisseur de services et complet sont disponibles pour des analyses plus larges.--setup, --update-cache et --download. Les analyses fonctionnent sans connexion Internet tant que les caches sont remplis.--identify ignore les contrôles de sécuritéSunsetScan inclut des modules de données téléchargeables et des profils EOL matériels qui étendent les capacités de détection :
La base de données du cycle de vie matériel est désormais divisée en profils intelligents téléchargeables :
hardware-eol-home est l'installation par défaut, tandis que hardware-eol-full fournit
une couverture complète. Le build canonique complet contient actuellement 64 245 enregistrements
répartis sur 122 fournisseurs, mais les utilisateurs domestiques n'ont besoin que du plus petit profil domestique.
### Détection des appareils non autorisés
- Enregistrez un instantané de votre réseau comme référence de confiance
- Les analyses futures signalent automatiquement les adresses MAC inconnues absentes de la référence
- Détecte les appareils connus sur des adresses IP inattendues
### Score de risque
Chaque appareil reçoit un score de risque (0-100) basé sur la gravité et le nombre de constatations :
| Score | Niveau |
|---|---|
| 0-10 | Risque minimal |
| 11-30 | Risque faible |
| 31-60 | Risque moyen |
| 61-80 | Risque élevé |
| 81-100 | Risque critique |
### Rapports
- **Rapport HTML professionnel** — tableau de bord de gravité, sections par hôte, cartes de constatations avec explications en langage clair, recommandations priorisées
- **Export JSON** — sortie structurée lisible par machine
- Les rapports sont entièrement autonomes — un seul fichier HTML, aucune dépendance externe
- Les profils restreints comme SMB gardent les hôtes découverts visibles dans le rapport
même lorsqu'aucun port de service correspondant n'est ouvert
- Les vérifications au niveau du réseau comme DNS, UPnP et les notes de durée d'analyse sont séparées
des constatations par appareil ; les scores de risque des appareils ne sont affichés que pour les hôtes réels
- Toutes les constatations sont codées par couleur : Critique, Élevée, Moyenne, Faible, Info
### Historique des analyses et comparaisons
- Chaque analyse est automatiquement enregistrée comme instantané JSON compressé au format gzip
- Consultez les analyses passées avec `--history`
- Comparez deux analyses avec `--diff` pour voir les nouveaux hôtes, les ports fermés, les constatations nouvelles/résolues
- Comparez avec une analyse datant de N jours avec `--diff --since N`
- L'historique est conservé 90 jours par défaut
### Interface utilisateur
- **Mode interactif** guidé (`-i`) — menus à plusieurs niveaux pour l'analyse, l'export, les modules
- **Menu à l'ancienne** — se lance lorsque l'outil est exécuté sans arguments
- Mode CLI direct — scriptable et adapté à l'automatisation
- Sortie terminal riche en couleurs avec barres de progression, indicateurs d'attente et panneaux de synthèse
---
## Toutes les options CLI
| Option | Description | Root |
|---|---|---|
| `--target TARGET` | IP, plage CIDR, nom d'hôte ou plage à analyser | Non |
| `--profile PROFILE` | Profil d'analyse : QUICK, FULL, STEALTH, PING, IOT, SMB (défaut : QUICK) | Variable |
| `-i`, `--interactive` | Lancer le mode interactif guidé | Non |
| `--full-assessment` | Évaluation complète + export HTML automatique ; l'audit des identifiants reste facultatif | Non |
| `--identify` | Identification des appareils uniquement (ignorer les vérifications de sécurité) | Non |
| `--nse` | Activer le Nmap Scripting Engine pour une détection améliorée | Non |
| `--check-defaults` | Activer (opt-in) l'audit des identifiants par défaut sans risque de verrouillage (appareils possédés uniquement) | Non |
| `--save-baseline` | Enregistrer l'analyse comme référence d'appareils de confiance pour la détection d'appareils non autorisés | Non |
| `--setup` | Assistant de configuration initiale (dépendances + téléchargement du cache) | Non |
| `--update-cache` | Actualiser manuellement les caches de données CVE et EOL | Non |
| `--cache-status` | Afficher l'âge du cache et le nombre d'entrées, puis quitter | Non |
| `--modules` | Afficher l'état de tous les modules de données téléchargeables | Non |
| `--download MODULE` | Télécharger un module de données (ou "all") | Non |
| `--db SIZE` | Taille de la base de données EOL pour `--setup` : mini, normal, large (défaut : normal) | Non |
| `--history` | Afficher le tableau de l'historique des analyses et quitter | Non |
| `--diff` | Comparer les deux dernières analyses enregistrées et quitter | Non |
| `--since DAYS` | Avec `--diff` : comparer avec une analyse vieille d'au moins N jours | Non |
| `--check-version` | Vérifier sur GitHub si une nouvelle version de SunsetScan est disponible | Non |
| `--update` | Récupérer le dernier code depuis GitHub et réinstaller les dépendances | Non |
| `--verbose` | Activer la journalisation de débogage | Non |
| `--no-color` | Désactiver la sortie en couleurs (utile pour les fichiers journaux) | Non |
| `--quiet` | Masquer les barres de progression (les constatations restent affichées) | Non |
| `--safe-mode` | Forcer une analyse plus douce : nmap borné, utilisation moindre de masscan, moins de travailleurs, sondes lourdes ignorées | Non |
| `--no-safe-mode` | Désactiver le mode sécurisé automatique | Non |
| `--version` | Afficher le numéro de version et quitter | Non |
---
## Profils d'analyse
| Profil | Options nmap | Vitesse | Root | Idéal pour |
|---|---|---|---|---|
| **PING** | `-sn` | ~30s | Non | Trouver rapidement les appareils actifs |
| **QUICK** | `-T4 -F -sV --version-intensity 2` | 1-3 min | Non | Premier aperçu d'un réseau (avec détection de version légère) |
| **FULL** | `-T4 -A -sV -O --osscan-guess` | 5-15 min | Oui | Analyse approfondie d'hôtes spécifiques |
| **STEALTH** | `-sS -T2 -sV` | 10-30 min | Oui | Analyse à faible bruit |
| **IOT** | `-T4 -sV -p 23,80,443,8080,8443,554,1900,5000,5001,7547,49152 --open` | 1-3 min | Non | Caméras, routeurs, objets connectés |
| **SMB** | `-T4 -sV -p 135,139,445,137,138 --script smb-security-mode,smb2-security-mode,smb-vuln-ms17-010 --open` | 1-3 min | Oui | Partages Windows, vérification EternalBlue |
> **Astuce :** FULL et STEALTH reviennent automatiquement à des options non root lorsqu'ils sont exécutés sans sudo. La détection du système d'exploitation sera indisponible, mais l'analyse des ports et la détection des services fonctionnent toujours.
### Sécurité de l'audit des mots de passe par défaut
Le test des mots de passe par défaut n'est jamais activé automatiquement. En mode CLI, ajoutez
`--check-defaults` ; en mode interactif `-i`, choisissez l'audit des mots de passe par défaut lorsqu'il est
proposé. SunsetScan applique alors une politique prudente :
- aucune tentative générique de type « username/password spraying » par défaut
- ne teste que les identifiants correspondant au fournisseur et au modèle/famille détectés
- ignore les appareils avec des défauts uniques de type étiquette/PIN, comme de nombreuses imprimantes HP
- limite les tentatives à 2 par hôte et 1 par service par défaut
- attend 2 secondes entre les tentatives avec identifiants
- s'arrête immédiatement si un appareil renvoie des signaux de verrouillage ou de limitation de débit
La base de données intégrée est volontairement petite et adossée à des sources. Les
modules d'identifiants volumineux téléchargés sont conservés comme données de référence, mais l'audit sécurisé
ne les utilise pas, sauf si `Settings.auth_allow_module_credentials` est explicitement
activé par un développeur.
### Mode sécurisé et exécutions de validation
Le mode sécurisé est automatiquement recommandé sur les hôtes à faible puissance, les hôtes qui ressemblent à
des appareils Pi-hole/passerelle, et sur les sorties Wi-Fi. Il peut aussi être forcé avec :```bash
python3 sunsetscan.py --full-assessment --target 192.168.1.0/24 --safe-mode
En mode sûr, SunsetScan:
-iPour les tests de régression assistés par root sur tous les modes, utilisez le collecteur de validation:```bash sudo bash scripts/sudo_network_validation.sh
Par défaut, il teste `192.168.1.0/24` sur PING, QUICK, SMB, STEALTH et
FULL, copie les rapports HTML générés dans le répertoire
de validation, et écrit une archive compressée sous `reports/`. Les rapports, journaux,
pcaps et archives sont ignorés par git et ne doivent pas être commités.
Remplacements utiles :```bash
sudo SUNSETSCAN_TARGETS="192.168.1.0/24" bash scripts/sudo_network_validation.sh
sudo SUNSETSCAN_PROFILES="PING QUICK FULL" bash scripts/sudo_network_validation.sh
sudo SUNSETSCAN_COMMAND_TIMEOUT=1200 bash scripts/sudo_network_validation.sh
SunsetScan n'appelle jamais d'API externes lors d'une analyse. Toutes les données sont lues à partir des fichiers de cache locaux dans data/cache/.
Les scans fonctionnent normalement avec un cache obsolète ou manquant — vous pourriez simplement avoir des données CVE obsolètes.
---
## Détection d'appareils non autorisés```bash
# Step 1: Save baseline when all known devices are present
sudo python3 sunsetscan.py --target 192.168.1.0/24 --save-baseline
# Step 2: Future scans automatically compare against baseline
sudo python3 sunsetscan.py --target 192.168.1.0/24
| Constatation | Gravité | Signification |
|---|---|---|
| Appareil inconnu détecté | Moyenne | MAC absent de la référence — appareil nouveau ou non autorisé |
| Adresse IP d'appareil modifiée | Faible |
Remarque : La référence nécessite root/sudo pour la détection des adresses MAC via nmap.
Chaque --full-assessment produit un rapport HTML autonome avec :
Les rapports s'ouvrent dans n'importe quel navigateur sans nécessiter de connexion Internet.
SunsetScan identifie automatiquement les appareils réseau en combinant les preuves provenant de 14 sources différentes. Chaque source apporte un constructeur, un modèle, une version ou un type d'appareil avec un score de confiance. L'algorithme de fusion additionne les sources concordantes (avec des bonus pour l'accord multi-source) et pénalise les preuves contradictoires.
Pour voir ce qu'il y a sur votre réseau sans exécuter de contrôles de sécurité :```bash python3 sunsetscan.py --identify --target 192.168.1.0/24
Cela exécute un scan de ports avec capture de bannière et affiche un tableau
d'identification des appareils. Aucune analyse de sécurité, aucun rapport — juste un
inventaire rapide.
### Sources de preuves
| Source | Ce qu'il lit | Confiance |
|--------|--------------|------------|
| MAC OUI | Préfixe fournisseur IEEE de l'adresse MAC | 0.40-0.45 |
| nmap OS | Estimation d'empreinte OS | varies |
| HTTP fingerprint | Type d'appareil, modèle, firmware depuis l'interface web | 0.50+ |
| HTTP headers | En-têtes de réponse Server, X-Powered-By | 0.20-0.50 |
| TLS certificate | Champs CN, émetteur, organisation | 0.35 |
| SSH banner | Chaîne d'identification du démon SSH | 0.10-0.70 |
| UPnP | Fabricant, modèle, type d'appareil SSDP | 0.75 |
| SNMP sysDescr | Description système depuis la MIB SNMP | 0.85 |
| Wappalyzer | Chaînes CPE et catégories de technologies | 0.30-0.45 |
| mDNS/Zeroconf | Annonces de types de services | 0.55 |
| JA3S | Base de données d'empreintes de poignée de main TLS | 0.50 |
| FTP banner | Identification du logiciel serveur FTP | 0.25-0.35 |
| Port heuristics | Modèles de combinaisons de ports ouverts | 0.10-0.70 |
| nmap services | Champs produit et version du service | 0.45 |
Les résultats d'identification apparaissent dans :
- Tableau d'inventaire des appareils en terminal (pendant l'analyse et via `--identify`)
- Cartes de topologie du rapport HTML et section d'inventaire des appareils
- Section `device_identities` de l'export JSON
- Option de menu [8] Device Inventory en mode interactif
---
## Niveaux de gravité
| Niveau | Couleur | Plage CVSS | Signification | Quand agir |
|---|---|---|---|---|
| **CRITIQUE** | Rouge | >= 9.0 | Identifiants par défaut, CVE exploitable, SSL 2.0 | Aujourd'hui |
| **ÉLEVÉ** | Orange | 7.0-8.9 | Telnet/FTP ouvert, certificat expiré, TLS 1.0, logiciel EOL | Cette semaine |
| **MOYEN** | Jaune | 4.0-6.9 | Certificat auto-signé, exposition UPnP, appareil non autorisé, HSTS manquant | Planifier un correctif |
| **FAIBLE** | Bleu | < 4.0 | Fin de vie (EOL) proche, X-Frame-Options manquant, adresse IP d'appareil modifiée | Suivre et planifier |
| **INFO** | Gris | - | Appareil identifié, détails du certificat, vérification DNS réussie | Aucune action |
---
## Structure du projet```
sunsetscan/
├── sunsetscan.py # Entry point — CLI, scan pipeline, setup wizard
├── requirements.txt # Python dependencies
├── install.sh # Automated installer for Linux/macOS
├── install.bat # Automated installer for Windows (basic)
├── README.md # This file
│
├── config/
│ └── settings.py # All constants, timeouts, scan profiles, menu options
│
├── core/
│ ├── scanner.py # nmap wrapper (ScanResult, HostInfo, PortInfo)
│ ├── port_scanner.py # Masscan pipeline + PortScanOrchestrator
│ ├── banner_grabber.py # Concurrent raw socket banner grabbing
│ ├── http_fingerprinter.py # HTTP device/firmware fingerprinting
│ ├── nse_scanner.py # Nmap Scripting Engine integration
│ ├── auth_tester.py # Default credential testing (HTTP, device-specific)
│ ├── input_parser.py # Flexible target format parsing
│ ├── network_utils.py # Subnet detection, IP helpers, WSL detection
│ ├── findings.py # Finding dataclass, Severity enum, FindingRegistry
│ ├── risk_scorer.py # Per-device risk scoring (0-100)
│ ├── cache_manager.py # Unified CVE + EOL cache (data/cache/)
│ ├── cve_checker.py # CVE lookup + CVECacheBuilder (OSV.dev)
│ ├── ssl_checker.py # TLS certificate, cipher suite, JA3S fingerprinting
│ ├── ssh_checker.py # SSH version, algorithms, KEXINIT analysis
│ ├── smb_checker.py # SMBv1, EternalBlue, shares, NTLM disclosure
│ ├── ftp_checker.py # Anonymous FTP, STARTTLS
│ ├── snmp_checker.py # SNMP community strings, sysDescr (pysnmp v4+v7)
│ ├── web_checker.py # HTTP headers, admin panels, Wappalyzer
│ ├── dns_checker.py # DNS hijack and rebinding detection
│ ├── upnp_checker.py # SSDP discovery, UPnP risk assessment
│ ├── mdns_checker.py # mDNS/Zeroconf device discovery
│ ├── arp_checker.py # ARP spoofing detection
│ ├── device_identifier.py # 14-source device identification engine
│ ├── identity_fusion.py # Multi-source identity fusion and scoring
│ ├── oui_lookup.py # IEEE OUI MAC vendor resolution
│ ├── device_map.py # Persistent MAC→identity mapping
│ ├── passive_sniffer.py # Background mDNS/SSDP/DHCP packet capture
│ ├── packet_parsers.py # Protocol-specific packet parsing
│ ├── instant_scan.py # ARP sweep + passive capture quick scan
│ ├── hybrid_scanner.py # Passive+active scan orchestrator
│ ├── baseline.py # Rogue device baseline comparison
│ ├── hardware_eol.py # Downloaded hardware lifecycle database lookup
│ ├── scan_history.py # Scan snapshot persistence and diffing
│ ├── module_manager.py # Downloadable data module system
│ └── update_manager.py # Version check and self-update
│
├── eol/
│ ├── checker.py # EOL API queries and version comparison
│ ├── cache.py # Per-product JSON cache
│ └── product_map.py # 150+ software name -> lifecycle cache slug mappings
│
├── ui/
│ ├── menu.py # Old-style numbered menu (no-args mode)
│ ├── display.py # Rich terminal tables, progress bars, banners
│ ├── export.py # JSON and HTML report generation
│ ├── interactive_controller.py # Interactive mode (-i) with multi-level menus
│ └── templates/
│ └── report.html.j2 # Jinja2 HTML report template
│
└── data/
├── default_credentials.json # Factory-default credentials database
├── device_map.json # Persistent MAC→identity map
├── baseline.json # Saved device baseline (--save-baseline)
├── cache/
│ ├── cve_cache.json # CVE data keyed by product:version
│ ├── <product>.json # EOL data keyed by product slug
│ ├── hardware_eol/ # Downloaded hardware lifecycle database
│ └── cache_meta.json # Cache update timestamps
├── history/ # Gzip scan snapshots (auto-saved)
└── modules/ # Downloaded data modules
nmap introuvable```bash
sudo apt install nmap
sudo dnf install nmap
sudo pacman -S nmap
brew install nmap
**Permission refusée / détection d'OS ne fonctionne pas**
Les profils FULL, STEALTH et SMB nécessitent des privilèges élevés. Sans root, ces profils reviennent automatiquement aux flags non-root (détection d'OS et scan SYN désactivés, mais le scan de ports/versions fonctionne toujours).```bash
# For full capabilities:
sudo python3 sunsetscan.py --target 192.168.1.0/24 --profile FULL
WSL2 suggère un mauvais réseau (172.x.x.x)
Sur WSL2, SunsetScan détecte l'adaptateur virtuel et revient à 192.168.1.0/24. Si votre réseau domestique utilise un sous-réseau différent, spécifiez-le avec --target :```bash
python3 sunsetscan.py --target 192.168.0.0/24
**Avertissements de cache au début de l'analyse**```
WARNING: CVE data is 12 days old — run: python sunsetscan.py --update-cache
Les scans fonctionnent correctement avec des données obsolètes. Exécutez --update-cache pour actualiser.
Permission refusée lors du téléchargement des modules
Si les téléchargements de modules échouent avec Permission denied: .../data/cache/..., le
cache a probablement été créé par sudo. Corrigez la propriété une fois, puis exécutez la configuration
et les téléchargements de modules en tant qu'utilisateur normal :```bash
cd ~/sunsetscan
sudo chown -R "$USER:$USER" data/cache
./sunsetscan --download all
**Les vérifications SNMP ne fonctionnent pas**
SunsetScan prend en charge à la fois pysnmp v4 (synchrone) et v7 (asynchrone). Si vous voyez des erreurs d'importation, mettez à jour pysnmp :```bash
pip install --upgrade pysnmp
SunsetScan est un outil d'audit de sécurité destiné à être utilisé sur des réseaux et des appareils que vous possédez ou pour lesquels vous avez une autorisation écrite explicite de tester.
Exécuter des scans réseau contre des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas l'autorisation de tester peut être illégal, quelle que soit votre intention. Les auteurs déclinent toute responsabilité en cas d'utilisation abusive.
SunsetScan est entièrement non destructif et en lecture seule. Il n'exploite pas de vulnérabilités, n'envoie pas de charges utiles (payloads) et ne modifie aucune configuration sur aucun appareil scanné. Le test d'identifiants --check-defaults est facultatif, limité, différé, orienté modèle exact et s'arrête sur les signaux de verrouillage/limitation de débit ; ce n'est pas une fonction de force brute.
Le dépôt SunsetScan et le code de l'application sont sous licence MIT — Copyright 2024 SunsetScan Contributors.
Seuls les artefacts de la base de données de fin de vie (EOL) du matériel SunsetScan sous data/hardware_eol/ sont sous licence séparée : cette base de données est sous licence Creative Commons Attribution - Pas d'Utilisation Commerciale 4.0 International (CC BY-NC 4.0). Voir data/hardware_eol/LICENSE.md.
| Plateforme | Niveau de prise en charge | Notes |
|---|
| Linux (Debian, Ubuntu, Fedora, Arch, etc.) | Prise en charge complète | Meilleure expérience — toutes les fonctionnalités fonctionnent nativement |
| WSL2 (Windows Subsystem for Linux) | Prise en charge complète | Moyen recommandé pour exécuter sur les machines Windows |
| macOS | Partielle | L'analyse de base fonctionne ; certaines fonctionnalités (ARP, capture passive) peuvent nécessiter une configuration supplémentaire |
| Windows (CMD/PowerShell natif) | Non prise en charge | Sockets bruts manquants, os.geteuid(), /proc, ip route et termios — utilisez WSL2 à la place |
| Option | Effet |
|---|
| (aucune option) | Installation par défaut : paquets système + venv + dépendances Python + auto-test |
--force | Supprime et reconstruit le venv à partir de zéro (à utiliser après une mise à niveau de Python) |
--symlink | Installe également /usr/local/bin/sunsetscan afin que vous puissiez exécuter sunsetscan depuis n'importe où |
--no-system | Ignore l'étape apt/dnf/etc (à utiliser si vos outils système sont déjà installés) |
--help | Affiche toutes les options |
| Vérificateur | Ce qu'il trouve |
|---|
| SSL/TLS | Certificats expirés/auto-signés, chiffrements faibles, TLS 1.0/1.1, SSL 2.0/3.0, petites clés RSA |
| SSH | Échange de clés faible, chiffrements/MAC faibles, SSHv1, petites clés hôte, analyse brute de KEXINIT |
| SMB | SMBv1, EternalBlue (MS17-010), partages anonymes, signature SMB désactivée, divulgation NTLM |
| FTP | Connexion anonyme, identifiants en clair, STARTTLS manquant |
| SNMP | Chaînes de communauté par défaut (public/private), SNMPv1, extraction sysDescr |
| Web | En-têtes de sécurité manquants, formulaires de connexion en HTTP, listage de répertoires, panneaux d'administration exposés |
| DNS | Détection de détournement DNS (comparaison avec Cloudflare 1.1.1.1) |
| UPnP | Découverte SSDP, exposition du mappage de port WAN sur les routeurs |
| mDNS | Découverte d'appareils Zeroconf/Bonjour, détecte les hôtes qui échappent aux analyses de ports |
| ARP | Détection d'empoisonnement ARP, suivi des changements d'adresse MAC (nécessite root) |
| Identifiants par défaut | Audit optionnel des identifiants d'usine par défaut utilisant des correspondances exactes d'appareil/modèle, tentatives limitées et délais |
| Protocoles non sécurisés | Telnet, FTP, TFTP, rsh, rlogin, rexec signalés par gravité |
| Module | Source | Ce qu'il ajoute |
|---|
credentials-mini | danielmiessler/SecLists | Top 50 des identifiants par défaut (données de référence téléchargeables ; non utilisées par l'audit sûr sauf activation explicite dans les paramètres) |
credentials-full | ihebski/DefaultCreds-cheat-sheet | Plus de 2860 identifiants spécifiques aux fournisseurs (données de référence téléchargeables ; non utilisées par l'audit sûr sauf activation explicite dans les paramètres) |
wappalyzer-mini | enthec/webappanalyzer | Top 500 des technologies Web (par défaut) |
wappalyzer-full | enthec/webappanalyzer | Les 7515 technologies Web |
ja3-signatures | salesforce/ja3 | Base de données d'empreintes TLS |
snmp-community | danielmiessler/SecLists | Chaînes de communauté SNMP étendues |
camera-credentials | many-passwords/many-passwords | Identifiants par défaut pour caméras IP/DVR/NVR (données de référence téléchargeables ; non utilisées par l'audit sûr sauf activation explicite dans les paramètres) |
mac-oui | IEEE Standards Association | Base de données des fournisseurs de préfixes MAC (par défaut) |
hardware-eol-home | NoCoderRandom/sunsetscan | Profil de cycle de vie/EOL matériel domestique/SOHO (par défaut ; licence de base de données : CC BY-NC 4.0) |
hardware-eol-office | NoCoderRandom/sunsetscan | Profil de cycle de vie/EOL matériel domestique et petit bureau |
hardware-eol-enterprise | NoCoderRandom/sunsetscan | Profil de cycle de vie/EOL matériel domestique, bureau et entreprise/campus/datacenter |
hardware-eol-industrial | NoCoderRandom/sunsetscan | Profil de cycle de vie/EOL matériel domestique, bureau et industriel/OT |
hardware-eol-service-provider | NoCoderRandom/sunsetscan | Profil de cycle de vie/EOL matériel domestique, bureau, entreprise et fournisseur de services |
hardware-eol-full | NoCoderRandom/sunsetscan | Profil complet de cycle de vie/EOL matériel smart-pack |
hardware-eol | NoCoderRandom/sunsetscan | Module de compatibilité Legacy pour cycle de vie/EOL matériel complet fractionné |
| sunsetscan --modules # Show module status | ||
| sunsetscan --download all # Download all modules, using the full hardware EOL smart profile | ||
| sunsetscan --download ja3-signatures # Download one data module | ||
| sunsetscan --download hardware-eol-home # Download a smaller hardware EOL profile | ||
| sunsetscan --download hardware-eol-full # Download every hardware EOL smart pack |
| File | Contents | Refresh interval |
|---|
data/cache/cve_cache.json | Données CVE indexées par produit:version | Tous les 7 jours |
data/cache/*.json | Dates de fin de vie (EOL) pour 150+ produits, stockées par produit | Tous les 30 jours |
data/cache/hardware_eol/sunsetscan_hardware_eol_index.json et records/*.json | Base de données du cycle de vie/EOL du matériel | Tous les 30 jours |
data/cache/hardware_eol/manifest.json, indexes/*.json, et records/<pack>/*.json | Profils de cycle de vie/EOL du matériel smart-pack | Tous les 30 jours |
data/cache/cache_meta.json | Horodatages des dernières mises à jour | Automatique |
| sunsetscan --cache-status # See current cache state | ||
| sunsetscan --update-cache # Refresh stale caches |
| MAC connu sur une IP différente (généralement DHCP normal) |
| Appareil déjà vu hors ligne | Info | Appareil de référence ne répondant pas |