How ocyberlab/chipfuzzer works
ChipFuzzer is a Python harness for checking and fuzzing Matter devices through chip-tool. Its principal workflow loads device configuration, optionally checks reachability and device-specific commands, then reports whether the check passed. Separate basic and ZCL fuzzers generate malformed command inputs; their calls are commented out in the current main entry point, so those branches are shown as optional. The README describes a broader Matter lab, but the sampled source only supports the harness flow shown here.
Main entry points: main.py Main runner · pre_check.py Pre-check · chip_tool_exec.py chip-tool wrapper · basic_fuzzer.py Brightness fuzzer
Components 13
Harness
- Main runner
chip-fuzzer/main.py - Device config
chip-fuzzer/config.yaml - Config model
chip-fuzzer/config.py
Pre-checks
- Pre-check
chip-fuzzer/pre_check.py - Ping monitor
chip-fuzzer/detector/ping_detector.py - Log parser
chip-fuzzer/chip_utils/log_parser.py
Fuzzing
- Brightness fuzzer
chip-fuzzer/basic_fuzzer.py - ZCL fuzzer
chip-fuzzer/zcl_fuzzer.py
Tool execution
- chip-tool wrapper
chip-fuzzer/chip_utils/chip_tool_exec.py
Other components
- Lab operator
- Matter chip-tool
- Matter devices
- ZCL model files
Connections 16
- Lab operator → Main runner: starts
- Main runner → Device config: loads
- Main runner → Config model: constructs
- Main runner → Pre-check: runs optionally
- Main runner → Brightness fuzzer: optional call
- Main runner → ZCL fuzzer: optional call
- Pre-check → Ping monitor: monitors
- Pre-check → chip-tool wrapper: executes checks
- Pre-check → Log parser: checks output
- Brightness fuzzer → chip-tool wrapper: executes fuzz cases
- Brightness fuzzer → Log parser: validates output
- ZCL fuzzer → ZCL model files: edits model
- ZCL fuzzer → chip-tool wrapper: executes fuzz cases
- chip-tool wrapper → Matter chip-tool: runs commands
- Matter chip-tool → Matter devices: sends Matter commands
- Matter devices → Matter chip-tool: returns responses