Skip to main content

Fingerprint TLS implementations

Project description

# 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>.

Project details


Release history Release notifications

This version

0.1.0

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for tlsprint, version 0.1.0
Filename, size File type Python version Upload date Hashes
Filename, size tlsprint-0.1.0-py3-none-any.whl (11.8 MB) File type Wheel Python version py3 Upload date Hashes View hashes
Filename, size tlsprint-0.1.0.tar.gz (11.8 MB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page