
Grabber TLS rapide et configurable, axé sur la collecte de données basées sur TLS.
<h1 align="center">
<img src="https://assets.kitploit.com/production/public/readmes/41152/5378854a9ce1d6b8be992803fef258be9a652c389d699c22f4636b6db34acdf6.png" width="200px">
<br>
</h1>
<p align="center">
<a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/license-MIT-_red.svg"></a>
<a href="https://goreportcard.com/badge/github.com/projectdiscovery/tlsx"><img src="https://goreportcard.com/badge/github.com/projectdiscovery/tlsx"></a>
<a href="https://pkg.go.dev/github.com/projectdiscovery/tlsx/pkg/tlsx"><img src="https://img.shields.io/badge/go-reference-blue"></a>
<a href="https://github.com/projectdiscovery/tlsx/releases"><img src="https://img.shields.io/github/release/projectdiscovery/tlsx"></a>
<a href="https://twitter.com/pdiscoveryio"><img src="https://img.shields.io/twitter/follow/pdiscoveryio.svg?logo=twitter"></a>
<a href="https://discord.gg/projectdiscovery"><img src="https://img.shields.io/discord/695645237418131507.svg?logo=discord"></a>
</p>
<p align="center">
<a href="#features">Fonctionnalités</a> •
<a href="#installation">Installation</a> •
<a href="#usage">Utilisation</a> •
<a href="#running-tlsx">Exécution de tlsx</a> •
<a href="https://discord.gg/projectdiscovery">Rejoindre Discord</a>
</p>
Un grabber TLS rapide et configurable axé sur la **collecte et l'analyse de données** basées sur TLS.
# Fonctionnalités

