Tool

AALpy

General-purpose Python automata-learning library that infers deterministic, non-deterministic, stochastic and pushdown models of black-box systems from active queries or passive traces. Its README links a separate Bluetooth Low Energy study whose repository reports learned connection and legacy-pairing state machines; message formats are not inferred.

Requirements and limitations

  • Latest PyPI release: 1.6.2, uploaded 2026-08-03, requiring Python >=3.6. The reviewed master branch identifies itself as unreleased 2.0.0 and requires Python 3.10+; upstream says 1.6.2 is the last release for older Python versions.
  • Active learning needs a user-written system-under-learning adapter, an input alphabet and an equivalence oracle; passive learning needs traces in the documented format. Learned models are bounded by the chosen alphabet, abstraction and oracle and do not prove complete protocol behavior.
  • pydot is the only Python dependency; visualizing models needs Graphviz on the PATH. MIT-licensed.
  • The ble-learning study repository is separate: it needs an nRF52840 dongle or development kit flashed with the supplied SweynTooth-derived firmware, Python 3.9 and its listed libraries, and it has no repository license file. No learning experiments were run.

About this entry

Type
Tool
Category
Protocol analysis tools
Relationship
Foundation tool
Targets
Protocol

Sources reviewed

The description was reviewed against primary sources. This does not establish runtime testing, security auditing or verified compatibility.

Primary sources

  1. https://github.com/DES-Lab/AALpy/blob/335c50a1b4b5a830d788f86b7c30a8cb6c73ecc0/README.md
  2. https://github.com/DES-Lab/AALpy/blob/335c50a1b4b5a830d788f86b7c30a8cb6c73ecc0/pyproject.toml
  3. https://github.com/DES-Lab/AALpy/blob/335c50a1b4b5a830d788f86b7c30a8cb6c73ecc0/LICENCE.txt
  4. https://github.com/DES-Lab/AALpy/releases/tag/v.1.6.2
  5. https://pypi.org/project/aalpy/1.6.2/
  6. https://github.com/apferscher/ble-learning/blob/febd774109c41a6635659b8847cc766e667841dd/README.md