Skip to main content
Masscan Integration

Masscan Reporting,
Every Open Port Accounted For

Run Masscan through the Neuron CLI or import its XML, and every open port it finds lands on the engagement, ready for follow-up. Masscan output to report, no parsing.

Masscan + Neuron

Just Test. The Timeline Writes Itself.

Masscan sweeps every port on a /16 in the time a detailed scan spends on a handful of hosts. What it leaves behind is a long list of addresses and ports, and someone has to turn that list into an inventory before the real testing starts. Neuron does that the moment the sweep ends.

Put neuron in front of masscan and the CLI adds -oX, runs the sweep, and imports every host and open port. Service names from --banners merge in as they arrive, IPv6 targets import alongside IPv4, and the command lands on the timeline.

Already have the XML? neuron import recognises Masscan output from its content and keeps it apart from Nmap, or you can upload or paste it in the browser.

neuron: Masscan
$ neuron export subnets ranges.txt✓ 6 in-scope subnets written $ neuron --ssh jumpbox masscan -iL ranges.txt \    -p1-65535 --rate 20000  Discovered open port 3389/tcp on 10.20.14.7✓ 1,903 hosts, 4,712 ports imported
Events Live
  • 09:58
    Command nmap -sV -iL live.txt
  • 09:51
    Import Masscan: 1,903 hosts, 4,712 ports
  • 09:12
    Command masscan -iL ranges.txt -p1-65535
  • 09:10
    Command neuron export subnets ranges.txt
The Problem

Why Masscan Reporting Takes So Long

Masscan output is wide and shallow. One record per open port, often thousands of them for a single range, and with --banners the same port appears twice: once when it answers, and again when the banner arrives.

Teams paper over that with -oL and a grep pipeline, then feed the result to the next tool by hand. The record of what was open on day one, before anyone touched anything, never makes it into the engagement.

And on a large range, nobody can say afterwards which sweep found which host, or whether it was run against the right ranges at all.

What Lands in Neuron

Everything Masscan Produces, On the Engagement

Put neuron in front of Masscan and the results import the moment it finishes.

Hosts by IP

Every responding address, IPv4 and IPv6 alike, created or matched by IP and placed into the engagement subnet it falls in.

Open Ports

Port, protocol, and state for every open port. Closed results and hosts with no ports are skipped by default.

Banner Service Names

Service names from --banners merge into the port record, even though Masscan writes them as a separate entry from the open port.

Service Checklists

Ports that arrive with a service name pick up the matching todos from your Service Checklists, so follow-up work is queued as the sweep imports.

Internal Exposure

Telnet, FTP, Redis, MongoDB, VNC, an unauthenticated Docker API, and the other services that have no business on an internal network are flagged in Scan Issues.

Tags and Assessments

Tag a sweep with --tag, or assign its hosts to an assessment from the browser import. Tags merge with any a host already had.

Setup

How to Log Masscan to Your Engagement

  1. 01

    Agree the rate before you sweep

    Set --rate to what the rules of engagement allow. The full command, rate included, is logged on the timeline, so when the client's network team asks how hard you pushed, the answer is on record.

  2. 02

    Write out the ranges in scope

    Export the engagement's subnets, one per line, ready for masscan -iL. Out-of-scope ranges stay out of the file.

    $ neuron export subnets ranges.txt
  3. 03

    Run masscan through neuron

    Arguments pass straight through. The CLI adds -oX unless you chose an output yourself, and it never overrides -oL, -oJ, or -oG: those runs are logged but not imported.

    $ neuron --ssh jumpbox masscan -iL ranges.txt -p1-65535 --rate 20000
  4. 04

    Follow up on the live hosts

    Export the hosts now on the engagement and hand them to Nmap for versions and scripts. The results merge into the same host records Masscan created.

    $ neuron export hosts live.txt
Self-Hosted

Your Infrastructure. Your Data.

Run Masscan from a jumpbox inside the client's network over SSH. Nothing is installed on the jumpbox. Neuron and the CLI stay in your network, and the results never pass through a third-party cloud.

Running Masscan through the Neuron CLI: the operator laptop sends results to Neuron Core over HTTPS and runs Masscan over SSH on a jumpbox inside the client network
To the Report

From Masscanto the Final Report

A Masscan sweep rarely produces findings on its own. What it produces is the evidence of exposure: every port that answered on the day of the test, attributed and timestamped, which is exactly what a segmentation test or an external attack surface section needs.

Exposure analysis turns that inventory into candidates. A cleartext or unauthenticated service answering where it should not lands in Scan Issues, where a tester confirms it and promotes it into a finding that lists every affected host.

When Nmap or NetExec follows up on the same hosts, their results merge into the records the sweep created, so the finding links the sweep, the service detail, and the proof without anyone matching IP addresses by hand.

Masscan Integration FAQ

The questions teams ask most about Masscan and Neuron.

How do I get Masscan output into a pentest report?

Run masscan through the Neuron CLI with neuron masscan, or import Masscan XML with neuron import or the engagement's Import page. Hosts and open ports land on the engagement, exposure analysis flags the risky ones, and a tester promotes the real issues into findings.

Which Masscan output format does Neuron import?

Masscan XML, written with -oX. Masscan uses the Nmap XML schema with scanner="masscan" on the root element, and Neuron reads that marker to send the file to the Masscan importer rather than the Nmap one. List, JSON, grepable, and binary output are not imported.

What happens if I run masscan with -oL through neuron?

The sweep runs exactly as you asked and is logged to the timeline, but nothing is imported. Neuron never overrides an output format you chose, so use -oX with masscan, or leave the output flags off and the CLI adds -oX for you.

Does the import keep Masscan banner results?

Yes. With --banners, Masscan writes the banner as a separate record from the open port. Neuron merges the two, so the port keeps its state and gains the service name.

Can I pipe Masscan output straight into Neuron?

Yes. Write XML to stdout with masscan -oX - and pipe it to neuron import -. The format is detected from the content, so no --source flag is needed.

Does Masscan data leave our network?

No. Neuron is self-hosted, and the CLI sends Masscan results from your laptop to your own server over HTTPS. The sweep, the XML, and the host inventory stay inside your infrastructure.

Ready to Transform Your Security Practice?

See how Neuron helps security teams replace fragmented tools with a single platform for offensive security, bringing structure, visibility, and consistency to every engagement.

One
Platform
End-to-end engagement management
Full Data Control
On-prem and isolated environments
Built by Practitioners
Designed for real security work