Skip to main content

# TLSprint

Fingerprint TLS implementations using state machines inferred by [StateLearner](https://github.com/jderuiter/statelearner/). StateLearner can learn state machines for (in this case TLS) implementations using a black-box approach. Different implementations can have a different state machine, which makes it possible to differentiate them. By combining these state machines into a single tree, and then probing a live implementation, tlsprint makes it possible to fingerprint the TLS implementation running on the target.

## Installation

Install the latest release from PyPi:

`shell pip install tlsprint `

## Learn

Note: This step is optional, a model.p is included in the distribution, which contains a model created using 27 unique state machines, representing 283 different TLS implementations. For the full list of implementations, check the models directory in the repository.

After state machines are inferred using StateLearner, run

`shell tlsprint learn <statelearner_output_dir> model.p `

to merge all models together into a single tree. This tree is returned as a pickled networkx graph, and is required for the identify step.

## Identify

When using the default model, identifying the TLS implementation on a target can be done be running

`shell tlsprint identify <target> `

This defaults to port 443, a custom port can be specified by adding –target-port <port>.

The command returns a list of possible implementations. All these implementations share the same model, meaning tlsprint cannot further specify the exact implementation.

Passing –graph-dir <output> to the identify command, will write DOT files for all intermediate versions of the model tree. This can be insightful to understand what tlsprint is doing.

If you learned a custom model using the learn command, you can override the default model using –model <filename>.

Release files for tlsprint 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tlsprint 0.1.0
File Size Uploaded
tlsprint-0.1.0.tar.gz 11.8 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for tlsprint 0.1.0
File Interpreter ABI Platform
tlsprint-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 23.7 MB

Release files / tlsprint-0.1.0.tar.gz

Download URL tlsprint-0.1.0.tar.gz
Size 11.8 MB
Tags Source
SHA-256 checksum
How to use checksums
24840c7dbb0de04008202783259a16d4c76d5ded01b6bb576a17ba9dc56051ba
BLAKE2b-256 checksum
How to use checksums
3c2042b2e03163f3c7ea0ccd895e74f745859242a5f73f9a5745fd8752d81565
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.12.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.29.0 CPython/3.7.2

Release files / tlsprint-0.1.0-py3-none-any.whl

Download URL tlsprint-0.1.0-py3-none-any.whl
Size 11.8 MB
Tags Python 3
SHA-256 checksum
How to use checksums
0840f109d03ca94b53b67362a8f3222e2d54d2d4d3eace552dd88c738321cebe
BLAKE2b-256 checksum
How to use checksums
b0390d25cc88718c4cbaf6b00fc074e8d607241b30bafe72c9b025c69d0e6a5d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.12.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.29.0 CPython/3.7.2

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page