A generic fuzzing and delta-debugging framework for generating and reducing structured data using an EBNF-like notation.
Tavor is a framework for implementing and using fuzzing and delta-debugging techniques without writing source code. It uses an EBNF-like notation to define file formats, protocols, and structured data, enabling automated test data generation and failure isolation. The framework decouples algorithms from data formats to support both research and practical testing applications.
Software testers, security researchers, and developers who need to generate test data for complex structured formats like XML, protocols, or custom file formats. It's also suited for researchers exploring new fuzzing or delta-debugging methods who want to avoid reimplementing core algorithms.
Developers choose Tavor because it provides a universal, model-based foundation for fuzzing and delta-debugging without requiring manual code for each data format. Its declarative format definition and extensible architecture allow for custom tokens, strategies, and filters, making it adaptable to specialized testing scenarios.
A generic fuzzing and delta-debugging framework
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses an EBNF-like notation to define complex data structures like XML without writing code, as shown in the quick example for automated test generation.
Supports developing custom tokens, strategies, and filters in Go, allowing adaptation to specialized testing scenarios such as boundary-value analysis.
Combines generation-based fuzzing and delta-debugging in one framework, enabling automated test data generation and failure isolation from a single model.
Decouples algorithms from data formats, making it suitable for researching new fuzzing methods without reimplementing core algorithms, as noted in the philosophy.
The README admits loops are unrolled due to implementation limitations, which can complicate modeling of repetitive or recursive data structures.
Requires understanding of token-based models and formal grammars, which may be challenging for users unfamiliar with EBNF or similar notations.
Precompiled binaries are only provided for Linux, and building from source requires Go, potentially hindering adoption in heterogeneous environments.