Updated Jul 15, 2026

Network

Find responsive hosts across large IP ranges

Stateless single-packet scanner for large port surveys.

Agent

overview

What zmap does

zmap scans large IP ranges by sending a single probe packet per target and matching replies without a connection table. That design covers huge address spaces for internet-wide surveys and for sweeping large internal ranges for one open port.

Choose what goes out with --probe-module (default tcp_synscan) and --target-ports. Cap pace with --rate or --bandwidth. Constrain scope with --allowlist-file and --blocklist-file. Cap breadth with --max-targets when you need a sample.

In a Trickest workflow the node reads a target range and writes a file and a folder of responsive hosts. Use it as the wide first stage, then hand hits to a banner grabber such as zgrab2. Prefer nmap or naabu when you need deeper per-host detail on a smaller set.

source github.com/zmap/zmap

use cases

Where zmap fits

Sweep a large range for an open port

Run a SYN scan across a CIDR block or a list of IPs to find every host answering on a target port, fast enough to cover internet-scale address space.

Pace a scan to stay in bounds

Cap the send rate or bandwidth so the scan respects your link capacity and your rules of engagement instead of saturating the network.

Constrain scope with allow and block lists

Use allowlist and blocklist files in CIDR notation to keep the scan inside the ranges you are authorized to test and out of ones you must avoid.

Feed a banner grabber

Pass the responsive hosts to zgrab2 so each open port gets a full application grab, turning a list of open ports into identified services.

reference

zmap inputs and flags

50 inputs
NameTypeFlagDescription
target-portsSTRING--target-portsComma-delimited list of ports and port ranges to scan.
probe-moduleSTRING--probe-moduleSelect probe module (default tcp_synscan).
rateSTRING--rateSet send rate in packets per second.
bandwidthSTRING--bandwidthSet send rate in bits per second (supports G, M, K suffixes).
allowlist-fileFILE--allowlist-fileFile of subnets to constrain the scan to, in CIDR notation.
blocklist-fileFILE--blocklist-fileFile of subnets to exclude, in CIDR notation.
output-fieldsSTRING--output-fieldsFields that should be output in the result set.
max-targetsSTRING--max-targetsCap number of targets to probe (a number or a percentage of the address space).

Showing key inputs. zmap exposes 50 inputs in total.

