Torna agli aggiornamenti
New releaseAug 3, 2026

tlsx v1.3.0

Veloce e configurabile grabber TLS focalizzato sulla raccolta di dati basati su TLS.

Condividi


FunzionalitàInstallazioneUtilizzoEseguire tlsxUnisciti su Discord

Un analizzatore TLS veloce e configurabile focalizzato sulla raccolta e analisi dei dati basati su TLS.

Funzionalità

image

  • Connessione TLS veloce e completamente configurabile
  • Molteplici Modalità per la Connessione TLS
  • Molteplici Sonde TLS
  • Fallback TLS Automatico per versioni TLS precedenti
  • Connessione TLS Pre Handshake (terminazione anticipata)
  • Selezione personalizzabile di Cipher / SNI / TLS
  • Impronta digitale TLS JARM/JA3
  • Misfunzionamenti TLS
  • Input ASN, CIDR, IP, HOST, e URL
  • Output STD IN/OUT e TXT/JSON

Installazione

tlsx richiede Go 1.24 per essere installato correttamente. Per installare, basta eseguire il comando sottostante o scaricare il binario precompilato dalla pagina delle release.```console go install github.com/projectdiscovery/tlsx/cmd/tlsx@latest

## Utilizzo```console
tlsx -h

Questo mostrerà l'aiuto per lo strumento. Ecco tutte le opzioni che supporta.```console TLSX is a tls data gathering and analysis toolkit.

Usage: tlsx [flags]

Flags: INPUT: -u, -host string[] target host to scan (-u INPUT1,INPUT2) -l, -list string target list to scan (-l INPUT_FILE) -p, -port string[] target port to connect (default 443)

SCAN-MODE: -sm, -scan-mode string tls connection mode to use (ctls, ztls, openssl, auto) (default "auto") -ps, -pre-handshake enable pre-handshake tls connection (early termination) using ztls -sa, -scan-all-ips scan all ips for a host (default false) -iv, -ip-version string[] ip version to use (4, 6) (default 4)

PROBES: -san display subject alternative names -cn display subject common names -so display subject organization name -tv, -tls-version display used tls version -cipher display used cipher -hash string display certificate fingerprint hashes (md5,sha1,sha256) -jarm display jarm fingerprint hash -ja3 display ja3 fingerprint hash (using ztls) -wc, -wildcard-cert display host with wildcard ssl certificate -tps, -probe-status display tls probe status -ve, -version-enum enumerate and display supported tls versions -ce, -cipher-enum enumerate and display supported cipher -ct, -cipher-type value ciphers types to enumerate. possible values: all/secure/insecure/weak (comma-separated) (default all) -ch, -client-hello include client hello in json output (ztls mode only) -sh, -server-hello include server hello in json output (ztls mode only) -se, -serial display certificate serial number

MISCONFIGURATIONS: -ex, -expired display host with host expired certificate -ss, -self-signed display host with self-signed certificate -mm, -mismatched display host with mismatched certificate -re, -revoked display host with revoked certificate -un, -untrusted display host with untrusted certificate

CONFIGURATIONS: -config string path to the tlsx configuration file -r, -resolvers string[] list of resolvers to use -cc, -cacert string client certificate authority file -ci, -cipher-input string[] ciphers to use with tls connection -sni string[] tls sni hostname to use -rs, -random-sni use random sni when empty -rps, -rev-ptr-sni perform reverse PTR to retrieve SNI from IP -min-version string minimum tls version to accept (ssl30,tls10,tls11,tls12,tls13) -max-version string maximum tls version to accept (ssl30,tls10,tls11,tls12,tls13) -cert, -certificate include certificates in json output (PEM format) -tc, -tls-chain include certificates chain in json output -vc, -verify-cert enable verification of server certificate -ob, -openssl-binary string OpenSSL Binary Path -hf, -hardfail strategy to use if encountered errors while checking revocation status -proxy string socks5 proxy to use for tlsx

OPTIMIZATIONS: -c, -concurrency int number of concurrent threads to process (default 300) -cec, -cipher-concurrency int cipher enum concurrency for each target (default 10) -timeout int tls connection timeout in seconds (default 5) -retry int number of retries to perform for failures (default 3) -delay string duration to wait between each connection per thread (eg: 200ms, 1s)

