Andrea Fioraldi 28edbad618
Refactor libafl Python bindings (#632)
* SerdeAny MapFeedbackState

* Fix macro syntax

* alloc

* fix

* Metadata calibrate and map feedback

* metadata feedback states

* compile

* fmt

* Register common generic types

* tests

* sugar

* no_std

* fix book

* alloc

* fix fuzzers

* fix

* fmt

* disable python bindings for libafl

* clippy

* fmt

* fixes

* fmt

* compiling python bindings

* no uaf in python observer

* working python observer, feedback and executor

* mutators

* fmt

* nits

* added autofix script

* clippy

* clippy

* more clippy

* fix

* ignore clippy for deserialization

* newlines

* nits

* fmt

* feedbacks

* generators

* methods

* feedbacks

* pyerr

* fix

* fix

* fmt

* python bindings in CI

* fix

* fix

* fix

* autofix

* clippy

Co-authored-by: Dominik Maier <dmnk@google.com>
2022-05-25 16:56:06 +02:00
..
2022-05-25 16:56:06 +02:00

How to use python bindings

First time setup

# Create environment variable
python -m venv .env 
# Install maturin
pip install maturin

Build bindings

# Activate virtual environment
source .env/bin/activate
# Build python module
maturin develop

This is going to install pylibafl python module.

Use bindings

Example: Running baby_fuzzer in fuzzers/baby_fuzzer/baby_fuzzer.py

First, make sure the python virtual environment is activated. If not, run source .env/bin/activate . Running pip freeze at this point should display the following (versions may differ):

maturin==0.12.6
pylibafl==0.7.0
toml==0.10.2

Then simply run

python PATH_TO_BABY_FUZZER/baby_fuzzer.py

The crashes' directory will be created in the directory from which you ran the command.