Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
137 changes: 137 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
resolver = "3"
members = [
"smite",
"smitebot",
Comment thread
Ashish-Kumar-Dash marked this conversation as resolved.
"smite-ir",
"smite-ir-mutator",
"smite-nyx-sys",
Expand Down Expand Up @@ -29,3 +30,4 @@ postcard = { version = "1.1", default-features = false, features = ["alloc"] }
bitcoin = "0.32"
serde = { version = "1", features = ["derive"] }
thiserror = "2"
serde_json = "1"
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,7 @@ firefox ./$TARGET-$SCENARIO-coverage-report/html/index.html

```
smite/ # Core Rust library (runners, scenarios, noise protocol, BOLT messages)
smitebot/ # Automation CLI (doctor and upcoming campaign orchestration commands)
smite-ir/ # IR types, generators, and mutators for structured fuzzing programs
smite-ir-mutator/ # AFL++ custom mutator cdylib for IR programs
smite-nyx-sys/ # Nyx FFI bindings
Expand Down
2 changes: 1 addition & 1 deletion smite-scenarios/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -24,5 +24,5 @@ bitcoin.workspace = true
hex = "0.4"
libc = "0.2"
serde.workspace = true
serde_json = "1"
serde_json.workspace = true
tempfile = "3"
17 changes: 17 additions & 0 deletions smitebot/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
[package]
name = "smitebot"
version.workspace = true
edition.workspace = true
license.workspace = true

[lints]
workspace = true

[dependencies]
clap = { version = "4.5", features = ["derive"] }
serde.workspace = true
serde_json.workspace = true
thiserror.workspace = true

[dev-dependencies]
tempfile = "3"
58 changes: 58 additions & 0 deletions smitebot/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# smitebot

`smitebot` is the Smite automation CLI. It is intended to orchestrate common fuzzing workflows and reduce manual setup/operations.

## Install

Install `smitebot` once from this repository:

```bash
cargo install --path smitebot
```

After install, run it directly:

```bash
smitebot doctor
smitebot doctor --json
```

## Commands

### smitebot doctor

`smitebot doctor` validates host prerequisites before running Smite campaigns.

```bash
smitebot doctor
smitebot doctor --json
smitebot doctor --aflpp-path ~/AFLplusplus --smite-dir .
Comment thread
Ashish-Kumar-Dash marked this conversation as resolved.
```
Comment thread
Ashish-Kumar-Dash marked this conversation as resolved.

## Checks

- `x86_64` architecture
- CPU virtualization enabled (`vmx` or `svm`)
- `/dev/kvm` is present and openable
- Docker daemon is reachable (`docker info`)
- Required host tools (`bash`, `python3`)
- AFL++ tools (`afl-fuzz`, `afl-cmin`, `afl-tmin`, `afl-whatsup`) available on `PATH` or under `--aflpp-path`
- Nyx packer `hget` exists under AFL++
- `libnyx.so` is found on `LD_LIBRARY_PATH` or under `--aflpp-path`
- VMware backdoor is enabled
- Required Smite scripts are present and executable
- Required workload Dockerfiles are present

## JSON output

By default, output is in a human readable format. The `--json` flag changes output to structured JSON:

```json
{
"checks": [
{ "name": "x86_64 architecture", "passed": true },
{ "name": "Docker daemon reachable", "passed": false, "reason": "docker info exited with status exit status: 1" }
],
"overall": false
}
```
Loading