recon
A versatile network reconnaissance CLI written in Rust. Started as a curl clone and grew into a multi-protocol investigation tool covering HTTP(S), TLS certificate inspection, DNS, WHOIS, ping, traceroute, barcode encode/ decode, file compression and archiving, Markdown / HTML / PDF conversion, and a full Rhai script engine that exposes every protocol probe and helper for automation.
Highlights
- 40+ URL schemes: HTTP(S), FTP(S), SCP, SFTP, TFTP, Gopher, Telnet, SSH, IMAP(S), POP3(S), SMTP(S), MQTT(S), Redis, Memcached, LDAP(S), RTSP(S), DICT, NTP, IPFS/IPNS, WS(S), TCP, UDP, file, …
- TLS at the protocol level: certificate inspection, CRL revocation checking, client cert mTLS, CA pinning, HSTS persistence.
- Browser fingerprint impersonation (opt-in feature, 0.77.0): mimic Chrome, Firefox, Safari, Edge, mobile, or OkHttp at the JA3 / JA4 / H2 fingerprint level via BoringSSL. See Browser fingerprint impersonation below.
- Email protection sweep: SPF, DMARC, DKIM, MTA-STS, TLS-RPT, BIMI in
one command (
recon --spf --dmarc --dkim --mta-sts --tls-rpt --bimi). - Document conversion: Markdown → HTML, Markdown → PDF, HTML → PDF with cover pages, ToC, page breaks, and PDF metadata.
- Codecs and crypto: hash (10 algorithms), encode / decode (base64, base32, hex, URL, percent, …), encrypt / decrypt (age, PGP shellout), compress / decompress (gzip, brotli, zstd, lz4, snappy, deflate, xz, zlib), archive / extract (zip, tar, tar.gz, …), barcode encode / decode (QR, DataMatrix, Aztec, PDF417, MaxiCode, plus 1D codes).
- Rhai script engine: every CLI feature is also a script binding —
http(),dns(),ping(),tcp_connect(),mqtt_pub(), … with a sticky-sessionbrowser()for stateful flows. - Curl compatibility: most curl flags work as you'd expect (
-X,-H,-d,-L,-o,-I,-K,-u,-x,--data-binary,--retry,--time-cond,--xattr,-EmTLS,-nnetrc, …). See docs/curl-parity-matrix.md.
Install
Homebrew (macOS / Linuxbrew)
# or, with BoringSSL-based browser fingerprint impersonation:
The two formulas install the same recon binary and conflict; pick one.
crates.io
The crate is published as recon-cli (the bare recon name has been
parked since 2019). The installed binary is still recon:
From source
# or with the impersonate feature (BoringSSL, ~5–10 MB extra binary,
# slow first build):
Build only without installing:
# impersonation feature
make help lists every target.
Quick start
# Verbose request with header capture
# POST JSON
# Inspect a TLS cert chain (works on expired or self-signed certs)
# Multiple DNS record types in one query
# Email-protection aggregate report
# WHOIS with two-hop registrar referral
# Save a markdown document as PDF with ToC and cover page
# Run a Rhai script
For more examples grouped by feature area:
Configuration
recon reads a layered TOML config: an optional system layer
(/etc/recon/config.toml, or $HOMEBREW_PREFIX/etc/recon/config.toml
on macOS) and an optional user layer (~/.recon/config.toml). The
layers are deep-merged with user winning. Bootstrap your user layer
with recon --init; see recon --help configuration or the
Configuration files section of the manual
for details.
Browser fingerprint impersonation
recon 0.77.0 added an opt-in Cargo feature impersonate that pulls in
rquest (BoringSSL) plus
rquest-util so recon can mimic a
real browser's TLS+H2 fingerprint instead of its default
reqwest+rustls signature. Useful when a server uses JA3 / JA4
fingerprinting or HTTP/2 SETTINGS-frame analysis to distinguish bots from
real browsers.
--ja3 / --ja4 / --http2-fingerprint are reserved in the CLI for
forward-compatibility but error at runtime in v1; named profiles cover
the captcha-testing use case. See recon --help impersonate for the full
profile list and v1 incompatibility rules.
Documentation
- docs/MANUAL.md — the long-form user manual.
Mirrored to
docs/MANUAL.pdf(committed). - CHANGELOG.md — every release, keep-a-changelog format.
- HISTORY.md — design rationale per feature: why the approach, what was rejected, what was deferred.
- OUT-OF-SCOPE.md — what recon won't do, and why.
- docs/curl-parity-matrix.md — recon
↔ curl
--versionfeature mapping. - script/README.md — Rhai script gallery,
one focused
.rhaiper binding module. recon --help [topic]— built-in topic-organised help.recon --examples— curated runnable scenarios.
Build matrix
# impersonate feature (BoringSSL)
License
MIT. Repository at https://github.com/codedeviate/recon.