- Connexion TLS rapide et entièrement configurable
- **Modes multiples** pour la connexion TLS
- Plusieurs **sondes TLS**
- **Repli automatique TLS** pour les versions TLS antérieures
- Connexion TLS **pré-handshake** (terminaison anticipée)
- Sélection personnalisable **Cipher / SNI / TLS**
- **Empreinte TLS JARM/JA3**
- **Mauvaise configuration TLS**
- Entrée **ASN,CIDR,IP,HOST,** et **URL**
- Sortie STD **IN/OUT** et **TXT/JSON**
## Installation
tlsx nécessite **Go 1.24** pour être installé correctement. Pour l'installer, exécutez simplement la commande ci-dessous ou téléchargez le binaire pré-compilé depuis la [page de release](https://github.com/projectdiscovery/tlsx/releases).```console
go install github.com/projectdiscovery/tlsx/cmd/tlsx@latest
```
## Utilisation```console
tlsx -h
```
Ceci affichera l'aide pour l'outil. Voici tous les commutateurs qu'il prend en charge.```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
```
## Utilisation de tlsx en tant que bibliothèque
Des exemples d'utilisation de tlsx en tant que bibliothèque sont fournis dans le dossier [examples](https://github.com/projectdiscovery/tlsx/blob/main/examples).
## Exécution de tlsx
### Entrée pour tlsx
**tlsx** nécessite **ip** pour établir une connexion TLS et accepte plusieurs formats comme listé ci-dessous :```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'hôte d'entrée peut être fourni en utilisant le flag `-host / -u`, et plusieurs valeurs peuvent être fournies en utilisant une entrée séparée par des virgules, de même l'entrée **fichier** est prise en charge en utilisant le flag `-list / -l`.
Exemple d'entrée d'hôte séparée par des virgules :```console
$ tlsx -u 93.184.216.34,example.com,example.com:443,https://example.com:443 -silent
```
Exemple d'entrée d'hôte basée sur fichier :```console
$ tlsx -list host_list.txt
```
**Entrée du port :**
**tlsx** se connecte sur le port **443** par défaut, qui peut être personnalisé à l'aide de l'option `-port / -p`. Un ou plusieurs ports peuvent être spécifiés en utilisant une entrée séparée par des virgules ou un fichier délimité par des sauts de ligne contenant la liste des ports auxquels se connecter.
Exemple d'entrée de port séparé par des virgules :```
$ tlsx -u hackerone.com -p 443,8443
```
Exemple d'entrée de port basée sur fichier :```
$ tlsx -u hackerone.com -p port_list.txt
```
**Remarque :**
> Lorsque l'hôte d'entrée contient un port, par exemple, `8.8.8.8:443` ou `hackerone.com:8443`, le port spécifié avec l'hôte sera utilisé pour établir la connexion TLS au lieu du port par défaut ou de celui fourni via le drapeau `-port / -p`.
### Sondage TLS (exécution par défaut)
Cette commande exécute l'outil sur la plage CIDR donnée et renvoie les hôtes qui acceptent une connexion TLS sur le port 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
```
### Sonde SAN/CN
Le certificat TLS contient des noms DNS dans les champs **subject alternative name** et **common name** qui peuvent être extraits à l'aide des flags `-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]
```
Pour faciliter l'automatisation, l'option `-resp-only` peut être utilisée pour lister uniquement les noms DNS dans la sortie 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
```
**sous-domaines** obtenus à partir de certificats TLS peuvent être redirigés vers d'autres outils PD pour une inspection plus approfondie, voici un exemple de redirection de sous-domaines TLS vers **[dnsx](https://github.com/projectdiscovery/dnsx)** pour filtrer les sous-domaines passifs et les passer à **[httpx](https://github.com/projectdiscovery/httpx)** pour lister les hôtes exécutant des services web actifs.```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
```
### Sonde TLS / Cipher```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]
```
# Mauvaise configuration TLS
### Certificat expiré / auto-signé / non conforme / révoqué / non approuvé
Une liste d'hôtes peut être fournie à tlsx pour détecter les certificats **expirés / auto-signés / non conformes / révoqués / non approuvés**.```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](https://engineering.salesforce.com/easily-identify-malicious-servers-on-the-internet-with-jarm-e095edac525a/) Empreinte TLS```console
$ echo hackerone.com | tlsx -jarm -silent
hackerone.com:443 [29d3dd00029d29d00042d43d00041d5de67cc9954cc85372523050f20b5007]
```
### [JA3](https://github.com/salesforce/ja3) Empreinte TLS```console
$ echo hackerone.com | tlsx -ja3 -silent
hackerone.com:443 [20c9baf81bfe96ff89722899e75d0190]
```
### Sortie JSON
**tlsx** prend en charge plusieurs indicateurs de sonde pour interroger des données spécifiques, mais toutes les informations sont toujours disponibles au format JSON. Pour l'automatisation et le post-traitement, l'utilisation de la sortie avec `-json` est l'option la plus pratique.```console
echo example.com | tlsx -json -silent | jq .
```
.```json
{
"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"
}
```
### Intégration du tableau de bord PDCP
**tlsx** prend en charge le téléchargement des résultats de scan vers le tableau de bord de la ProjectDiscovery Cloud Platform (PDCP) pour visualisation et analyse.
#### Téléchargement des résultats en temps réel
Activez le téléchargement vers le tableau de bord pour télécharger automatiquement les résultats dès leur découverte :```console
$ tlsx -u example.com -pd -json
```
Les résultats seront automatiquement téléversés vers PDCP et vous recevrez une URL de tableau de bord pour les visualiser.
#### Téléversement d'un fichier existant
Téléversez un fichier JSONL préalablement enregistré vers PDCP :```console
$ tlsx -pdu results.jsonl -tid your-team-id -aname "My Scan"
```
#### Options de configuration
- `-pd, --dashboard`: Activer le téléchargement en temps réel vers le tableau de bord PDCP
- `-pdu, --dashboard-upload <file>`: Télécharger un fichier JSONL spécifique vers PDCP
- `-auth <key>`: Clé API PDCP (peut également être définie via l'environnement ou le gestionnaire d'identifiants)
- `-tid, --team-id <id>`: Spécifier l'ID d'équipe pour les téléchargements
- `-aid, --asset-id <id>`: Télécharger vers un ID d'actif existant
- `-aname, --asset-name <name>`: Définir un nom personnalisé pour le groupe d'actifs
Exemple avec toutes les options :```console
$ tlsx -u example.com -pd -json -tid team123 -aname "Production Scan"
```
## Configuration
### Mode de Scan
tlsx propose plusieurs modes pour établir une connexion TLS -
- `auto` (retour automatique vers d'autres modes en cas d'échec) - **par défaut**
- `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)**)
Quelques points concernant le mode / bibliothèque spécifique sont mis en évidence dans les [discussions liées](https://github.com/projectdiscovery/tlsx/discussions/2). Le mode `auto` est pris en charge pour garantir une couverture maximale et analyse les hôtes exécutant une version obsolète de TLS en réessayant la connexion avec les modes `ztls` et `openssl` en cas d'erreur de connexion.
Un exemple d'utilisation du mode `ztls` pour analyser un site web utilisant une version ancienne / obsolète de 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
Pour utiliser le mode de connexion openssl, vous devez avoir openssl installé sur votre système. La plupart des systèmes modernes sont livrés avec openssl préinstallé, mais s'il n'est pas présent sur votre système, vous pouvez l'installer manuellement. Vous pouvez vérifier si openssl est installé en exécutant la commande `openssl version`. Si openssl est installé, cette commande affichera le numéro de version.
<table>
<tr>
<td>
### Pré-poignée de main (terminaison précoce)
**tlsx** prend en charge la terminaison précoce de la connexion SSL, ce qui permet une numérisation plus rapide et moins de requêtes de connexion (déconnexion après la collecte des données TLS `serverhello` et du certificat).
Pour plus de détails, veuillez vous référer à [Hunting-Certificates-And-Servers](https://github.com/erbbysam/Hunting-Certificates-And-Servers/blob/master/Hunting%20Certificates%20%26%20Servers.pdf) par [@erbbysam](https://twitter.com/erbbysam)
Un exemple d'utilisation du mode `-pre-handshake` :
tlsx -pre-handshake -t 104.16.132.229 -p 443
</td>
</tr>
</table>```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
```
> **Remarque** :
> Le mode **pre-handshake** utilise `ztls` (**zcrypto/tls**) ce qui signifie également que la prise en charge est limitée à `TLS v1.2` car `TLS v1.3` n'est pas supporté par la bibliothèque `ztls`.
</table>
</tr>
</td>
### Version TLS
Les versions **Minimale** et **Maximale** de TLS peuvent être spécifiées à l'aide des indicateurs `-min-version` et `-max-version` ; par défaut, ces valeurs sont définies par la bibliothèque utilisée sous-jacente.
Les valeurs acceptables pour la version TLS sont spécifiées ci-dessous.
- `ssl30`
- `tls10`
- `tls11`
- `tls12`
- `tls13`
Voici un exemple utilisant `max-version` pour scanner les hôtes supportant une version plus ancienne de TLS, c'est-à-dire **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
```
### Chiffrement personnalisé
Un chiffrement personnalisé pris en charge peut être fourni en utilisant le drapeau `-cipher-input / -ci`. La liste des chiffrements pris en charge pour chaque mode est disponible sur la [page wiki](https://github.com/projectdiscovery/tlsx/wiki/Ciphers).```console
$ tlsx -u example.com -ci TLS_AES_256_GCM_SHA384 -cipher
```
.```console
$ tlsx -u example.com -ci cipher_list.txt -cipher
```
## Remerciements
Ce programme utilise optionnellement :
- [zcrypto](https://github.com/zmap/zcrypto) bibliothèque de l'équipe zmap.
- [cfssl](https://github.com/cloudflare/cfssl) bibliothèque de l'équipe cloudflare
- données de chiffrement de [ciphersuite.info](https://ciphersuite.info) pour la classification des suites de chiffrement.
--------
<div align="center">
tlsx est fait avec ❤️ par l'équipe [projectdiscovery](https://projectdiscovery.io) et distribué sous [licence MIT](https://github.com/projectdiscovery/tlsx/blob/main/LICENSE).
<a href="https://discord.gg/projectdiscovery"><img src="https://assets.kitploit.com/production/public/readmes/41152/d0624f94cb9ea6401be5a089bb694bc963c47fa82aa3b758c893e3b0bbfdf663.png" width="300" alt="Rejoindre Discord"></a>
</div>
### Streaming des logs de transparence des certificats (CT)
`tlsx` peut fonctionner dans un mode _fire-hose_ qui diffuse en continu les certificats TLS nouvellement émis de l'écosystème public de transparence des certificats, fournissant un flux quasi en temps réel de noms d'hôtes et de métadonnées.
Activer le mode logs CT via l'option `-ctl` (par défaut lorsqu'aucune entrée n'est fournie) :```bash
tlsx -ctl -silent | jq .subject_an
```
#### Décalages de départ
L'outil propose trois comportements de démarrage mutuellement exclusifs contrôlés par les indicateurs suivants :
| Drapeau | Comportement |
|------|-----------|
| _default_ | Démarrer **maintenant** (taille de l'arbre au démarrage) – seuls les certificats futurs sont diffusés en continu |
| `-cb, --ctl-beginning` | Démarrer à partir de l'index **0** pour chaque journal (relecture historique complète) |
| `-cti, --ctl-index <log>=<n>` | Index personnalisé par journal (répétable). Définit l'index de départ à _n_ pour l'URL/ID de journal spécifié. Exemple : `--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
```
Par défaut, les doublons sont filtrés à l'aide d'un grand filtre de Bloom inverse. Passez `-v` pour observer les statistiques détaillées.