Updated Jul 14, 2026

Recon

Collect several protocol grabs per host in one pass

Multi-protocol zgrab2 grabs driven by one config file.

Agent

overview

What zgrab2-multiple does

zgrab2-multiple runs several zgrab2 protocol modules against the same hosts in one pass. You describe modules and options in --config-file once; each host is probed in sequence instead of launching separate HTTP, TLS, and other grabs.

Reach for it when a single-protocol node leaves gaps. --break-on-success stops later modules once one answers. --continue-on-error keeps the chain going after a failed module. --senders sets scan concurrency.

In a Trickest workflow the node reads a host list plus a config file and writes a file and a folder of JSON results. Prefer focused peers (zgrab2-http, zgrab2-tls, zgrab2-jarm) when only one protocol matters.

source github.com/zmap/zgrab2

use cases

Where zgrab2-multiple fits

Grab several protocols in one run

Define multiple zgrab2 modules in a config file so each host is probed for HTTP, TLS, and more in a single pass with one combined output.

Stop at the first protocol that answers

Enable break-on-success so later modules are skipped once one succeeds, which is handy when you only need to know what a host speaks first.

Survey mixed services together

Point one job at hosts running different services and collect a per-host record across every configured protocol instead of running separate scans.

Keep going past module errors

Use continue-on-error so a single failing protocol does not abort the chain, letting the remaining modules still produce results for each host.

reference

zgrab2-multiple inputs and flags

12 inputs
NameTypeFlagDescription
input-fileFILE·Input file of hosts to scan.
config-fileFILE--config-fileConfig file listing each protocol module and its options.
break-on-successBOOLEAN--break-on-successSkip later protocols once one succeeds (default false).
continue-on-errorBOOLEAN--continue-on-errorKeep running later protocols after one errors (default true).
sendersSTRING--sendersNumber of send goroutines, which sets scan concurrency (default 1000).
connections-per-hostSTRING--connections-per-hostTimes to connect to each host for more output (default 1).
read-limit-per-hostSTRING--read-limit-per-hostCap on kilobytes read per host (default 96).
debugBOOLEAN--debugInclude debug fields in each result.

Showing key inputs. zgrab2-multiple exposes 12 inputs in total.

Full flag reference (12 inputs)
NameTypeFlagDescription
debugBOOLEAN--debugInclude debug fields in the output.
flushBOOLEAN--flushFlush after each line of output.
inputSTRING·Input target to scan, passed inline.
sendersSTRING--sendersNumber of send goroutines to use (default 1000).
gomaxprocsSTRING--gomaxprocsSet GOMAXPROCS (default 0).
input-fileFILE·Input file of hosts to scan.
prometheusSTRING--prometheusAddress for the Prometheus server (e.g. localhost:8080). If empty, Prometheus is disabled.
config-fileFILE--config-fileConfig file listing each protocol module and its options.
break-on-successBOOLEAN--break-on-successIf a protocol succeeds, do not run following protocols (default false).
continue-on-errorBOOLEAN--continue-on-errorIf a protocol errors, do not run following protocols (default true).
read-limit-per-hostSTRING--read-limit-per-hostMaximum total kilobytes to read for a single host (default 96).
connections-per-hostSTRING--connections-per-hostNumber of times to connect to each host, which produces more output (default 1).

example

Run zgrab2-multiple

zgrab2-multiple · command
# grab HTTP and TLS on each host, keep going past module errorszgrab2 multiple --config-file multiple.ini --input-file targets.txt --senders 500 --continue-on-error --output-file results.json
sample output
{"domain":"web-01.example.com","ip":"198.51.100.10","data":{"http":{"status":"success","protocol":"http","result":{"response":{"status_code":200,"headers":{"server":["nginx/1.24.0"]}}}},"tls":{"status":"success","protocol":"tls","result":{"handshake_log":{"server_certificates":{"certificate":{"parsed":{"subject":{"common_name":["example.com"]}}}}}}}}}{"domain":"api.example.com","ip":"198.51.100.11","data":{"http":{"status":"success","protocol":"http","result":{"response":{"status_code":301,"headers":{"location":["https://api.example.com/"]}}}},"tls":{"status":"success","protocol":"tls","result":{"handshake_log":{"server_hello":{"version":{"name":"TLSv1.3"}}}}}}}{"domain":"mail.example.com","ip":"198.51.100.12","data":{"http":{"status":"connection-refused","protocol":"http","error":"dial tcp 198.51.100.12:80: connect: connection refused"},"tls":{"status":"success","protocol":"tls","result":{"handshake_log":{"server_hello":{"cipher_suite":{"name":"TLS_AES_128_GCM_SHA256"}}}}}}}{"domain":"vpn.example.com","ip":"203.0.113.24","data":{"http":{"status":"success","protocol":"http","result":{"response":{"status_code":403,"headers":{"server":["Apache/2.4.58"]}}}},"tls":{"status":"success","protocol":"tls","result":{"handshake_log":{"server_certificates":{"certificate":{"parsed":{"issuer":{"common_name":["R11"]}}}}}}}}}{"domain":"staging.example.com","ip":"203.0.113.25","data":{"http":{"status":"success","protocol":"http","result":{"response":{"status_code":200,"headers":{"server":["gunicorn"]}}}},"tls":{"status":"io-timeout","protocol":"tls","error":"read tcp 203.0.113.25:443: i/o timeout"}}}{"domain":"cache.example.com","ip":"203.0.113.26","data":{"http":{"status":"success","protocol":"http","result":{"response":{"status_code":200,"headers":{"server":["Varnish"]}}}},"tls":{"status":"success","protocol":"tls","result":{"handshake_log":{"server_hello":{"version":{"name":"TLSv1.2"}}}}}}}

guidance

Choosing zgrab2-multiple

Use zgrab2-multiple when one host list needs several protocol grabs in a single pass. For one protocol, use zgrab2-http, zgrab2-tls, or zgrab2-jarm.

zgrab2-http

HTTP only. Simpler when you need one protocol, not a configured set.

zgrab2-tls

TLS handshake only. Use when certificates and version negotiation are the sole goal.

fingerprintx

Identifies services behind open ports across many protocols. Lighter when you need names, not full grabs.

faq

zgrab2-multiple questions

Point --config-file at a config that lists each module and its options, then feed hosts via input-file. On Trickest, set those inputs on the node instead of assembling the CLI yourself.

Run zgrab2-multiple yourself

A host list and a config feed zgrab2-multiple, which runs every configured protocol per host and writes the combined results as a queryable output.

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