KISS Fuzzer UI Integration v0.9.0

Overview

This document describes the integration of the advanced JTAG fuzzing engine with the KISS Fuzzer UI system, providing interactive access to fuzzing commands through the device interface.

Features Added

1. Fuzzing Menu Integration

Added a new “Fuzzing” menu to the main UI with the following options:

  • Pin Discovery - Automatic JTAG pin detection with confidence ratings

  • Random Fuzz - Launch random fuzzing with 100 iterations

  • Boundary Scan - Execute boundary scan fuzzing operation

  • Quick Scan - Perform a quick JTAG chain scan

  • Fuzz Status - Display current fuzzing engine status

  • Command Line - Interactive command selection interface

2. Command Line Interface

Interactive command selection system that allows users to:

  • Navigate through predefined commands using UP/DOWN joystick

  • Execute commands with OK button

  • Return to fuzzing menu with BACK button

Available predefined commands:

  • help - Display help information

  • status - Show fuzzing engine status

  • discover - Run automatic pin discovery

  • scan - Scan JTAG chain for devices

  • fuzz random 100 - Start random fuzzing (100 iterations)

  • fuzz sequential 50 - Start sequential fuzzing (50 iterations)

  • boundary - Execute boundary scan

  • stop - Stop current fuzzing session

3. UI State Management

New UI states added:

  • UI_STATE_FUZZING_MENU - Fuzzing submenu navigation

  • UI_STATE_FUZZING_ACTION - Fuzzing operation in progress

  • UI_STATE_COMMAND_LINE - Command line interface

4. Integration Architecture

The integration follows the modular KISS Fuzzer architecture:

UI Layer (ui.c/h)
    ↓
Command Interface (fuzz_commands.c/h)
    ↓  
Fuzzing Engine (jtag_fuzzer.c/h)
    ↓
JTAG Hardware (jtag.c/h)

5. FreeRTOS Integration

  • Commands execute in the JTAG task context

  • UI updates through inter-task communication

  • Non-blocking operations with progress feedback

  • Safe task synchronization

Usage Instructions

  1. Navigate to Fuzzing Menu

    • From main menu, select “Fuzzing”

    • Use joystick UP/DOWN to navigate options

    • Press OK to select

  2. Quick Operations

    • Select “Pin Discovery” for automatic JTAG detection

    • Select “Quick Scan” for basic chain scanning

    • Select “Random Fuzz” for immediate fuzzing start

  3. Advanced Commands

    • Select “Command Line” for full command access

    • Navigate commands with UP/DOWN

    • Execute with OK button

  4. Monitor Progress

    • Select “Fuzz Status” to check active sessions

    • View real-time statistics and findings

    • Return to main menu anytime with BACK

Technical Implementation

Key Files Modified

  • src/ui.h - Added fuzzing states and function declarations

  • src/ui.c - Implemented fuzzing menu and command integration

  • src/jtag_fuzzer.c - Added missing jtag_fuzzer_scan_chain function

Command Processing Flow

  1. User selects command from UI

  2. UI calls ui_process_command()

  3. Command passed to fuzz_commands_process()

  4. Command executed via fuzzing engine

  5. Results displayed on OLED with status codes

  6. Events logged to storage if available

Error Handling

  • Invalid commands show “INVALID ARGS” status

  • Engine not ready shows “NOT READY” status

  • Busy engine shows “BUSY” status

  • Success operations show “SUCCESS” with details

Future Enhancements

  • Command history navigation

  • Real-time fuzzing progress display

  • Custom command entry (with text input)

  • Fuzzing session management

  • Advanced result visualization

  • Wi-Fi remote control integration

Testing

The integration has been tested with:

  • ✅ Build system compilation

  • ✅ Menu navigation simulation

  • ✅ Command interface validation

  • ✅ FreeRTOS task integration

Ready for hardware testing and real-world validation.