-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCargo.toml
134 lines (114 loc) · 6.53 KB
/
Cargo.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
[package]
name = "libafl"
version.workspace = true
authors = ["Andrea Fioraldi <[email protected]>", "Dominik Maier <[email protected]>"]
description = "Slot your own fuzzers together and extend their features using Rust"
documentation = "https://docs.rs/libafl"
repository = "https://github.com/AFLplusplus/LibAFL/"
readme = "../README.md"
license = "MIT OR Apache-2.0"
keywords = ["fuzzing", "testing", "security"]
edition = "2021"
categories = ["development-tools::testing", "emulators", "embedded", "os", "no-std"]
[features]
default = ["std", "derive", "llmp_compression", "llmp_small_maps", "llmp_broker_timeouts", "rand_trait", "fork", "prelude", "gzip", "regex"]
std = ["serde_json", "serde_json/std", "hostname", "nix", "serde/std", "bincode", "wait-timeout", "byteorder", "once_cell", "uuid", "tui_monitor", "ctor", "backtrace", "uds", "serial_test"] # print, env, launcher ... support
derive = ["libafl_derive"] # provide derive(SerdeAny) macro.
fork = [] # uses the fork() syscall to spawn children, instead of launching a new command, if supported by the OS (has no effect on Windows, no_std).
rand_trait = ["rand_core"] # If set, libafl's rand implementations will implement `rand::Rng`
introspection = [] # Include performance statistics of the fuzzing pipeline
concolic_mutation = ["z3"] # include a simple concolic mutator based on z3
python = ["pyo3", "concat-idents"]
prelude = [] # Expose libafl::prelude for access without additional using directives
tui_monitor = ["tui", "crossterm"] # enable TuiMonitor with crossterm
prometheus_monitor = ["std", "async-std", "prometheus-client", "tide", "futures"]
cli = ["clap"] # expose bolts::cli for easy commandline parsing
qemu_cli = ["cli"] # Commandline flags for qemu-based fuzzers
frida_cli = ["cli"] # Commandline flags for frida-based fuzzers
afl_exec_sec = [] # calculate exec/sec like AFL
errors_backtrace = ["backtrace"]
cmin = ["z3"] # corpus minimisation
corpus_btreemap = [] # Switches from HashMap to BTreeMap for CorpusId
gzip = ["miniz_oxide"] # Enables gzip compression in certain parts of the lib
regex = ["std", "dep:regex"] # enables the NaiveTokenizer and StacktraceObserver
casr = ["libcasr", "std", "regex"] # enables deduplication based on libcasr for StacktraceObserver
# features hiding dependencies licensed under GPL
gpl = []
# features hiding dependencies licensed under AGPL
agpl = ["gpl", "nautilus"]
nautilus = ["grammartec", "std", "serde_json/std"]
# LLMP features
llmp_bind_public = [] # If set, llmp will bind to 0.0.0.0, allowing cross-device communication. Binds to localhost by default.
llmp_compression = ["gzip"] # llmp compression using GZip
llmp_debug = [] # Enables debug output for LLMP
llmp_small_maps = [] # reduces initial map size for llmp
llmp_broker_timeouts = ["std"] # The broker loop will yield occasionally, even without status messages from client nodes
[build-dependencies]
rustversion = "1.0"
[dev-dependencies]
serde_json = { version = "1.0", default-features = false, features = ["alloc"] }
# clippy-suggested optimised byte counter
bytecount = "0.6.3"
[dependencies]
libafl_derive = { version = "0.10.0", optional = true, path = "../libafl_derive" }
rustversion = "1.0"
tuple_list = { version = "0.1.3" }
hashbrown = { version = "0.13", features = ["serde", "ahash"], default-features=false } # A faster hashmap, nostd compatible
num-traits = { version = "0.2", default-features = false }
xxhash-rust = { version = "0.8.5", features = ["xxh3"] } # xxh3 hashing for rust
serde = { version = "1.0", default-features = false, features = ["alloc", "derive"] } # serialization lib
erased-serde = { version = "0.3.21", default-features = false, features = ["alloc"] } # erased serde
postcard = { version = "1.0", features = ["alloc"] } # no_std compatible serde serialization fromat
bincode = {version = "1.3", optional = true }
static_assertions = "1.1.0"
c2rust-bitfields = { version = "0.17", features = ["no_std"] }
num_enum = { version = "0.5.7", default-features = false }
typed-builder = "0.14" # Implement the builder pattern at compiletime
ahash = { version = "0.8", default-features=false } # The hash function already used in hashbrown
intervaltree = { version = "0.2.7", default-features = false, features = ["serde"] }
backtrace = {version = "0.3", optional = true} # Used to get the stacktrace in StacktraceObserver
ctor = { optional = true, version = "0.1" }
serde_json = { version = "1.0", optional = true, default-features = false, features = ["alloc"] }
miniz_oxide = { version = "0.7.1", optional = true}
hostname = { version = "^0.3", optional = true } # Is there really no gethostname in the stdlib?
rand_core = { version = "0.6", optional = true }
nix = { version = "0.26", optional = true }
regex = { version = "1", optional = true }
uuid = { version = "1.1.2", optional = true, features = ["serde", "v4"] }
byteorder = { version = "1.4", optional = true }
once_cell = { version = "1.13", optional = true }
libm = "0.2.2"
tui = { version = "0.19", default-features = false, features = ['crossterm'], optional = true }
crossterm = { version = "0.26", optional = true }
clap = {version = "4.0", features = ["derive", "wrap_help"], optional = true}
prometheus-client = { version= "0.19", optional = true}
tide = { version = "0.16.0", optional = true }
async-std = { version = "1.8.0", features = ["attributes"], optional = true }
futures = { version = "0.3.24", optional = true }
log = "0.4.17"
wait-timeout = { version = "0.2", optional = true } # used by CommandExecutor to wait for child process
z3 = { version = "0.11", features = ["static-link-z3"], optional = true } # for concolic mutation
pyo3 = { version = "0.17", optional = true, features = ["serde", "macros"] }
concat-idents = { version = "1.1.3", optional = true }
libcasr = { version = "2.5", optional = true}
# optional-dev deps (change when target.'cfg(accessible(::std))'.test-dependencies will be stable)
serial_test = { version = "1", optional = true }
# AGPL
# !!! this create requires nightly
grammartec = { version = "0.3", optional = true }
[target.'cfg(unix)'.dependencies]
libc = "0.2" # For (*nix) libc
uds = { version = "0.2.6", optional = true }
lock_api = "0.4.7"
[target.'cfg(windows)'.dependencies]
windows = { version = "0.44", features = ["Win32_Foundation", "Win32_System_Threading", "Win32_System_Diagnostics_Debug", "Win32_System_Kernel", "Win32_System_Memory", "Win32_Security", "Win32_System_SystemInformation"] }
[target.'cfg(windows)'.build-dependencies]
windows = "0.44"
#[profile.release]
#lto = true
#opt-level = 3
#debug = true
[[example]]
name = "llmp_test"
path = "./examples/llmp_test/main.rs"
required-features = ["std"]