tftp-symbolic-testing

TFTP Symbolic Testing

Retro-style but modern symbolic testing for TFTP servers.

GitHub repo: konnov/tftp-symbolic-testing


What is this?

TFTP-Symbolic-Testing is an experimental framework for testing TFTP servers (such as classic tftpd-hpa) with symbolic techniques and systematic state-space exploration.

Instead of relying only on hand-written test cases or blind fuzzing, this project lets you:

Think of it as a DIY lab for breaking and understanding TFTP implementations.


When would I use it?

You might want to use this project if you:


How it roughly works

At a high level:

  1. Protocol specification.
    You describe a space of TFTP interactions (e.g., client/server actions, packet fields, timing choices).

  2. Symbolic exploration.
    A back-end engine explores many variants of those interactions, not by brute force, but symbolically / systematically.

  3. Concrete execution against the SUT
    For each interesting path, the framework drives a real TFTP server, running in a container or a controlled environment.

  4. Property checking
    It checks for things like:

    • unexpected server crashes or hangs,
    • surprising responses (e.g., incorrect error codes).

The goal is not to be yet another black-box fuzzer, but to make protocol-specific, structure-aware testing accessible and reusable.


Quick start

For installation and usage details, see the main repository:

git clone https://github.com/konnov/tftp-symbolic-testing.git
cd tftp-symbolic-testing

Then follow instructions in the project’s README.md for:

💡 Tip: If you use Docker, you can keep your SUT and the harness in separate containers connected via a user-defined network. This keeps runs reproducible and easy to script.


Typical use cases


Status & contributions

This is a research / experimental project. Ideas, bug reports, and contributions are welcome:

👉 https://github.com/konnov/tftp-symbolic-testing

If you’re interested in consulting, bespoke test development, or applying this approach to another protocol, feel free to reach out.