witnessme

Outil de capture d'écran et d'énumération web. Prend des captures d'écran de services web à l'aide d'un navigateur headless et génère des rapports HTML : utile pour revoir rapidement un grand nombre d'interfaces web découvertes. Web screenshot and enumeration tool. Takes screenshots of web services using a headless browser and generates HTML reports — useful for quickly reviewing large numbers of discovered web interfaces.

↗ https://github.com/byt3bl33d3r/WitnessMe

Overview

WitnessMe takes screenshots of web services and generates browsable HTML reports. It uses Playwright for headless browsing and can process nmap XML output, IP ranges, or URL lists — making it easy to visually review hundreds of web interfaces after a port scan.

Installation

pip3 install witnessme
# Install Playwright browser
playwright install

Basic Usage

Screenshot a list of URLs

witnessme screenshot http://10.10.10.1 https://10.10.10.2

Screenshot from nmap XML

witnessme screenshot -n nmap_scan.xml

Screenshot from IP list

witnessme screenshot -p 80,443,8080,8443 192.168.1.0/24

Scanning from nmap XML

First run nmap with XML output

nmap -sV -p 80,443,8080,8443 192.168.1.0/24 -oX scan.xml

Then screenshot all web services

witnessme screenshot -n scan.xml

View the report

witnessme report ./witnessme_results/

IP Range Scanning

Scan an IP range for common web ports

witnessme screenshot -p 80,443,8080,8443,8000,3000 192.168.1.0/24

Custom port list

witnessme screenshot -p 80,443,8080,8443,8888,9090 10.10.10.0/24

With threads

witnessme screenshot -t 5 -p 80,443 192.168.1.0/24

Viewing Results

Generate and view HTML report

witnessme report ./witnessme_results/
# The report shows:
# - Screenshot thumbnails
# - URL and response code
# - Title
# - Detected technologies
# - Sorting/filtering by status code

Open in browser

firefox witnessme_results/report.html

Integration with Other Tools

# After subdomain enumeration
cat subdomains.txt | xargs -I{} echo "http://{}" > urls.txt
cat urls.txt | xargs witnessme screenshot

# After masscan
masscan 10.0.0.0/8 -p 80,443 -oX masscan.xml
witnessme screenshot -n masscan.xml

Tips

  • Most valuable after discovering large numbers of hosts — visual review is much faster than manual browsing
  • Look for:
    • Login pages (credential attacks)
    • Default pages (unchanged default configs)
    • Admin panels exposed to network
    • Interesting titles that reveal application types
  • Headless browsers may fail on heavy JavaScript SPAs — check results manually for important targets
  • Reports are sortable — sort by title or response code to cluster similar services
Help / Man page
witnessme [command] [options]

Commands:
  screenshot    Take screenshots
  report        View report in browser

screenshot options:
  -n FILE     Nmap XML file
  -p PORTS    Ports to probe
  -t N        Threads (default: 5)
  --timeout N Timeout per request

report options:
  DIR         Results directory to serve

Vue d’ensemble

WitnessMe prend des captures d’écran de services web et génère des rapports HTML navigables. Il utilise Playwright pour la navigation headless et peut traiter la sortie XML de nmap, des plages d’IP, ou des listes d’URL : ce qui facilite la revue visuelle de centaines d’interfaces web après un scan de ports.

Installation

pip3 install witnessme
# Installer le navigateur Playwright
playwright install

Utilisation de base

# Capturer une liste d'URL
witnessme screenshot http://10.10.10.1 https://10.10.10.2

# Capturer à partir d'un XML nmap
witnessme screenshot -n nmap_scan.xml

# Capturer à partir d'une liste d'IP
witnessme screenshot -p 80,443,8080,8443 192.168.1.0/24

Scan à partir du XML nmap

# D'abord lancer nmap avec sortie XML
nmap -sV -p 80,443,8080,8443 192.168.1.0/24 -oX scan.xml

# Puis capturer tous les services web
witnessme screenshot -n scan.xml

# Visualiser le rapport
witnessme report ./witnessme_results/

Scan de plage d’IP

# Scanner une plage d'IP pour les ports web courants
witnessme screenshot -p 80,443,8080,8443,8000,3000 192.168.1.0/24

# Liste de ports personnalisée
witnessme screenshot -p 80,443,8080,8443,8888,9090 10.10.10.0/24

# Avec des threads
witnessme screenshot -t 5 -p 80,443 192.168.1.0/24

Visualiser les résultats

# Générer et visualiser le rapport HTML
witnessme report ./witnessme_results/
# Le rapport affiche :
# - miniatures des captures d'écran
# - URL et code de réponse
# - titre
# - technologies détectées
# - tri/filtrage par code de statut

Ouvrir dans le navigateur

firefox witnessme_results/report.html

Intégration avec d’autres outils

# Après une énumération de sous-domaines
cat subdomains.txt | xargs -I{} echo "http://{}" > urls.txt
cat urls.txt | xargs witnessme screenshot

# Après masscan
masscan 10.0.0.0/8 -p 80,443 -oX masscan.xml
witnessme screenshot -n masscan.xml

Conseils

  • Particulièrement utile après la découverte d’un grand nombre d’hôtes : la revue visuelle est bien plus rapide qu’une navigation manuelle
  • À rechercher :
    • pages de connexion (attaques d’identifiants)
    • pages par défaut (configurations par défaut non modifiées)
    • panneaux d’administration exposés au réseau
    • titres intéressants révélant le type d’application
  • Les navigateurs headless peuvent échouer sur des SPA riches en JavaScript : vérifier les résultats manuellement pour les cibles importantes
  • Les rapports sont triables : trier par titre ou code de réponse pour regrouper les services similaires
Aide / Page de manuel
witnessme [command] [options]

Commands:
  screenshot    Take screenshots
  report        View report in browser

screenshot options:
  -n FILE     Nmap XML file
  -p PORTS    Ports to probe
  -t N        Threads (default: 5)
  --timeout N Timeout per request

report options:
  DIR         Results directory to serve