Updated Jul 14, 2026

Discovery

Screenshot HTTP services from nmap XML

gowitness-nmap is the nmap-aware mode of SensePost's gowitness that reads an nmap XML scan, selects the http and https services the scan found, and screenshots each one with headless Chrome without a hand-built URL list.

installgo install github.com/sensepost/gowitness@latest

Go · GPL-3.0 license

Agent

overview

What gowitness-nmap does

gowitness-nmap takes nmap XML on -f, selects http and https services from the scan, and captures each interface with headless Chrome without a hand-built URL list.

Nmap-aware filters decide the shoot list: --open keeps open ports, --port narrows port numbers, and --service or --service-contains match detected names. Render still uses -t, --timeout, --fullpage, --user-agent, and --proxy.

Run it after a port-scan stage when open ports should become a visual gallery. Odd-port web apps are captured alongside 80 and 443, which helps spot login pages, default panels, and forgotten consoles.

source github.com/sensepost/gowitness

use cases

Where gowitness-nmap fits

Turn a port scan into screenshots

Feed gowitness-nmap an nmap XML file so every web service the scan found gets captured with headless Chrome in a single pass.

Screenshot only the web ports

Filter by open status, port number, or detected service name so the run captures http and https interfaces and skips everything else.

Find web apps on odd ports

Because input comes from nmap, web services on non-standard ports get screenshotted alongside the usual 80 and 443.

Visually triage scan output

Review the gallery to spot login pages, default panels, and exposed consoles among the services a port scan surfaced.

reference

gowitness-nmap inputs and flags

19 inputs
NameTypeFlagDescription
input-fileFILE-fnmap XML file to read discovered services from.
openBOOLEAN--openOnly select open ports.
portSTRING--portFilter services by port number.
serviceSTRING--serviceFilter by the service name nmap mapped.
service-containsSTRING--service-containsPartial service-name filter (contains match).
threadsSTRING-tThreads used to run (default 4).
fullpageBOOLEAN--fullpageTake full-page screenshots.
proxySTRING--proxyHTTP or SOCKS5 proxy to route requests through.

Showing key inputs. gowitness-nmap exposes 19 inputs in total.

Full flag reference (19 inputs)
NameTypeFlagDescription
input-fileFILE-fnmap XML file to read discovered services from.
openBOOLEAN--openOnly select open ports.
portSTRING--portFilter services by port number.
serviceSTRING--serviceMap service-name filter, matching the service nmap detected.
service-containsSTRING--service-containsPartial service-name filter (contains match).
threadsSTRING-tThreads used to run (default 4).
timeoutSTRING--timeoutPreflight check timeout in seconds (default 10).
delaySTRING--delayDelay in seconds between navigation and screenshot.
fullpageBOOLEAN--fullpageTake full-page screenshots.
pdfBOOLEAN--pdfSave screenshots as PDF.
proxySTRING--proxyHTTP or SOCKS5 proxy to use, in proto://address:port format.
headerSTRING--headerAdditional HTTP header to set on each request.
user-agentSTRING--user-agentUser-agent string to send (defaults to a desktop Chrome UA).
x-resolutionSTRING-XScreenshot resolution width (default 1440).
y-resolutionSTRING-YScreenshot resolution height (default 900).
no-httpBOOLEAN--no-httpDo not prefix http:// where the scheme is missing.
no-httpsBOOLEAN--no-httpsDo not prefix https:// where the scheme is missing.
debugBOOLEAN--debugEnable debug logging.
disable-loggingBOOLEAN--disable-loggingDisable all logging.

example

Run gowitness-nmap

gowitness-nmap · command
# screenshot open web services from an nmap XML scan
gowitness nmap -f scan.xml --open --service http --fullpage -t 8
sample output
INFO[0000] Reading Nmap XML file        file=scan.xml
INFO[0000] Found 5 web service(s) to screenshot
INFO[0001] screenshotting               url=http://198.51.100.10:80
INFO[0002] screenshotting               url=https://198.51.100.10:443
INFO[0003] screenshotting               url=http://198.51.100.23:8080
INFO[0004] screenshotting               url=https://203.0.113.45:8443
INFO[0006] screenshotting               url=http://example.com:80
INFO[0007] Complete                     screenshots=5 folder=./screenshots

guidance

Choosing gowitness-nmap

Use gowitness-nmap to screenshot web services straight from nmap XML, with port and service filters. Run after a port scan. For a plain URL list use gowitness; for SQLite output use gowitness-db.

gowitness

Screenshots a plain URL list. gowitness-nmap reads nmap XML and filters by port and service.

gowitness-db

Screenshots a URL list into SQLite. Same engine, different input and output shape.

aquatone

Can consume nmap XML and build an HTML screenshot report for visual triage.

faq

gowitness-nmap questions

An nmap XML file on -f. It parses discovered services, keeps web-facing ones, and screenshots each with headless Chrome into a capture folder.

Combine --open, --port, and --service or --service-contains so the run keeps http/https interfaces and skips the rest.

Yes. Pass --proxy in proto://address:port form for HTTP or SOCKS5. You can also set --header and --user-agent per request.

Use the gowitness node. This variant's -f expects nmap XML, not a URL list. For SQLite results, use gowitness-db.

The node writes a FOLDER of PNG captures for downstream steps. Add --pdf for PDF copies and --fullpage for the full scrollable page.

A port scanner that emits nmap XML: nmap directly, or masscan converted to nmap XML. Then this node turns live web services into screenshots.

Run gowitness-nmap yourself

An nmap XML file feeds gowitness-nmap, which screenshots the discovered web services and writes the captures as a queryable output.

Facts on this page come from the live Trickest tool library.