Engine-agnostic HTTP workflow fuzzer core library
Project description
krill-fuzzer
Krill are tiny crustaceans that swarm the ocean in enormous numbers — individually insignificant, collectively they sustain whales. Each mutated test case is a single krill: small, fast, almost trivial — but hundreds of them per parameter can surface vulnerabilities no hand-written test suite would find.
Consume a recorded HTTP workflow and mutate each parameter with security-aware payloads against a running target.
Install
Requires Python 3.10+ and uv.
uv add krill-fuzzer
Record workflows with the companion krill-collector package.
Usage
from krill_fuzzer import fuzz, load_recording
# Load a recording produced by krill-collector
recording = load_recording("logicflow.json")
# Mutate each parameter, execute against the target, evaluate responses
findings = fuzz(recording, "http://target-app.local")
for f in findings:
print(f"[{f.verdict.kind.value}] {f.mutation.parameter_name}={f.mutation.mutated_value!r}")
print(f" {f.mutation.reason} — {f.verdict.reason}")
API
recording ──▶ parse ──▶ mutate ──▶ fuzz
├── execute (HttpExecutor)
└── evaluate (BugOracle)
krill_fuzzer
Root package: one-call fuzzing, lifecycle control, HTTP primitives, and the exception hierarchy.
| Symbol | Type | Description |
|---|---|---|
fuzz(recording, url, config) |
function | One-call fuzzing: parse → run → findings |
Fuzzer(recording, url, config) |
class | Lifecycle control: run(), results() |
FuzzConfig |
dataclass | Tuning knobs: oracle, collector, timeout, classify |
Finding |
dataclass | mutation + execution result + verdict |
FuzzStatus |
dataclass | Progress: total_cases, completed, findings |
classify_parameters |
function | Probe-based parameter classification |
WorkflowInstance |
dataclass | requests, step_order |
HttpMethod / HttpRequest / HttpResponse / HttpExchange |
HTTP primitives (from krill-core) |
|
WorkflowRecording |
dataclass | Recording input (from krill-core) |
save_recording / load_recording |
JSON persistence (from krill-core) |
|
KrillError |
Exception | Base for all krill errors |
PersistenceError |
Exception | Recording serialization failure |
ExtractionError / ModelError / CodecError / ExecutionError / FuzzError |
Exception | Fuzzer-stage failures |
krill_fuzzer.parse · .mutate · .execute · .evaluate
Layer-2 sub-packages for custom pipelines: specification extraction (parse), mutation generation (mutate), sequential HTTP execution (execute), and bug oracles (evaluate).
Documentation
- Docs index — parse, mutate, schedule, execute, evaluate design/spec/impl docs.
- Concept — recording, Value Flow, mutation strategy/scheduler, gate, oracle.
- Agent-consumable documentation index at
docs/llms.txt(llmstxt.org format).
Citation
If you use this project in academic work, please cite our paper. BibTeX (placeholder until the paper is released):
@misc{beluga_placeholder,
title = {{TODO: paper title — not yet released}},
author = {{TODO: authors}},
year = {{TODO}},
note = {Paper not yet released. Citation entry will be updated on publication.}
}
License
GPL-2.0 — see LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file krill_fuzzer-0.1.2.tar.gz.
File metadata
- Download URL: krill_fuzzer-0.1.2.tar.gz
- Upload date:
- Size: 88.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
add99d1af7d376eaa96769327d1972476317d24eac4ad8f6afdaae355fb8f546
|
|
| MD5 |
98e8f3cd355e169d7a6481889dc99d67
|
|
| BLAKE2b-256 |
f004784e225b79a7d2ecf39001c56b3b58b7c931f4a08ccc002c6056433951a9
|
File details
Details for the file krill_fuzzer-0.1.2-py3-none-any.whl.
File metadata
- Download URL: krill_fuzzer-0.1.2-py3-none-any.whl
- Upload date:
- Size: 123.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
52c63d8abf93b9e1c33ffe2a470e495c9ad3e16d5916ccd55934e67599370fe2
|
|
| MD5 |
6e630b5c506d6c7a6387981ddee36690
|
|
| BLAKE2b-256 |
a733b98aa6edc6b3b1276fb8e566b1978c33ce70e40a1c26d6066ee857624bbe
|