Browse Source

Clap and README. Shall we switch to AFL: TBD

master
six 6 months ago
parent
commit
fa80435c41
  1. 2
      Cargo.toml
  2. 19
      README.md
  3. 35
      src/main.rs

2
Cargo.toml

@ -8,5 +8,5 @@ edition = "2021" @@ -8,5 +8,5 @@ edition = "2021"
[dependencies]
wasmi = "0.9.1"
wabt = "0.10.0"
clap = "3.0.0-beta.2"
clap = "3.0.0-beta.5"
parity-wasm = "0.42.2"

19
README.md

@ -0,0 +1,19 @@ @@ -0,0 +1,19 @@
# Substrate WASM fuzzer
Community project for fuzzing WASM in Substrate.
Attack model: Attacker payload -> TX -> WASM Execution
## Example
# ./wasmfuzz -f <func> -n <n> -c <contract-file.wasm> -i <fuzzinput>
## Dev tasks
- Fuzzer logic/engine
- Fuzzer input
## Good question
Why don't we just use AFL? We could inject from TX entry func...
https://github.com/rust-fuzz/afl.rs
https://aflplus.plus/

35
src/main.rs

@ -1,6 +1,39 @@ @@ -1,6 +1,39 @@
extern crate clap;
use clap::{Arg, App};
fn main() {
let app = App::new("hello-clap");
let iternum = Arg::with_name("n")
.long("num")
.takes_value(true)
.help("You need to specify the max number of iterations.")
.required(true);
let funcatk = Arg::with_name("f")
.long("func")
.takes_value(true)
.help("You need to specify the function to attack.")
.required(true);
let contractf = Arg::with_name("c")
.long("contract")
.takes_value(true)
.help("You need to specify the contract file's name.")
.required(true);
let app = app.arg(iternum);
let app = app.arg(funcatk);
let app = app.arg(contractf);
let matches = app.get_matches();
let iternumout = matches.value_of("iternum")
.expect("Required option.");
let funcatkout = matches.value_of("funcatk")
.expect("Required option.");
let contractfout = matches.value_of("contractf")
.expect("Required option.");
println!("Your options are: {} {} {}!", iternumout, funcatkout, contractfout);
}

Loading…
Cancel
Save