Skip to main content

Visualize portscan results

Project description

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

scanscope-2.0.0.tar.gz (676.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

scanscope-2.0.0-py3-none-any.whl (689.2 kB view details)

Uploaded Python 3

File details

Details for the file scanscope-2.0.0.tar.gz.

File metadata

  • Download URL: scanscope-2.0.0.tar.gz
  • Upload date:
  • Size: 676.1 kB
  • Tags: Source
  • Uploaded using 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}

File hashes

Hashes for scanscope-2.0.0.tar.gz
Algorithm Hash digest
SHA256 7bb212329e56600a0fc2981bbebb58f424cdf7823266a0a1e4f9dd7230d49bb9
MD5 e0fa4cc680908197de8164655ad7573a
BLAKE2b-256 507b65399bc8dc045cbf7c9c83d9ccac3f269b8562d2279603f5f5d831007358

See more details on using hashes here.

File details

Details for the file scanscope-2.0.0-py3-none-any.whl.

File metadata

  • Download URL: scanscope-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 689.2 kB
  • Tags: Python 3
  • Uploaded using 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}

File hashes

Hashes for scanscope-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 743e5c8f668b1e44f14071e0e3226869ec64bdb4dd49fec9d48bbddcae91dfb2
MD5 0dfd9ad720056055608256488005311f
BLAKE2b-256 0bfffdc7705a6ce507bfc7199b4f387532c330e64c4d98b30c7fda57c427d07c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page