{
  "added_at": "2026-10-17",
  "additional_evidence_urls": [
    "https://github.com/DES-Lab/AALpy/blob/335c50a1b4b5a830d788f86b7c30a8cb6c73ecc0/pyproject.toml",
    "https://github.com/DES-Lab/AALpy/blob/335c50a1b4b5a830d788f86b7c30a8cb6c73ecc0/LICENCE.txt",
    "https://github.com/DES-Lab/AALpy/releases/tag/v.1.6.2",
    "https://pypi.org/project/aalpy/1.6.2/",
    "https://github.com/apferscher/ble-learning/blob/febd774109c41a6635659b8847cc766e667841dd/README.md"
  ],
  "category": "protocol-analysis",
  "description_en": "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.",
  "description_zh": "通用的 Python 自动机学习库，可通过主动查询或被动轨迹数据，推断黑盒系统的确定性、非确定性、随机及下推自动机模型。其 README 链接了一项独立的低功耗蓝牙（BLE）研究，该研究的仓库报告了学习得到的设备连接与传统配对（legacy pairing）状态机；该库本身不推断报文格式。",
  "entry_url": "https://awesomerea.org/resources/aalpy/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/aalpy/",
  "evidence_url": "https://github.com/DES-Lab/AALpy/blob/335c50a1b4b5a830d788f86b7c30a8cb6c73ecc0/README.md",
  "group": "tools",
  "id": "aalpy",
  "json_url": "https://awesomerea.org/resources/aalpy/record.json",
  "kind": "tool",
  "markdown_url": "https://awesomerea.org/resources/aalpy/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/aalpy/index.md",
  "name": "AALpy",
  "name_zh": "AALpy 自动机学习库",
  "record_type": "resource",
  "relationship": "foundation",
  "requirements": [
    "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.",
    "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."
  ],
  "requirements_zh": [
    "PyPI 最新版本为 1.6.2，上传于 2026-08-03，要求 Python >=3.6。所审阅的 master 分支自标为尚未发布的 2.0.0，要求 Python 3.10+；上游说明 1.6.2 是支持旧版 Python 的最后一个版本。",
    "主动学习需要用户编写的被学习系统（SUL）适配器、输入字母表和等价判定器（equivalence oracle）；被动学习需要符合文档格式的轨迹数据。学到的模型受所选字母表、抽象方式和判定器限制。",
    "唯一的 Python 依赖是 pydot；可视化模型需要将 Graphviz 加入 PATH。采用 MIT 许可。",
    "ble-learning 研究仓库独立于本库：需要一块 nRF52840 Dongle 或开发板，并刷入仓库提供的、源自 SweynTooth 的固件，还需要 Python 3.9 和所列依赖库；该仓库没有许可证文件。"
  ],
  "targets": [
    "protocol"
  ],
  "url": "https://github.com/DES-Lab/AALpy",
  "verification": "source-reviewed",
  "verified_at": "2026-10-17"
}
