Skip to main content

PYthon DYnamic SOurce code FUzzing -- an implementation of dynamic fuzzing in Python. (Researchware)

Project description

PyDySoFu - Python Dynamic Source Fuzzer

A library for fuzzing Python functions at runtime.

Contributors

Overview

PyDySoFu is a library for performing source code fuzzing of Python programs at runtime. Fuzzing operations are implemented in an extensible library of fuzzers. The fuzzers can be applied to functions in in two ways:

  • By constructing an Aspect Oriented Programming like advice dictionary, mapping function pointers to fuzzers (recommended).
  • By decorating fuzzable operations with an @fuzz decorator, parameterised with the desired fuzzer.

The AOP approach is preferred because this separates concerns between the implementation of reference functions and the specification of fuzzers, allowing many different fuzzings of the same program to be constructed.

Each fuzzing operator is a function that accepts the body of a work flow function (as a list of statements) and returns a fuzzed list of statements.

Applications

PyDySoFu was originally developed as a fuzzing tool to simulate contingent behaviour in socio-technical systems. However, there are a number of other possible applications:

  • Simulating Byzantine disruption in distributed system testing.
  • Simulations of complex behaviour in distributed systems.
  • Fallible behaviour in human like computing.
  • Modelling physical systems that are not amenable to stochastic analysis due to emergent complexity.

Available Fuzzers

The core library includes both atomic and composite fuzzers for building more complex behaviours:

  • Identity
  • Applying a fuzzer to a subset of function body steps using a filter. Filters provided include:
  • Identity
  • Random selection
  • n last steps
  • Excluding control structures
  • Inverting a selection
  • Removing steps
  • Replacing steps
  • Duplicating steps
  • Inserting extra steps
  • Shuffling steps
  • Applying a sequence of fuzz operators
  • Choosing a random fuzz operator to apply from a probability distribution.
  • Applying a fuzz operator conditionally.
  • Replacing the iterable of a foreach loop
  • Replacing a condition expression
  • Recursing into composite steps
  • Swapping if blocks

A number of demonstrator fuzzers are also provided that combine the core fuzzers described above:

  • Remove last step(s)
  • Duplicate last step
  • Remove random step

Tutorials and Examples

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

PyDySoFu-0.1a2.tar.gz (11.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

PyDySoFu-0.1a2-py2.py3-none-any.whl (11.4 kB view details)

Uploaded Python 2Python 3

File details

Details for the file PyDySoFu-0.1a2.tar.gz.

File metadata

  • Download URL: PyDySoFu-0.1a2.tar.gz
  • Upload date:
  • Size: 11.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/2.7.10

File hashes

Hashes for PyDySoFu-0.1a2.tar.gz
Algorithm Hash digest
SHA256 381dc6708b5c2fdef9eb28b0bcf711c03de3b98f5f3ec8801d16d534e517b95c
MD5 40ab3fb0fb894c7d6938e660f7b6955b
BLAKE2b-256 3a91cf1f16d09ec5876846e01b69e3d04d522577b939f985d2c063c61fcf802e

See more details on using hashes here.

File details

Details for the file PyDySoFu-0.1a2-py2.py3-none-any.whl.

File metadata

  • Download URL: PyDySoFu-0.1a2-py2.py3-none-any.whl
  • Upload date:
  • Size: 11.4 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/2.7.10

File hashes

Hashes for PyDySoFu-0.1a2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 5f0ac145326f0e426ba2f137f47270a9f9f83a031c553f6a05b8b0201590f986
MD5 44e7657878df5be4228f4cdb5ff69730
BLAKE2b-256 5c035891235babf0e70725489d2771ea1827b4890c9b303c728a1ea9180dd2a7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page