This guide covers installing RTOSploit, setting up QEMU, and optionally building the native Rust fuzzer.
| Requirement | Minimum |
|---|---|
| Python | 3.10 or later |
| QEMU | 9.0 or later |
| OS | Linux, macOS, Windows (WSL2 recommended) |
| RAM | 2 GB |
| Disk | 500 MB (plus firmware files) |
git clone https://github.com/Indspl0it/RTOSploit
cd rtosploit
python3 -m venv .venv
source .venv/bin/activate # Linux/macOS
# .venv\Scripts\activate # Windows (PowerShell)# Runtime only
pip install -e .
# With development tools (pytest, mypy, ruff, black)
pip install -e ".[dev]"rtosploit --helpRTOSploit requires QEMU 9.0 or later. Earlier versions will be rejected at runtime.
sudo apt update
sudo apt install qemu-system-arm qemu-system-misc
qemu-system-arm --versionIf the package manager provides an older QEMU, build from source:
# Install build dependencies
sudo apt install build-essential ninja-build pkg-config libglib2.0-dev libpixman-1-dev
# Download and build
wget https://download.qemu.org/qemu-9.2.0.tar.xz
tar xf qemu-9.2.0.tar.xz
cd qemu-9.2.0
./configure --target-list=arm-softmmu,riscv32-softmmu --disable-docs
make -j$(nproc)
sudo make installbrew install qemu
qemu-system-arm --versionUse the Debian/Ubuntu instructions inside a WSL2 environment. RTOSploit's terminal output is fully functional in WSL2 terminals (Windows Terminal, VS Code integrated terminal).
qemu-system-arm --version
# QEMU emulator version 9.x.x (...)If you see a version below 9.0, RTOSploit will print an error and refuse to start QEMU.
For high-speed fuzzing of real hardware firmware (no QEMU machine required):
pip install unicornThis enables the --engine unicorn option on fuzz and rehost commands, providing ~700 exec/sec with Peripheral Input Playback (PIP).
CVE update operations work without an API key, but NIST rate-limits unauthenticated requests. For CI environments or frequent updates, obtain a free API key from https://nvd.nist.gov/developers/request-an-api-key and set it:
export NVD_API_KEY=your-api-key-here
# or add to your shell profileRTOSploit looks for a config file in (precedence order):
~/.config/rtosploit/config.yaml— user-wide defaults.rtosploit.yaml— project-level (current directory)--config PATHflag — explicit override
A minimal config to point at a custom QEMU binary:
qemu:
binary: /usr/local/bin/qemu-system-arm
timeout: 30
logging:
level: infopip uninstall rtosploit
# Remove user config and history
rm -rf ~/.config/rtosploit