← retour aux outils back to tools

# 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