Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
ZMAP(1) 			      zmap				 ZMAP(1)

NAME
     zmap - The Fast Internet Scanner

SYNOPSIS
     zmap [ -p <port(s)> ] [ -o <outfile> ] [ OPTIONS... ] [ ip/hostname/range ]

DESCRIPTION
     ZMap is a network tool for scanning the entire IPv4 address space (or large
     samples). ZMap is capable of scanning the entire Internet in around 45 min-
     utes on a gigabit network connection, reaching ~98% theoretical line speed.

OPTIONS
   BASIC OPTIONS
     ip/hostname/range
	    IP	addresses  or  DNS  hostnames to scan. Accepts IP ranges in CIDR
	    block notation. Defaults to 0.0.0/8

     -p, --target-ports=port(s)
	    List  of  TCP/UDP  ports  and/or  port   ranges   to   scan   (e.g.,
	    80,443,100-105). Use '*' to scan all ports, including port 0.

     -o, --output-file=name
	    When  using an output module that uses a file, write results to this
	    file. Use - for stdout.

     -b, --blocklist-file=path
	    File of subnets to exclude, in CIDR notation, one-per  line.  It  is
	    recommended  you  use this to exclude RFC 1918 addresses, multicast,
	    IANA reserved space, and other IANA  special-purpose  addresses.  An
	    example blocklist file blocklist.conf for this purpose.

     -w, --allowlist-file=path
	    File  of subnets to scan, in CIDR notation, one-per line. Specifying
	    a allowlist file is equivalent to specifying to ranges  directly  on
	    the  command line interface, but allows specifying a large number of
	    subnets. Note: if you are specifying a large number of individual IP
	    addresses  (more  than  10	million),   you   should   instead   use
	    --list-of-ips-file.

     -I, --list-of-ips-file=path
	    File  of individual IP addresses to scan, one-per line. This feature
	    allows you to scan a large number of  unrelated  addresses.  If  you
	    have  a  small  number  of IPs, it is faster to specify these on the
	    command line or by using --allowlist-file. This should only be  used
	    when  scanning  more  than	10  million addresses. When used in with
	    --allowlist-path, only hosts in the intersection of both  sets  will
	    be scanned. Hosts specified here, but included in the blocklist will
	    be excluded.

   SCAN OPTIONS
     -r, --rate=pps
	    Set the send rate in packets/sec. Note: when combined with --probes,
	    this  is  total  packets per second, not IPs per second. Setting the
	    rate to 0 will scan at full line rate. Default: 10000 pps.

     -B, --bandwidth=bps
	    Set the send rate in bits/second (supports	suffixes  G,  M,  and  K
	    (e.g. -B 10M for 10 mbps). This overrides the --rate flag.

     -n, --max-targets=n
	    Cap  the  number  of  targets  to probe. This can either be a number
	    (e.g. -n 1000) or a percentage (e.g. -n 0.1%) of the  scannable  ad-
	    dress  space  (after  excluding  blocklist).  A target is an IP/port
	    pair, if scanning multiple ports, and an IP otherwise. In  the  case
	    of	percents  and multiple ports, the percent is of the total number
	    of IP/port pair combinations.

     -N, --max-results=n
	    Exit after receiving this many results

     -t, --max-runtime=secs
	    Cap the length of time for sending packets

     -c, --cooldown-time=secs
	    How long to continue receiving  after  sending  has  completed  (de-
	    fault=8)

     -e, --seed=n
	    Seed  used	to  select  address permutation. Use this if you want to
	    scan addresses in the same order for multiple ZMap runs.

     -P, --probes=n
	    Number of probes to send to each IP/Port  pair  (default=1).  Probes
	    are  sent  sequentially for a given IP/Port, so if --probes=4, we'll
	    send 4 probe packets sequentially to that target rather than iterat-
	    ing across the target space 4 times. Since	ZMap  composes	Ethernet
	    frames  directly,  probes  can  be lost en-route to destination. In-
	    creasing the --probes increases the chance that an online host  will
	    receive  a	probe  in an unreliable network. This is contrasted with
	    --retries which just gives the number of attempts to send  a  single
	    probe on the source NIC.

     --retries=n
	    Number  of	times to try resending a packet if the sendto call fails
	    (default=10)

     --batch=n
	    Number of packets to batch before calling the appropriate syscall to
	    send. Used to take advantage of Linux's sendmmsg syscall to send the
	    entire batch at once. Only available on Linux, other OS's will  send
	    each packet individually. (default=64)

   SCAN SHARDING
     --shards=N
	    Split the scan up into N shards/partitions among different instances
	    of zmap (default=1). When sharding, --seed is required.

     --shard=n
	    Set  which	shard  to  scan (default=0). Shards are 0-indexed in the
	    range [0, N), where N is the total number of shards.  When	sharding
	    --seed is required.

   NETWORK OPTIONS
     -s, --source-port=port|range
	    Source port(s) to send packets from

     --validate-source-port=enable|disable
	    Used as an override to enable/disable source port validation. Source
	    port validation will check that a received probe response's src port
	    matches  the  dst  port of the probe sent to that IP/port pair. This
	    ensures that multiple ZMap scans to the same hosts but to  different
	    ports  will  not interfere with each other. This overrides each mod-
	    ules default behavior on whether or not  to  validate  source  ports
	    with probe responses.

     -S, --source-ip=ip|range
	    Source  address(es)  to send packets from. Either single IP or range
	    (e.g. 10.0.0.1-10.0.0.9)

     -G, --gateway-mac=addr
	    Gateway MAC address to  send  packets  to  (in  case  auto-detection
	    fails)

     --source-mac=addr
	    Source  MAC  address  to  send  packets from (in case auto-detection
	    fails)

     -i, --interface=name
	    Network interface to use

     -X, --iplayer
	    Send IP layer packets instead of ethernet packets (for  non-Ethernet
	    interface)

     --netmap-wait-ping=ip
	    (Netmap  only)  Wait  for  ip to respond to ICMP Echo request before
	    commencing scan. Useful if connected to a switch with  STP	enabled,
	    where  the	PHY reset that is needed for entering and leaving Netmap
	    mode will cause the switch to mute the port until the spanning  tree
	    protocol  has  determined  that  the link should be set into forward
	    state.

   PROBE OPTIONS
     ZMap allows users to specify and write their own probe modules. Probe  mod-
     ules  are	responsible for generating probe packets to send, and processing
     responses from hosts.

     --list-probe-modules
	    List available probe modules (e.g. tcp_synscan)

     -M, --probe-module=name
	    Select probe module (default=tcp_synscan)

     --probe-args=args
	    Arguments to pass to probe module

     --probe-ttl=hops
	    Set TTL value for probe IP packets

     --list-output-fields
	    List the fields the selected probe module can  send  to  the  output
	    module

   OUTPUT OPTIONS
     ZMap  allows  users  to  specify and write their own output modules for use
     with ZMap. Output modules are responsible for processing the fieldsets  re-
     turned  by  the  probe  module,  and outputting them to the user. Users can
     specify output fields, and write filters over the output fields.

     --list-output-modules
	    List available output modules (e.g. csv)

     -O, --output-module=name
	    Select output module (default=csv)

     --output-args=args
	    Arguments to pass to output module

     -f, --output-fields=fields
	    Comma-separated list of fields to output

     --output-filter
	    Specify an output filter over the fields defined by the  probe  mod-
	    ule. See the output filter section for more details.

     --no-header-row
	    Excludes any header rows (e.g., CSV header fields) from ZMap output.
	    This  is  useful  if  you're piping results into another application
	    that expects only data.

   RESPONSE DEDUPLICATION
     Hosts will oftentimes send multiple responses to a  probe	(either  because
     the scanner doesn't send back a RST packet or because the host has a misim-
     plemented	TCP stack. To address this, ZMap will attempt to deduplicate re-
     sponsive (ip,port) targets.

     --dedup-method
	    Specifies the method ZMap will use to deduplicate responses. Options
	    are: full, window, and none. Full deduplication uses a 32-bit bitmap
	    and  guarantees  that  no  duplicates  will  be  emitted.	However,
	    full-deduplication	requires  around  500MB  of  memory for a single
	    port. We do not support full deduplication for multiple ports.  Win-
	    dow  uses  a sliding window of the last (user-defined) number of re-
	    sponses as set by --dedup-window-size. None will prevent  any  dedu-
	    plication.

     --dedup-window-size=targets
	    Specifies  the  size  of the sliding window as the last n target re-
	    sponses to be used for deduplication. Only applicable if using  win-
	    dow deduplication.

   LOGGING AND METADATA OPTIONS
     -q, --quiet
	    Do not print status updates once per second

     -v, --verbosity=n
	    Level of log detail (0-5, default=3)

     -l, --log-file=filename
	    Output file for log messages. By default, stderr.

     -m, --metadata-file=filename
	    Output file for scan metadata (JSON)

     -L, --log-directory
	    Write log entries to a timestamped file in this directory

     -u, --status-updates-file
	    Write scan progress updates to CSV file"

     --disable-syslog
	    Disables logging messages to syslog

     --notes
	    Inject user-specified notes into scan metadata

     --user-metadata
	    Inject user-specified JSON metadata into scan metadata

   ADDITIONAL OPTIONS
     -T, --sender-threads=n
	    Threads  used to send packets. ZMap will attempt to detect the opti-
	    mal number of send threads based on the number of  processor  cores.
	    Defaults to min(4, number of processor cores on host - 1).

     -C, --config=filename
	    Read a configuration file, which can specify any other options.

     -d, --dryrun
	    Print  out	each  packet to stdout instead of sending it (useful for
	    debugging)

     --fast-dryrun
	    Don't actually send packets, print out a binary representation probe
	    dst IP and dst Port. Used for faster integration tests, not for gen-
	    eral use.

     --max-sendto-failures
	    Maximum NIC sendto failures before scan is aborted

     --min-hitrate
	    Minimum hitrate that scan can hit before scan is aborted

     --cores
	    Comma-separated list of cores to pin to

     --ignore-blocklist-errors
	    Ignore  invalid,  malformed,  or   unresolvable   entries	in   al-
	    lowlist/blocklist file. Replaces the pre-v3.x --ignore-invalid-hosts
	    option.

     -h, --help
	    Print help and exit

     -V, --version
	    Print version and exit

   OUTPUT FILTERS
     Results  generated by a probe module can be filtered before being passed to
     the output module. Filters are defined over the output fields  of	a  probe
     module. Filters are written in a simple filtering language, similar to SQL,
     and are passed to ZMap using the --output-filter option. Output filters are
     commonly  used  to  filter out duplicate results, or to only pass only suc-
     cessful responses to the output module.

     Filter expressions are of the form  <fieldname>  <operation>  <value>.  The
     type  of  <value>	must be either a string or unsigned integer literal, and
     match the type of <fieldname>. The valid operations for integer comparisons
     are = !=, ,, =,=. The operations for string  comparisons  are  =,	!=.  The
     --list-output-fields  flag  will  print what fields and types are available
     for the selected probe module, and then exit.

     Compound filter expressions may be constructed by combining filter  expres-
     sions  using  parenthesis	to  specify order of operations, the && (logical
     AND) and || (logical OR) operators.

     For example, a filter for only successful, non-duplicate responses would be
     written as: --output-filter="success = 1 && repeat = 0"

   UDP PROBE MODULE OPTIONS
     These arguments are all passed using the --probe-args=args option. Only one
     argument may be passed at a time.

     file:/path/to/file
	    Path to payload file to send to each host over UDP.

     template:/path/to/template
	    Path to template file. For each destination host, the template  file
	    is populated, set as the UDP payload, and sent.

     text:<text>
	    ASCII text to send to each destination host

     hex:<hex>
	    Hex-encoded binary to send to each destination host

     template-fields
	    Print information about the allowed template fields and exit.

   MID-SCAN CHANGES
     You  can  change the rate at which ZMap is scanning mid-scan by sending SI-
     GUSR1 (increase) and SIGUSR2 (decrease) signals to ZMap. These will  result
     in the scan rate increasing or decreasing by 5%.

ZMap				  November 2025 			 ZMAP(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=zmap&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help