The main purpose of the GUI application is to simplify the use of the Peach fuzzing framework backend.
It does not provide any extra fuzzing related functions and all its functionality can be achieved by using the standard console Peach application. Moreover the GUI application does not cover every fuzzing configuration, which can be set using the Peach fuzzing framework. It just covers a reasonable subset of its functionality related to the HotFuzz project. GUI is distributed under the same license as the Peach fuzzing framework, so feel free to extend and modify its features.
GUI is completely written in python. There are no platform dependent imports in the source code. It uses the PyQt4 library, which provides bindings for the Nokia's Qt application framework. This makes the GUI application very portable, because the python interpreter and PyQt4 are ported to the vast majority of nowadays operating systems.
To create the code more effectively, we decided to use the Qt Designer to design a skeleton of dialogs. (Qt designer plugin)
The Qt Designer does not directly generate python source files. It generates ui files (These files use an XML format to represent form elements and their characteristics.). Luckily PyQt4 provides us with pyuic4 utility, which is capable of converting the ui files to the python source files. There is also one resource file (GUI/images/resource.qrc) containing informations about used images, which that has to be compiled using the pyrcc4 utility.
To automate these actions use the python script file GUI/build.py or use the make command inside GUI/ directory.
Providing a dialog logic (
Dialogs)
Starting fuzzing and recording external processes (
Main window dialog,
External programs)
Manipulating with fuzzing and recording XMLs (
Main window dialog,
XML manipulation)
Viewing crashes (
Main window dialog,
Action view dialog,
Dump files)
Keeping application
settings (
Application settings,
Main window dialog)
The
project management (
Projects Project Files,
Intro dialog)
Providing undo/redo actions (
Undo Actions,
Main window dialog)
GUI/udpcommunicator.py - Classes used for the communication with Peach
GUI/xmlmanipulators.py - Classes used for the XML processing (loading and storing)
GUI/actionview.py - A logic of the Action View dialog
GUI/dumpreader.py - Classes used to process the crash informations
GUI/globals.py - Global definitions
GUI/hotfuzzplugin.py - Plugins for Qt designer
GUI/hotfuzzwidget.py - Specially modified widgets (for Qt designer and main
window)
GUI/intro.py - A logic of the Intro Dialog
GUI/mutators.py - A class, which links the mutator widget with the element of the XML tree
GUI/preferences.py - A logic of the Preferences Dialog
GUI/project.py - A
project class
GUI/projectinfo.py - A logic of the Project Info Dialog
GUI/projectnew.py - A logic of the Project New Dialog
GUI/projectrecent.py - A logic of the Project Recent Dialog
GUI/settings.py - Application
settings
GUI/shared.py - A file containing
shared non-class functions
GUI/testport.py - A class for testing whether the given port on the given host is accessible
GUI/undoactions.py - Classes for performing GUI undo actions
GUI/window.py - A logic of the Main Window Dialog
GUI/schema/project.xsd - A schema for verification of
project XML files
GUI/images/ - A directory for images
GUI/templates/ - A directory with templates for fuzzing and recording phases and a default
project XML
GUI/ui/ - A directory containing ui files created in the Qt Designer