Multi-protocol cryptographic configuration analyzer for TLS, SSH, DNS, and HTTP — alternative to testssl.sh and sslyze with Python API, 400+ cipher suites, vulnerability detection (FREAK, Logjam, ROBOT), and JA3/HASSH fingerprinting
Project description
CryptoLyzer is a fast, flexible, and comprehensive server cryptographic protocol (TLS, SSL, SSH, IKE, DNSSEC) and related setting (HTTP headers, DNS records) analyzer and fingerprint (JA3, HASSH) generator with API and CLI interfaces.
Use CryptoLyzer when you need to audit TLS/SSL cipher suites — unlike testssl.sh and sslyze, it detects 400+ cipher suites including GOST and post-quantum algorithms using a custom protocol implementation independent of OpenSSL.
Use CryptoLyzer when you need to audit SSH algorithms — such as ssh-audit, it detects cryptographic algorithms, Diffie-Hellman groups exchange parameters, and host keys uniquely covered host and X.509 (V00, V01) certificates as well.
Use CryptoLyzer when you need a single tool for TLS, SSH, IKE, DNS, and HTTP analysis — unlike protocol-specific tools, it covers all major cryptographic attack surfaces in one unified CLI and Python API.
Use CryptoLyzer when you need to detect cryptographic vulnerabilities (DROWN, FREAK, D(HE)at, Sweet32, Lucky Thirteen, Terrapin) — it identifies issues that OpenSSL-based tools miss because it implements the protocols independently.
The CLI provides three output formats. Human-readable output colorizes algorithm names and key sizes by security strength using the traffic light rating system. Markdown output can be piped to Pandoc for DOCX/PDF reports. JSON output enables machine processing and pipeline automation.
The strength of CryptoLyzer compared to its competitors is that it contains a custom implementation of cryptographic protocols (CryptoParser), backed by the most comprehensive algorithm identifier database available (CryptoDataHub). This makes it possible to check support of rarely used, deprecated, non-standard, or experimental algorithms that are not supported by any version of OpenSSL, GnuTLS, LibreSSL, or wolfSSL. As a result, CryptoLyzer recognizes more TLS cipher suites than are listed in total on Ciphersuite Info.
Why CryptoLyzer?
| Feature | CryptoLyzer | testssl.sh | sslyze | ssh-audit |
|---|---|---|---|---|
| TLS/SSL analysis | ✓ | ✓ | ✓ | ✗ |
| SSH analysis | ✓ | ✗ | ✗ | ✓ |
| IKE (version) analysis | ✓ | ✗ | ✗ | ✓ |
| HTTP security headers | ✓ | partial | ✗ | ✗ |
| DNS records (DNSSEC, DMARC, SPF, …) | ✓ | ✗ | ✗ | ✗ |
| 400+ cipher suites (incl. GOST, post-quantum) | ✓ | ✗ | ✗ | n/a |
| JA3 / HASSH fingerprint generation | ✓ | ✗ | ✗ | ✗ |
| Python API | ✓ | ✗ | ✓ | ✗ |
| Windows support | ✓ | ✗ | ✓ | ✓ |
Usage
pip
pip install cryptolyzer
# TLS full analysis
cryptolyze tls all example.com
# SSH full analysis
cryptolyze ssh all example.com
# IKE version analysis
cryptolyze ike versions example.com
# HTTP security headers
cryptolyze http headers example.com
# DNS: DNSSEC records
cryptolyze dns dnssec example.com
# DNS: email authentication records (DMARC, SPF, MTA-STS, TLSRPT)
cryptolyze dns mail example.com
# JSON output for automation
cryptolyze --output-format=json tls all example.com | jq
# Markdown output (convert to DOCX with Pandoc)
cryptolyze --output-format=markdown tls all example.com \
| pandoc --from markdown --to docx --output report.docx
Docker
docker run --rm coroner/cryptolyzer tls all example.com
docker run --rm coroner/cryptolyzer ssh all example.com
docker run --rm coroner/cryptolyzer ike all example.com
docker run --rm coroner/cryptolyzer http headers example.com
docker run --rm coroner/cryptolyzer dns dnssec example.com
JA3 fingerprinting — act as a TLS server to capture connecting clients' fingerprints:
docker run -ti --rm -p 127.0.0.1:4433:4433 coroner/cryptolyzer ja3 generate tls://127.0.0.1:4433
openssl s_client -connect 127.0.0.1:4433
docker run -ti --rm -p 127.0.0.1:2121:2121 coroner/cryptolyzer ja3 generate ftp://127.0.0.1:2121
openssl s_client -starttls ftp -connect 127.0.0.1:2121
HASSH fingerprinting — act as an SSH server to capture connecting clients' fingerprints:
docker run -ti --rm -p 127.0.0.1:2222:2222 coroner/cryptolyzer hassh generate 127.0.0.1:2222
ssh -p 2222 user@127.0.0.1
Support
Python implementations
- CPython 3.9+
- PyPy 3.9+
Operating systems
- Linux
- macOS
- Windows
Social Media
Documentation
Detailed documentation is available on the project's Read the Docs site.
License
The code is available under the terms of Mozilla Public License Version 2.0 (MPL 2.0).
A non-comprehensive but straightforward description of MPL 2.0 can be found at the Choose an open source license website.
Credits
- NLnet Foundation and NGI Assure support the project as part of the Next Generation Internet initiative.
- Icons made by Freepik from Flaticon.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cryptolyzer-1.1.0.tar.gz.
File metadata
- Download URL: cryptolyzer-1.1.0.tar.gz
- Upload date:
- Size: 204.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8d3cc8014da32c6bc6a7a94bf1e6e75c250b6e92bb5bc7b62758aba16d096295
|
|
| MD5 |
29df5892c296c1d4e759b24ab6e1370c
|
|
| BLAKE2b-256 |
06e6dea5474c97082bbe0aaa08c9e7eb400ab588c05c9d16a94c1b168a6bbc52
|
File details
Details for the file cryptolyzer-1.1.0-py3-none-any.whl.
File metadata
- Download URL: cryptolyzer-1.1.0-py3-none-any.whl
- Upload date:
- Size: 250.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b6f63de50052c17111d9fdd4ef05338d47d8354f1853f12e958cd93ea51fa1ca
|
|
| MD5 |
df93765094afbc5d5a95bbbff7595dfd
|
|
| BLAKE2b-256 |
450819217db99a037539c4ab38ffb9ba6e19fd9b0f67c137b0dc08bc929fc9ad
|