| Crates.io | tlsferret |
| lib.rs | tlsferret |
| version | 0.1.0 |
| created_at | 2025-06-18 08:20:52.798619+00 |
| updated_at | 2025-06-18 08:20:52.798619+00 |
| description | A fast SSL/TLS scanner written in Rust, inspired by rbsec/sslscan |
| homepage | https://github.com/shyuan/tlsferret |
| repository | https://github.com/shyuan/tlsferret |
| max_upload_size | |
| id | 1716751 |
| size | 223,544 |
A fast and comprehensive SSL/TLS scanner written in Rust, inspired by rbsec/sslscan.
TLSferret combines the security of modern rustls with the compatibility of native-tls to provide thorough SSL/TLS analysis across all protocol versions.
TLSferret supports STARTTLS for the following protocols:
Download the latest release for your platform from the Releases page:
# x86_64
curl -L https://github.com/shyuan/tlsferret/releases/latest/download/tlsferret-v0.1.0-x86_64-unknown-linux-gnu.tar.gz | tar xz
./tlsferret --help
# Intel Mac
curl -L https://github.com/shyuan/tlsferret/releases/latest/download/tlsferret-v0.1.0-x86_64-apple-darwin.tar.gz | tar xz
# Apple Silicon (M1/M2)
curl -L https://github.com/shyuan/tlsferret/releases/latest/download/tlsferret-v0.1.0-aarch64-apple-darwin.tar.gz | tar xz
Download tlsferret-v0.1.0-x86_64-pc-windows-msvc.zip from the releases page and extract.
git clone https://github.com/shyuan/tlsferret.git
cd tlsferret
cargo build --release
The binary will be available at target/release/tlsferret
# Basic HTTPS scan
tlsferret example.com
# Specific port
tlsferret example.com:8443
# IPv4 only
tlsferret example.com --ipv4
# IPv6 only
tlsferret example.com --ipv6
# SMTP STARTTLS
tlsferret mail.example.com:587 --starttls smtp
# IMAP STARTTLS
tlsferret mail.example.com:143 --starttls imap
# PostgreSQL SSL
tlsferret db.example.com:5432 --starttls postgres
# LDAP STARTTLS
tlsferret ldap.example.com:389 --starttls ldap
# Test specific TLS version
tlsferret example.com --tls-version tls1.3
# Custom SNI hostname
tlsferret 192.168.1.100 --sni-name example.com
# Disable cipher suite testing (faster)
tlsferret example.com --no-ciphersuites
# Custom timeout
tlsferret example.com --timeout 10
# Verbose output
tlsferret example.com -vv
# JSON output
tlsferret example.com --format json
# XML output
tlsferret example.com --format xml
# Save to file
tlsferret example.com --output scan-results.json --format json
# Show certificate details
tlsferret example.com --show-certificate
$ tlsferret google.com
SSL/TLS Scanner - Rust Edition
==============================
Powered by: rustls 0.23 + aws-lc-rs (post-quantum) | native-tls 0.2 | tlsferret v0.1.0
Testing SSL/TLS on google.com:443
SSL/TLS Scan Results
Target:
Host: google.com
IP: 142.250.77.14:443
Port: 443
Supported Protocols:
SSLv2 NO
SSLv3 NO
TLSv1.0 YES
TLSv1.1 YES
TLSv1.2 YES
TLSv1.3 YES
TLS Fallback SCSV:
Supported
✓ Server protects against downgrade attacks
TLS renegotiation:
Secure renegotiation (RFC 5746): Supported
Client-initiated renegotiation: Disabled
✓ Server rejects client renegotiation
TLS compression: Disabled
✓ Server not vulnerable to CRIME attack
Heartbleed (CVE-2014-0160):
Not Vulnerable
✓ Server is protected against Heartbleed attacks
Preferred Cipher:
TLS13_AES_256_GCM_SHA384 TLSv1.3 256 bits
Server Key Exchange Group(s):
Classical Groups:
X25519 ✓
X448 ✓
secp256r1 ✓
secp384r1 ✓
secp521r1 ✓
Post-Quantum Groups:
X25519MLKEM768 ✓
SecP256r1MLKEM768 ✓
SecP384r1MLKEM1024 ✓
MLKEM512 ✓
MLKEM768 ✓
MLKEM1024 ✓
Certificate Information:
Subject: CN=*.google.com
Issuer: C=US, O=Google Trust Services, CN=WR2
Valid: 54 days remaining
Public Key: EC (secp256r1) 256 bits
SHA256 Fingerprint: fa0863a0a9c98317da392dbf4043e5451d8bfceafc87a5ce198b6fe573977f0d
Summary
Good:
✓ TLSv1.2 is enabled
✓ TLSv1.3 is enabled
Warnings:
⚠ TLSv1.0 is enabled (deprecated)
⚠ TLSv1.1 is enabled (deprecated)
TLSferret uses a hybrid approach combining two TLS libraries:
src/
├── main.rs # CLI interface and application entry point
├── scanner.rs # Core scanning orchestration
├── legacy_scanner.rs # Legacy protocol support (SSL3, TLS 1.0/1.1)
├── starttls.rs # STARTTLS protocol implementations
├── protocol.rs # TLS protocol definitions and enums
├── cipher.rs # Cipher suite analysis and strength grading
├── certificate.rs # X.509 certificate parsing and validation
└── output.rs # Result formatting (text, JSON, XML)
# Debug build
cargo build
# Release build with optimizations
cargo build --release
# Run tests
cargo test
# Run with verbose logging
RUST_LOG=tlsferret=debug cargo run -- example.com
Contributions are welcome! Areas for enhancement:
This project is licensed under either of:
at your option.