A tool that can be used to learn state machines from implementations.
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples Added support to combine queries into one request for socket extension Oct 24, 2018
src/main/java/nl/cypherpunk/statelearner Add check whether number of input and output symbols match. Nov 21, 2018
LICENSE Moved code to Git Sep 20, 2016
README.md Added link to website with state machine inference examples Oct 3, 2017



StateLearner is a tool that can learn state machines from implementations using a black-box approach. It makes use of LearnLib for the learning specific algorithms.

This tool can be used for TLS implementations, smart cards and can be extended using its socket module.

An overview of different security protocols where state machine learning has been applied can be found here.


  • graphviz


Build a self-contained jar file using the following command:

mvn package shade:shade


java -jar stateLearner-0.0.1-SNAPSHOT.jar <configuration file>

Example configurations can be found in the 'examples' directory. To run the OpenSSL example:

cd examples/openssl
java -jar ../../target/stateLearner-0.0.1-SNAPSHOT.jar server.properties


StateLearner (or one of its predecessors) has been used in the following publications: