Updated Jul 15, 2026

Recon

Pull related domains from live TLS certificates

Scrape domain names from SSL certificates of arbitrary hosts.

Go · MIT license

Agent

overview

What cero does

cero sits after a host or IP list and before probing. It opens TLS to each target and emits the CN and SAN names the certificate returns.

Reach for it when a port scan or netblock left you addresses, and passive finders still miss related domains those certs advertise.

Feed a targets file; set -p for non-443 ports, -c and -t for sweep pace, -d to strip IPs and wildcards. Merge with subfinder, then probe with httpx. Trickest runs it as a managed Recon node with file and folder output.

source github.com/glebarez/cero

use cases

Where cero fits

Expand scope from certificate names

Read the common name and SANs off live TLS certificates to surface related domains and subdomains that passive subdomain sources do not list.

Harvest names across a netblock

Sweep an IP range and pull certificate domains from every TLS-listening host, turning raw address space into a list of owned names.

Mine nonstandard TLS ports

Point cero at custom ports with -p so certificates served on services beyond 443 still contribute their domain names to the scope.

Keep output clean for the next stage

Enable -d filtered output to drop IPs, wildcards, and gibberish so the domains that flow into enumeration and probing are valid names.

reference

cero inputs and flags

6 inputs
NameTypeFlagDescription
targetsFILE·File of target hosts or IPs to read certificates from.
portsSTRING-pTLS ports to use when not specified in the host address (default 443).
concurrencySTRING-cConcurrency level (default 100).
tls-timeoutSTRING-tTLS connection timeout in seconds (default 4).
filter-outputBOOLEAN-dOutput only valid domain names (strip IPs, wildcards, and gibberish).
verboseBOOLEAN-vVerbose output with per-address results and errors.

Showing key inputs. cero exposes 6 inputs in total.

example

Run cero

cero · command
# scrape cert domains from hosts, keep only valid names
cero -p 443,8443 -c 50 -t 4 -d < hosts.txt
sample output
www.example.com
api.example.com
mail.example.com
staging.example.com
dev.example.com
portal.example.com
cdn.example.com
vpn.example.com

guidance

Choosing cero

Use cero when you have hosts or IPs to connect to and need domain names from live TLS certificates. Passive sources like certsh-subdomains and subfinder need no handshake; cero does. Merge names, then probe with httpx.

tlsx

Broad TLS data collection including certificate fields. cero scrapes domain names only.

subfinder

Passive subdomain discovery from many sources. cero adds names pulled from live certificates.

certsh-subdomains

Reads names from crt.sh certificate logs. cero reads certificates off the live hosts instead.

faq

cero questions

From the SSL/TLS certificates that hosts present. It reads the common name and subject alternative names, which often list other domains the same organization owns.

Yes. It opens a TLS connection to each host to read the certificate, so unlike a passive source it touches the targets. It needs hosts or IPs to connect to.

Yes. Set -p to a comma-separated port list and cero connects on those ports, picking up certificates beyond the default 443.

Use -d, which strips IPs, wildcard entries, and gibberish so only usable domain names flow into the next stage.

Raise -c for more concurrent handshakes and keep -t tight so dead hosts fail fast instead of blocking the run.

certsh-subdomains reads public certificate logs with no target traffic. cero handshakes live hosts. Run both when you want log coverage plus names only live certs still show.

Run cero yourself

A target list feeds cero, which scrapes domain names from each host's TLS certificate and hands them to httpx so the live ones land as a queryable output.

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