{ "info": { "author": "Tom Wallis and Tim Storer", "author_email": "w.wallis.1@research.gla.ac.uk", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy" ], "description": "# PyDySoFu - Python Dynamic Source Fuzzer\n\nA library for fuzzing Python functions at runtime.\n\n## Contributors\n\n* Tom Wallis
\n School of Computing Science, University of Glasgow
\n GitHub ID: probablytom\n [twallisgm@googlemail.com](mailto:twallisgm@googlemail.com)\n\n* Tim Storer
\n School of Computing Science, University of Glasgow
\n GitHub ID: twsswt\n [timothy.storer@glagow.ac.uk](mailto:timothy.storer@glagow.ac.uk)\n\n## Overview\n\nPyDySoFu is a library for performing source code fuzzing of Python programs at runtime. Fuzzing operations are\nimplemented in an extensible library of fuzzers. The fuzzers can be applied to functions in in two ways:\n\n * By constructing an Aspect Oriented Programming like advice dictionary, mapping function pointers to fuzzers\n (recommended).\n * By decorating fuzzable operations with an @fuzz decorator, parameterised with the desired fuzzer.\n\nThe AOP approach is preferred because this separates concerns between the implementation of reference functions and the\nspecification of fuzzers, allowing many different fuzzings of the same program to be constructed.\n\nEach fuzzing operator is a function that accepts the body of a work flow function (as a list of statements) and returns\na fuzzed list of statements.\n\n## Applications\n\nPyDySoFu was originally developed as a fuzzing tool to simulate contingent behaviour in socio-technical systems.\nHowever, there are a number of other possible applications:\n\n * Simulating Byzantine disruption in distributed system testing.\n * Simulations of complex behaviour in distributed systems.\n * Fallible behaviour in human like computing.\n * Modelling physical systems that are not amenable to stochastic analysis due to emergent complexity. \n\n## Available Fuzzers\n\nThe core library includes both atomic and composite fuzzers for building more complex behaviours:\n\n * Identity\n * Applying a fuzzer to a subset of function body steps using a filter. Filters provided include:\n * Identity\n * Random selection\n * n last steps\n * Excluding control structures\n * Inverting a selection\n * Removing steps\n * Replacing steps\n * Duplicating steps\n * Inserting extra steps\n * Shuffling steps\n * Applying a sequence of fuzz operators\n * Choosing a random fuzz operator to apply from a probability distribution.\n * Applying a fuzz operator conditionally.\n * Replacing the iterable of a foreach loop\n * Replacing a condition expression\n * Recursing into composite steps\n * Swapping if blocks\n\nA number of demonstrator fuzzers are also provided that combine the core fuzzers described above:\n\n* Remove last step(s)\n* Duplicate last step\n* Remove random step\n\n## Tutorials and Examples\n\n * There is a Jupyter Notebook tutorial available [./tutorial.ipynb](./tutorial.ipynb).\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://probablytom.com/", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "PyDySoFu", "package_url": "https://pypi.org/project/PyDySoFu/", "platform": "", "project_url": "https://pypi.org/project/PyDySoFu/", "project_urls": { "Homepage": "http://probablytom.com/" }, "release_url": "https://pypi.org/project/PyDySoFu/0.1a3/", "requires_dist": [ "drawer" ], "requires_python": "<3", "summary": "PYthon DYnamic SOurce code FUzzing -- an implementation of dynamic fuzzing in Python. (Researchware)", "version": "0.1a3" }, "last_serial": 5803247, "releases": { "0.1a1": [ { "comment_text": "", "digests": { "md5": "433f6acbc1f675b9cef78838d38e2d2d", "sha256": "98474f0c8e11587090948084180bfaaa5dfb428c3791cc02cde0510a753118bb" }, "downloads": -1, "filename": "PyDySoFu-0.1a1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "433f6acbc1f675b9cef78838d38e2d2d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": "<3", "size": 11102, "upload_time": "2019-03-25T17:25:29", "url": "https://files.pythonhosted.org/packages/bc/e3/737c7ab54fb6aa25dba89f8de91947e6e76d57e91ad899cee083b8c79816/PyDySoFu-0.1a1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5a71e0686308c90b73079c59114e64c3", "sha256": "608bb573b0bed1398637cc8d05de8bdcbfbc9087d846b20599c085418f68ae13" }, "downloads": -1, "filename": "PyDySoFu-0.1a1.tar.gz", "has_sig": false, "md5_digest": "5a71e0686308c90b73079c59114e64c3", "packagetype": "sdist", "python_version": "source", "requires_python": "<3", "size": 11123, "upload_time": "2019-03-25T17:25:31", "url": "https://files.pythonhosted.org/packages/70/9d/48529aeba22bf1702269185b7e4e309495edbda7586ce689062414a5f8fb/PyDySoFu-0.1a1.tar.gz" } ], "0.1a2": [ { "comment_text": "", "digests": { "md5": "44e7657878df5be4228f4cdb5ff69730", "sha256": "5f0ac145326f0e426ba2f137f47270a9f9f83a031c553f6a05b8b0201590f986" }, "downloads": -1, "filename": "PyDySoFu-0.1a2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "44e7657878df5be4228f4cdb5ff69730", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": "<3", "size": 11442, "upload_time": "2019-04-01T10:32:10", "url": "https://files.pythonhosted.org/packages/5c/03/5891235babf0e70725489d2771ea1827b4890c9b303c728a1ea9180dd2a7/PyDySoFu-0.1a2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "40ab3fb0fb894c7d6938e660f7b6955b", "sha256": "381dc6708b5c2fdef9eb28b0bcf711c03de3b98f5f3ec8801d16d534e517b95c" }, "downloads": -1, "filename": "PyDySoFu-0.1a2.tar.gz", "has_sig": false, "md5_digest": "40ab3fb0fb894c7d6938e660f7b6955b", "packagetype": "sdist", "python_version": "source", "requires_python": "<3", "size": 11422, "upload_time": "2019-04-01T10:32:12", "url": "https://files.pythonhosted.org/packages/3a/91/cf1f16d09ec5876846e01b69e3d04d522577b939f985d2c063c61fcf802e/PyDySoFu-0.1a2.tar.gz" } ], "0.1a3": [ { "comment_text": "", "digests": { "md5": "9a3d0cecc59b51ac312b27198ee32043", "sha256": "b60d859fe46cfb72e7a0461675feb8d02f11394344a31857b15f38c041adffed" }, "downloads": -1, "filename": "PyDySoFu-0.1a3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9a3d0cecc59b51ac312b27198ee32043", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": "<3", "size": 11442, "upload_time": "2019-09-09T11:51:01", "url": "https://files.pythonhosted.org/packages/78/cc/feeea5fb20c5e4cb91a0ea0fba00b196f52f646553d864ff408bc54cb99a/PyDySoFu-0.1a3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cd388daf65575ba9933a5100bf3a4ff8", "sha256": "46b50864d250673c7baebb3556c7710bb06219f2cefd3fff629b693b224c7e60" }, "downloads": -1, "filename": "PyDySoFu-0.1a3.tar.gz", "has_sig": false, "md5_digest": "cd388daf65575ba9933a5100bf3a4ff8", "packagetype": "sdist", "python_version": "source", "requires_python": "<3", "size": 11370, "upload_time": "2019-09-09T11:51:03", "url": "https://files.pythonhosted.org/packages/52/58/696986e3879d1c4a16c894b9597dda9e1a40589e99be581a47829520f657/PyDySoFu-0.1a3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9a3d0cecc59b51ac312b27198ee32043", "sha256": "b60d859fe46cfb72e7a0461675feb8d02f11394344a31857b15f38c041adffed" }, "downloads": -1, "filename": "PyDySoFu-0.1a3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9a3d0cecc59b51ac312b27198ee32043", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": "<3", "size": 11442, "upload_time": "2019-09-09T11:51:01", "url": "https://files.pythonhosted.org/packages/78/cc/feeea5fb20c5e4cb91a0ea0fba00b196f52f646553d864ff408bc54cb99a/PyDySoFu-0.1a3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cd388daf65575ba9933a5100bf3a4ff8", "sha256": "46b50864d250673c7baebb3556c7710bb06219f2cefd3fff629b693b224c7e60" }, "downloads": -1, "filename": "PyDySoFu-0.1a3.tar.gz", "has_sig": false, "md5_digest": "cd388daf65575ba9933a5100bf3a4ff8", "packagetype": "sdist", "python_version": "source", "requires_python": "<3", "size": 11370, "upload_time": "2019-09-09T11:51:03", "url": "https://files.pythonhosted.org/packages/52/58/696986e3879d1c4a16c894b9597dda9e1a40589e99be581a47829520f657/PyDySoFu-0.1a3.tar.gz" } ] }