UPDATE: -up, -update update tlsx to latest version -duc, -disable-update-check disable automatic tlsx update check

OUTPUT: -o, -output string file to write output to -j, -json display output in jsonline format -dns display unique hostname from SSL certificate response -ro, -resp-only display tls response only -silent display silent output -nc, -no-color disable colors in cli output -v, -verbose display verbose output -version display project version

PDCP: -pd, -dashboard upload or view output in the PDCP UI dashboard -pdu, -dashboard-upload string upload tlsx output file (JSONL format) to the PDCP UI dashboard -auth string PDCP API key for authentication -tid, -team-id string upload asset results to a specified team ID -aid, -asset-id string upload new assets to an existing asset ID -aname, -asset-name string asset group name

DEBUG: -health-check, -hc run diagnostic check up

## Utilizzare tlsx come libreria

Esempi di utilizzo di tlsx come libreria sono forniti nella cartella [examples](https://github.com/projectdiscovery/tlsx/blob/HEAD/examples/).

## Esecuzione di tlsx

### Input per tlsx

**tlsx** richiede **ip** per stabilire una connessione TLS e accetta più formati come elencato di seguito:```bash
AS1449 # ASN input
173.0.84.0/24 # CIDR input
93.184.216.34 # IP input
example.com # DNS input
example.com:443 # DNS input with port
https://example.com:443 # URL input port

L'input host può essere fornito utilizzando il flag -host / -u, e valori multipli possono essere forniti utilizzando input separato da virgole, allo stesso modo l'input da file è supportato utilizzando il flag -list / -l.

Esempio di input host separato da virgole:```console $ tlsx -u 93.184.216.34,example.com,example.com:443,https://example.com:443 -silent

Esempio di input host basato su file:```console
$ tlsx -list host_list.txt

Input Porta:

tlsx si connette sulla porta 443 per impostazione predefinita, che può essere personalizzata usando il flag -port / -p. È possibile specificare porte singole o multiple utilizzando input separato da virgole o un file delimitato da nuove righe contenente un elenco di porte a cui connettersi.

Esempio di input porta separato da virgole:``` $ tlsx -u hackerone.com -p 443,8443

Esempio di input di porta basato su file:```
$ tlsx -u hackerone.com -p port_list.txt

Nota:

Quando l'host di input contiene una porta, ad esempio 8.8.8.8:443 o hackerone.com:8443, la porta specificata con l'host verrà utilizzata per stabilire la connessione TLS invece di quella predefinita o di quella fornita utilizzando il flag -port / -p.

TLS Probe (esecuzione predefinita)

Questo eseguirà lo strumento sul range CIDR fornito e restituirà gli host che accettano connessioni TLS sulla porta 443.```console $ echo 173.0.84.0/24 | tlsx


|_ | | / \ / / | | | |_ > < || ||/_/_\ v0.0.1

projectdiscovery.io

[WRN] Use with caution. You are responsible for your actions. [WRN] Developers assume no liability and are not responsible for any misuse or damage.

173.0.84.69:443 173.0.84.67:443 173.0.84.68:443 173.0.84.66:443 173.0.84.76:443 173.0.84.70:443 173.0.84.72:443

### SAN/CN Probe

Il certificato TLS contiene nomi DNS nei campi **subject alternative name** e **common name** che possono essere estratti usando i flag `-san`, `-cn`.```console
$ echo 173.0.84.0/24 | tlsx -san -cn -silent

173.0.84.104:443 [uptycspay.paypal.com]
173.0.84.104:443 [api-3t.paypal.com]
173.0.84.104:443 [api-m.paypal.com]
173.0.84.104:443 [payflowpro.paypal.com]
173.0.84.104:443 [pointofsale-s.paypal.com]
173.0.84.104:443 [svcs.paypal.com]
173.0.84.104:443 [uptycsven.paypal.com]
173.0.84.104:443 [api-aa.paypal.com]
173.0.84.104:443 [pilot-payflowpro.paypal.com]
173.0.84.104:443 [pointofsale.paypal.com]
173.0.84.104:443 [uptycshon.paypal.com]
173.0.84.104:443 [api.paypal.com]
173.0.84.104:443 [adjvendor.paypal.com]
173.0.84.104:443 [zootapi.paypal.com]
173.0.84.104:443 [api-aa-3t.paypal.com]
173.0.84.104:443 [uptycsize.paypal.com]

Per facilità di automazione, opzionalmente si può usare il flag -resp-only per elencare solo i nomi dns nell'output CLI.```console $ echo 173.0.84.0/24 | tlsx -san -cn -silent -resp-only

api-aa-3t.paypal.com pilot-payflowpro.paypal.com pointofsale-s.paypal.com uptycshon.paypal.com a.paypal.com adjvendor.paypal.com zootapi.paypal.com api-aa.paypal.com payflowpro.paypal.com pointofsale.paypal.com uptycspay.paypal.com api-3t.paypal.com uptycsize.paypal.com api.paypal.com api-m.paypal.com svcs.paypal.com uptycsven.paypal.com uptycsven.paypal.com a.paypal.com api.paypal.com pointofsale-s.paypal.com pilot-payflowpro.paypal.com

I **sottodomini** ottenuti dai certificati TLS possono essere ulteriormente passati ad altri strumenti PD per un'ispezione più approfondita; ecco un esempio di piping di sottodomini TLS a **[dnsx](https://github.com/projectdiscovery/dnsx)** per filtrare i sottodomini passivi e poi a **[httpx](https://github.com/projectdiscovery/httpx)** per elencare gli host che eseguono servizi web attivi.```console
$ echo 173.0.84.0/24 | tlsx -san -cn -silent -resp-only | dnsx -silent | httpx

    __    __  __       _  __
   / /_  / /_/ /_____ | |/ /
  / __ \/ __/ __/ __ \|   /
 / / / / /_/ /_/ /_/ /   |
/_/ /_/\__/\__/ .___/_/|_|
             /_/              v1.2.2

    projectdiscovery.io

Use with caution. You are responsible for your actions.
Developers assume no liability and are not responsible for any misuse or damage.
https://api-m.paypal.com
https://uptycsize.paypal.com
https://api.paypal.com
https://uptycspay.paypal.com
https://svcs.paypal.com
https://adjvendor.paypal.com
https://uptycshap.paypal.com
https://uptycshon.paypal.com
https://pilot-payflowpro.paypal.com
https://slc-a-origin-pointofsale.paypal.com
https://uptycsven.paypal.com
https://api-aa.paypal.com
https://api-aa-3t.paypal.com
https://uptycsbrt.paypal.com
https://payflowpro.paypal.com
http://pointofsale-s.paypal.com
http://slc-b-origin-pointofsale.paypal.com
http://api-3t.paypal.com
http://zootapi.paypal.com
http://pointofsale.paypal.com

TLS / Cipher Probe```console

$ subfinder -d hackerone.com | tlsx -tls-version -cipher

mta-sts.hackerone.com:443 [TLS1.3] [TLS_AES_128_GCM_SHA256] hackerone.com:443 [TLS1.3] [TLS_AES_128_GCM_SHA256] api.hackerone.com:443 [TLS1.3] [TLS_AES_128_GCM_SHA256] mta-sts.managed.hackerone.com:443 [TLS1.3] [TLS_AES_128_GCM_SHA256] mta-sts.forwarding.hackerone.com:443 [TLS1.3] [TLS_AES_128_GCM_SHA256] www.hackerone.com:443 [TLS1.3] [TLS_AES_128_GCM_SHA256] support.hackerone.com:443 [TLS1.2] [TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256]

# Configurazione errata TLS

### Certificato scaduto / autofirmato / non corrispondente / revocato / non attendibile

È possibile fornire un elenco di host a tlsx per rilevare certificati **scaduti / autofirmati / non corrispondenti / revocati / non attendibili**.```console
$ tlsx -l hosts.txt -expired -self-signed -mismatched -revoked -untrusted
  

  _____ _    _____  __
 |_   _| |  / __\ \/ /
   | | | |__\__ \>  < 
   |_| |____|___/_/\_\  v0.0.1

    projectdiscovery.io

[WRN] Use with caution. You are responsible for your actions.
[WRN] Developers assume no liability and are not responsible for any misuse or damage.

wrong.host.badssl.com:443 [mismatched]
self-signed.badssl.com:443 [self-signed]
expired.badssl.com:443 [expired]
revoked.badssl.com:443 [revoked]
untrusted-root.badssl.com:443 [untrusted]

JARM Impronta TLS```console

$ echo hackerone.com | tlsx -jarm -silent

hackerone.com:443 [29d3dd00029d29d00042d43d00041d5de67cc9954cc85372523050f20b5007]

### [JA3](https://github.com/salesforce/ja3) Impronta digitale TLS```console
$ echo hackerone.com | tlsx -ja3 -silent

hackerone.com:443 [20c9baf81bfe96ff89722899e75d0190]

Output JSON

tlsx supporta più flag di probe per interrogare dati specifici, ma tutte le informazioni sono sempre disponibili in formato JSON; per automazione e post-elaborazione, l'uso dell'output -json è l'opzione più conveniente.```console echo example.com | tlsx -json -silent | jq .

  • Ricognizione Avanzata: raccoglie informazioni sui target (registri DNS, range IP, scansione ASN, rilevamento WAF, fingerprinting SSL, registri dei domini) per creare un quadro completo dei potenziali vettori di attacco.
  • Rilevamento Avanzato di Falle di Sicurezza: supporta il rilevamento di vulnerabilità per una vasta gamma di target, tra cui CMS (WordPress, Joomla, Drupal), infrastrutture (PHP, MySQL, Apache), server (FTP, SSH, SMTP), gestori di pacchetti (Composer, NPM) e molto altro.
  • Velocissimo e Veloce: esegue scansioni multi-threaded fino a 50 richieste al secondo senza sovraccaricare i server target.
  • Sonde di Honeypot: include sonde di honeypot finte (file di backup finti, file di configurazione) per rilevare automaticamente cloni dannosi o crawler malevoli che prendono di mira il tuo sito.
  • Generazione di Report: genera report dettagliati in formato HTML, PDF o testo semplice con i risultati della scansione.
  • Autenticazione Multi-Fattore: fornisce il supporto per l'autenticazione a due fattori per un ulteriore livello di sicurezza della tua applicazione web.
{
  "timestamp": "2022-08-22T21:22:59.799053+05:30",
  "host": "example.com",
  "ip": "93.184.216.34",
  "port": "443",
  "probe_status": true,
  "tls_version": "tls13",
  "cipher": "TLS_AES_256_GCM_SHA384",
  "not_before": "2022-03-14T00:00:00Z",
  "not_after": "2023-03-14T23:59:59Z",
  "subject_dn": "CN=www.example.org, O=Internet Corporation for Assigned Names and Numbers, L=Los Angeles, ST=California, C=US",
  "subject_cn": "www.example.org",
  "subject_org": [
    "Internet Corporation for Assigned Names and Numbers"
  ],
  "subject_an": [
    "www.example.org",
    "example.net",
    "example.edu",
    "example.com",
    "example.org",
    "www.example.com",
    "www.example.edu",
    "www.example.net"
  ],
  "issuer_dn": "CN=DigiCert TLS RSA SHA256 2020 CA1, O=DigiCert Inc, C=US",
  "issuer_cn": "DigiCert TLS RSA SHA256 2020 CA1",
  "issuer_org": [
    "DigiCert Inc"
  ],
  "fingerprint_hash": {
    "md5": "c5208a47259d540a6e3404dddb85af91",
    "sha1": "df81dfa6b61eafdffffe1a250240db5d2e6cee25",
    "sha256": "7f2fe8d6b18e9a47839256cd97938daa70e8515750298ddba2f3f4b8440113fc"
  },
  "tls_connection": "ctls",
  "sni": "example.com"
}
```
### Integrazione con il Dashboard PDCP

**tlsx** supporta il caricamento dei risultati delle scansioni sul dashboard di ProjectDiscovery Cloud Platform (PDCP) per visualizzazione e analisi.

#### Caricamento dei risultati in tempo reale

Abilita il caricamento sul dashboard per caricare automaticamente i risultati man mano che vengono scoperti:```console
$ tlsx -u example.com -pd -json
```
I risultati verranno automaticamente caricati su PDCP e riceverai un URL della dashboard per visualizzarli.

#### Caricamento di un file esistente

Carica un file di output JSONL precedentemente salvato su PDCP:```console
$ tlsx -pdu results.jsonl -tid your-team-id -aname "My Scan"
```
#### Opzioni di Configurazione

- `-pd, --dashboard`: Abilita il caricamento in tempo reale al dashboard PDCP
- `-pdu, --dashboard-upload <file>`: Carica un file JSONL specifico su PDCP
- `-auth <key>`: Chiave API PDCP (può anche essere impostata tramite ambiente o gestore di credenziali)
- `-tid, --team-id <id>`: Specifica l'ID del team per i caricamenti
- `-aid, --asset-id <id>`: Carica su un ID asset esistente
- `-aname, --asset-name <name>`: Imposta un nome personalizzato per il gruppo di asset

Esempio con tutte le opzioni:```console
$ tlsx -u example.com -pd -json -tid team123 -aname "Production Scan"
```
## Configurazione

### Modalità di Scansione

tlsx fornisce molteplici modalità per effettuare la connessione TLS -

- `auto` (fallback automatico ad altre modalità in caso di fallimento) - **predefinita**
- `ctls` (**[crypto/tls](https://github.com/golang/go/blob/master/src/crypto/tls/tls.go)**)
- `ztls` (**[zcrypto/tls](https://github.com/zmap/zcrypto)**)
- `openssl` (**[openssl](https://github.com/openssl/openssl)**)

Alcuni suggerimenti per la modalità/libreria specifica sono evidenziati nelle [discussioni collegate](https://github.com/projectdiscovery/tlsx/discussions/2), la modalità `auto` è supportata per garantire la massima copertura e scansioni per gli host che eseguono versioni obsolete di TLS riprovando la connessione utilizzando le modalità `ztls` e `openssl` in caso di errore di connessione.

Un esempio di utilizzo della modalità `ztls` per scansionare un sito web che utilizza una versione vecchia/obsoleta di TLS.```console
$ echo tls-v1-0.badssl.com | tlsx -port 1010 -sm ztls
  

  _____ _    _____  __
 |_   _| |  / __\ \/ /
   | | | |__\__ \>  < 
   |_| |____|___/_/\_\  v0.0.1

    projectdiscovery.io

[WRN] Use with caution. You are responsible for your actions.
[WRN] Developers assume no liability and are not responsible for any misuse or damage.

tls-v1-0.badssl.com:1010
```
### OpenSSL

Per utilizzare la modalità di connessione openssl, è necessario avere openssl installato sul sistema. La maggior parte dei sistemi moderni viene fornita con openssl preinstallato, ma se non è presente sul sistema, è possibile installarlo manualmente. È possibile verificare se openssl è installato eseguendo il comando `openssl version`. Se openssl è installato, questo comando mostrerà il numero di versione.

<table>
<tr>
<td>

### Pre-Handshake (Terminazione anticipata)

**tlsx** supporta la terminazione anticipata della connessione SSL, che porta a scansioni più veloci e a minori richieste di connessione (disconnettendosi dopo il `serverhello` TLS e la raccolta dei dati del certificato).

Per maggiori dettagli, fare riferimento a [Hunting-Certificates-And-Servers](https://github.com/erbbysam/Hunting-Certificates-And-Servers/blob/master/Hunting%20Certificates%20%26%20Servers.pdf) di [@erbbysam](https://twitter.com/erbbysam)

Un esempio di utilizzo della modalità `-pre-handshake`:```console
$ tlsx -u example.com -pre-handshake 
  

  _____ _    _____  __
 |_   _| |  / __\ \/ /
   | | | |__\__ \>  < 
   |_| |____|___/_/\_\  v0.0.1

    projectdiscovery.io

[WRN] Use with caution. You are responsible for your actions.
[WRN] Developers assume no liability and are not responsible for any misuse or damage.

example.com:443
```
> **Nota**:

> La modalità **pre-handshake** utilizza `ztls` (**zcrypto/tls**), il che significa anche che il supporto è limitato fino a `TLS v1.2` poiché `TLS v1.3` non è supportato dalla libreria `ztls`.

</table>
</tr>
</td>

### Versione TLS

Le versioni TLS **minima** e **massima** possono essere specificate usando i flag `-min-version` e `-max-version`; di default questi valori sono impostati dalla libreria sottostante utilizzata.

I valori accettabili per la versione TLS sono specificati di seguito.

- `ssl30`
- `tls10`
- `tls11`
- `tls12`
- `tls13`

Ecco un esempio che utilizza `max-version` per scansionare gli host che supportano una versione precedente di TLS, ovvero **TLS v1.0**```console
$ tlsx -u example.com -max-version tls10
  

  _____ _    _____  __
 |_   _| |  / __\ \/ /
   | | | |__\__ \>  < 
   |_| |____|___/_/\_\  v0.0.1

    projectdiscovery.io

[WRN] Use with caution. You are responsible for your actions.
[WRN] Developers assume no liability and are not responsible for any misuse or damage.
example.com:443
```
### Cifrario Personalizzato

Il cifrario personalizzato supportato può essere fornito usando il flag `-cipher-input / -ci`, l'elenco dei cifrari supportati per ogni modalità è disponibile nella [pagina wiki](https://github.com/projectdiscovery/tlsx/wiki/Ciphers).```console
$ tlsx -u example.com -ci TLS_AES_256_GCM_SHA384 -cipher
```
Le seguenti opzioni sono attualmente supportate:```console
$ tlsx -u example.com -ci cipher_list.txt -cipher
```
## Ringraziamenti

Questo programma utilizza opzionalmente:

- [zcrypto](https://github.com/zmap/zcrypto) libreria del team zmap.
- [cfssl](https://github.com/cloudflare/cfssl) libreria del team cloudflare
- dati sui cipher da [ciphersuite.info](https://ciphersuite.info) per la classificazione delle suites di cifratura

--------

<div align="center">

tlsx è realizzato con ❤️ dal team [projectdiscovery](https://projectdiscovery.io) e distribuito sotto [Licenza MIT](https://github.com/projectdiscovery/tlsx/blob/HEAD/LICENSE).


<a href="https://discord.gg/projectdiscovery"><img src="https://assets.kitploit.com/production/public/readmes/41152/d0624f94cb9ea6401be5a089bb694bc963c47fa82aa3b758c893e3b0bbfdf663.png" width="300" alt="Join Discord"></a>

</div>

### Streaming dei Registri di Trasparenza dei Certificati (CT)

`tlsx` può operare in una modalità _fire-hose_ che trasmette continuamente i certificati TLS appena emessi dall'ecosistema pubblico di Trasparenza dei Certificati, fornendo un flusso quasi in tempo reale di nomi host e metadati.

Abilita la modalità dei registri CT tramite l'opzione `-ctl` (impostazione predefinita quando non viene fornito alcun input):```bash
tlsx -ctl -silent | jq .subject_an
```
#### Offset di partenza

Lo strumento offre tre comportamenti di avvio mutuamente esclusivi controllati dalle seguenti flag:

| Flag | Comportamento |
|------|-----------|
| _default_ | Avvia **ora** (dimensione dell'albero all'avvio) – solo i certificati futuri vengono trasmessi in streaming |
| `-cb, --ctl-beginning` | Avvia dall'indice **0** per ogni log (riproduzione storica completa) |
| `-cti, --ctl-index <log>=<n>` | Indice personalizzato per log (ripetibile). Imposta l'indice di partenza su _n_ per l'URL/ID del log specificato. Esempio: `--ctl-index https://ct.googleapis.com/logs/argon2023=123456` |```bash
# Replay the entire history
$ tlsx -ctl -cb -silent > all_certs.jsonl

# Resume at custom positions for two logs
$ tlsx -ctl -cti https://ct.googleapis.com/logs/argon2023=987654 -cti cloudflare-nimbus2024=543210 \
      -silent | jq -r .ct_source
```
Per impostazione predefinita, i duplicati vengono filtrati utilizzando un grande filtro bloom inverso. Passa `-v` per osservare statistiche verbose.

Categorie