Full flag reference (50 inputs)
NameTypeFlagDescription
rateSTRING--rateSet send rate in packets/sec
seedSTRING--seedSeed used to select address permutation
batchSTRING--batchSet the number of packets to send per iteration
coresSTRING--coresComma-separated list of cores to pin to
notesSTRING--notesInject user-specified notes into scan metadata
quietBOOLEAN--quietDo not print status updates
shardSTRING--shardSet which shard this scan is (0 indexed) (default=`0')
configFILE--configRead a configuration file, which can specify any of these options
dryrunBOOLEAN--dryrunDon't actually send packets
probesSTRING--probesNumber of probes to send to each IP (default=`1')
shardsSTRING--shardsSet the total number of shards (default=`1`)
iplayerBOOLEAN--iplayerSends IP packets instead of Ethernet (for VPNs)
retriesSTRING--retriesMax number of times to try to send packet if send fails (default=`10')
bandwidthSTRING--bandwidthSet send rate in bits/second (supports suffixes G, M and K)
interfaceSTRING--interfaceSpecify network interface to use
probe-ttlSTRING--probe-ttlSet TTL value for probe IP packets (default=`255')
source-ipSTRING--source-ipSource address(es) for scan packets (ip or range)
verbositySTRING--verbosityLevel of log detail (0-5) (default `3')
probe-argsSTRING--probe-argsArguments to pass to probe module
source-macSTRING--source-macSource MAC address
fast-dryrunBOOLEAN--fast-dryrunDon't actually send packets, print out a binary representation probe dst IP and dst Port. Used for faster integration tests, not for general use.
gateway-macSTRING--gateway-macSpecify gateway MAC address
max-resultsSTRING--max-resultsCap number of results to return
max-runtimeSTRING--max-runtimeCap length of time for sending packets
max-targetsSTRING--max-targetsCap number of targets to probe (as a number or a percentage of the address space)
min-hitrateSTRING--min-hitrateMinimum hitrate that scan can hit before scan is aborted (default=`-1')
output-argsSTRING--output-argsArguments to pass to output module
source-portSTRING--source-portSource port(s) for scan packets (port or range)
dedup-methodSTRING--dedup-methodSpecifies how response deduplication should be performed. Options: default, none, full, window
probe-moduleSTRING--probe-moduleSelect probe module (default `tcp_synscan')
target-portsSTRING--target-portscomma-delimited list of ports and port ranges to scan (for TCP and UDP scans)
cooldown-timeSTRING--cooldown-timeHow long to continue receiving after sending last probe (default=`8')
no-header-rowBOOLEAN--no-header-rowPrecludes outputting any header rows in data (e.g., CSV headers)
output-fieldsSTRING--output-fieldsFields that should be output in result set
output-filterSTRING--output-filterSpecify a filter over the response fields to limit what responses get sent to the output module
output-moduleSTRING--output-moduleSelect output module
user-metadataFILE--user-metadataInject user-specified JSON metadata into scan (JSON)
allowlist-fileFILE--allowlist-fileFile of subnets to constrain scan to, in CIDR notation, e.g. 192.168.0.0/16
blocklist-fileFILE--blocklist-fileFile of subnets to exclude, in CIDR notation, e.g. 192.168.0.0/16
disable-syslogBOOLEAN--disable-syslogDisables logging messages to syslog
sender-threadsSTRING--sender-threadsThreads used to send packets (default `4')
list-of-ips-fileFILE--list-of-ips-fileList of individual addresses to scan in random order. Use --white-list file unless >1 million IPs
netmap-wait-pingSTRING--netmap-wait-pingWait for IP to respond to ping before commencing scan (netmap only)
dedup-window-sizeSTRING--dedup-window-sizeSpecifies window size for how many recent responses to keep in memory for deduplication (default=`1000000`)
list-output-fieldsBOOLEAN--list-output-fieldsList all fields that can be output by selected probe module
list-probe-modulesBOOLEAN--list-probe-modulesList available probe modules
list-output-modulesBOOLEAN--list-output-modulesList available output modules
max-sendto-failuresSTRING--max-sendto-failuresMaximum NIC sendto failures before scan is aborted (default=`-1')
validate-source-portSTRING--validate-source-portOverride to validate if probe responses have a valid src port corresponding to sent probe's dst port. "enable" or "disable"
ignore-blocklist-errorsBOOLEAN--ignore-blocklist-errors--ignore-blocklist-errors Ignore invalid entries in allowlist/blocklist

example

Run zmap

zmap · command
# SYN sweep allowlisted docs CIDR for web ports (scope.txt holds 198.51.100.0/24)zmap --target-ports=80,443 --rate=10000 --allowlist-file=scope.txt --output-fields=saddr,dport
sample output
saddr,dport198.51.100.10,80198.51.100.10,443198.51.100.23,443198.51.100.64,80203.0.113.15,443203.0.113.40,80203.0.113.40,443

guidance

Choosing zmap

Use zmap to sweep very large IP ranges for open ports. It finds responsive hosts; it does not fingerprint them, so follow with a banner grabber like zgrab2. For deeper per-host detail on a smaller set, use nmap or naabu.

masscan

Another stateless internet-scale port scanner. zmap pairs cleanly with zgrab2 for application grabs.

naabu

Fast SYN/CONNECT scanner for host lists. Better for targeted ranges than internet-wide sweeps.

nmap

Deep per-host port and service scanner. Slower, richer detail on a smaller scope.

faq

zmap questions

It is stateless. It sends one probe per target and matches responses without tracking per-connection state, which keeps send rates high across huge ranges.

Run zmap yourself

A CIDR range feeds zmap, which finds responsive hosts on a port and passes them to zgrab2-http so identified services land as a queryable output.

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