Skip to main content

Scanscope

Visualize port scan results in a self-contained HTML file.

Screenshot

What is this bubble chart?

In short: We interpret a host as a point in a vector space with 2^17 dimensions over F_2. Each dimension corresponds to a TCP- or UDP-port and has either value 0 or 1, depending on its state. Then we apply dimensionality reduction techniques to project the data onto two dimensions.

Each circle in the plot corresponds to one group of hosts. The size of the circle is related to the size of the group. Hosts with the same port configuration are grouped together. Similar groups should be close by. The colors mean nothing - except for gray: no open ports. The coordinates are also not meaningful and can change with a new run.

Installation

If you require instructions on how to install a standard Python package, I recommend you use uv:

# Using uv (recommended):
uv tool install git+https://github.com/SySS-Research/Scanscope.git

# Alterantively, using pipx:
pipx install git+https://github.com/SySS-Research/Scanscope.git

Unfortunately, the requirements (in particular the machine learning dependencies including numpy and pandas) are quite heavy with almost 600MB, so be prepared.

Usage

Convert nmap output in XML to HTML:

scanscope nmap_output.xml -o scanscope.html

Hint: The more ports you scan, the better this should work.

I recommend scanning at least the top 100 ports, so: nmap -T4 -sS -F -oX nmap_output.xml -iL input.txt. Service scans or script scans do not help. Scanning the top 1000 ports or even all ports however, does.

For more infomation, read the output of scanscope -h.

Parameter Optimization

For advanced users who want to tune the parameters for optimal visualization quality, an optional optimization module is available. This uses Bayesian optimization to automatically find the best parameters for your specific dataset.

Install the optimization dependencies:

$ uv sync --group optimize

Run the optimization:

$ uv run examples/optimize_umap.py nmap_output.xml --trials 50

See examples/README.md for detailed usage instructions.

License and copyright

MIT licensed, developed by Adrian Vollmer, SySS GmbH.

Metadata

Release files for scanscope 2.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for scanscope 2.0.1
File Size Uploaded
scanscope-2.0.1.tar.gz 676.1 kB Details

Release files / scanscope-2.0.1.tar.gz

Download URL scanscope-2.0.1.tar.gz
Size 676.1 kB
Tags Source
SHA-256 checksum
How to use checksums
b6940ec3431227c4b62a7e6f0071cad6755d9e0bdc5b8e7030f29dce85abd8db
BLAKE2b-256 checksum
How to use checksums
80ec68abf807d036a63b620119c9042da04a6ab19e99251f986a4111eb06736d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":null,"id":"forky","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

2.0.1 This release

1 release file

2.0.0

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page