Skip to content
This repository has been archived by the owner on May 1, 2019. It is now read-only.
/ fuzzer Public archive

A Python interface to AFL, allowing for easy injection of testcases and other functionality.

License

Notifications You must be signed in to change notification settings

shellphish/fuzzer

Folders and files

NameName
Last commit message
Last commit date
Sep 14, 2018
Apr 9, 2019
Mar 6, 2019
Jan 28, 2016
Jul 9, 2016
Jun 15, 2017
May 15, 2017
Aug 20, 2016
Sep 18, 2018
Aug 23, 2016
May 17, 2017
Dec 9, 2018

Repository files navigation

Fuzzer

This module provides a Python wrapper for interacting with AFL (American Fuzzy Lop: http://lcamtuf.coredump.cx/afl/). It supports starting an AFL instance, adding slave workers, injecting and retrieving testcases, and checking various performance metrics. Shellphish used it in Mechanical Phish (our CRS for the Cyber Grand Challenge) to interact with AFL.

Installation

/!\ We recommend installing our Python packages in a Python virtual environment. That is how we do it, and you'll likely run into problems if you do it otherwise.

The fuzzer has some dependencies. First, here's a probably-incomplete list of debian packages that might be useful:

sudo apt-get install build-essential gcc-multilib libtool automake autoconf bison debootstrap debian-archive-keyring libtool-bin
sudo apt-get build-dep qemu

Then, the fuzzer also depends on shellphish-afl, which is a pip package that actually includes AFL:

pip install git+https://github.com/shellphish/shellphish-afl

That'll pull a ton of other stuff, compile qemu about 4 times, and set everything up. Then, install this fuzzer wrapper:

pip install git+https://github.com/shellphish/fuzzer

Usage

There are two ways of using this package. The easy way is to use the shellphuzz script, which allows you to specify various options, enable driller, etc. The script has explanations about its usage with --help.

A quick example:

# fuzz with 4 AFL cores
shellphuzz -i -c 4 /path/to/binary

# perform symbolic-assisted fuzzing with 4 AFL cores and 2 symbolic tracing (drilling) cores.
shellphuzz -i -c 4 -d 2 /path/to/binary

You can also use it programmatically, but we have no documentation for that. For now, import fuzzer or look at the shellphuz script and figure it out ;-)

About

A Python interface to AFL, allowing for easy injection of testcases and other functionality.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published