Information Gatheringwebinventoryscreenshotheadlessbrowserextensible

WitnessMe

WitnessMe is a Web Inventory tool inspired by Eyewitness, designed to take screenshots and gather information from web targets. It uses a headless browser backend and is extensible for custom functionality.

Description

WitnessMe serves as a modern alternative to Eyewitness for web inventory tasks in cybersecurity assessments. It automates the process of capturing screenshots and other web data from target hosts, making it valuable for reconnaissance and information gathering phases of penetration testing.

The tool is built to be extensible, allowing users to develop custom modules that leverage its headless browser capabilities. This flexibility supports tailored workflows for specific reconnaissance needs, such as visual verification of web services or automated reporting.

It includes a web API component (wmapi) for serving results and a database tool (wmdb), enhancing its utility in larger-scale operations where data needs to be queried or shared via a service.

How It Works

WitnessMe drives a headless browser (via pyppeteer) in the backend to interact with web targets, capturing screenshots or grabbing content. It supports concurrent operations across multiple browser tabs controlled by thread settings, with configurable timeouts per connection. Results are managed through SQLite (aiosqlite) and can be served via a FastAPI-based web server (wmapi) on a specified host and port.

Installation

bash
sudo apt install witnessme

Flags

-h, --helpshow this help message and exit
--threads THREADSNumber of concurrent browser tab(s) to open [WARNING: This can cause huge RAM consumption if set to high values] (default: 15)
--timeout TIMEOUTTimeout for each connection attempt in seconds (default: 15)
-d, --debugEnable debug output (default: False)
-v, --versionshow program's version number and exit

Examples

Displays the help message and usage information for the witnessme tool
witnessme -h
Runs the screenshot subcommand for capturing web screenshots using the headless browser
witnessme screenshot
Runs the grab subcommand for gathering web inventory data from targets
witnessme grab
Takes screenshots with 10 concurrent browser tabs
witnessme --threads 10 screenshot
Grabs web data with a 30-second timeout per connection
witnessme --timeout 30 grab
Takes screenshots with debug output enabled
witnessme -d screenshot
Starts the web API server on default host 127.0.0.1 and port 8000
wmapi
Starts the web API server bound to all interfaces on port 8080
wmapi 0.0.0.0 8080
Updated 2026-04-16kali.org ↗