Overview
Welcome! This project is a research project into how software fuzzing works, the different methods used and how they are written. This project was written in C over the course of two semesters.
The fuzzer is designed to employ random fuzzing, mutation fuzzing, and generational fuzzing methods to try and achieve the highest level of coverage possible.
Key Features
- Random Fuzzing: A technique that generates random inputs to test the robustness of the software.
- Mutation Fuzzing: A method that modifies existing inputs to create new test cases.
- Generational Fuzzing: A strategy that creates new inputs based on existing inputs and their execution paths.
- Intelligent Input Generation: A technique that uses feedback from previous executions to create more effective test cases.
Screenshots
Below is an example of the mutation fuzzer running and discovering new 'interesting inputs' and achieving higher coverage over time.
![Screenshot of [Project Name] in action](images/image.png)
Documentation
- Design Document - Detailed architecture, components, and internal mechanisms.
- Research Document - Background research, related work, and theoretical foundations.
- Functional Specification - Requirements, features, and expected behavior.
Contact
For questions or feedback, you can email me at jackfdevelopment@gmail.com. You can also find my GitHub account here.