diff --git a/.gitignore b/.gitignore deleted file mode 100644 index e69de29..0000000 --- a/.gitignore +++ /dev/null diff --git a/README-Fedora b/README-Fedora deleted file mode 100644 index aa3810d..0000000 --- a/README-Fedora +++ /dev/null @@ -1,33 +0,0 @@ -ProxyFuzz is a man-in-the-middle non-deterministic network fuzzer written in -Python. ProxyFuzz randomly changes (fuzzes) contents on the network traffic. -It supports TCP and UDP protocols and can also be configured to fuzz only one -side of the communication. ProxyFuzz is protocol agnostic so it can randomly -fuzz any network communication. - -ProxyFuzz is a good tool for quickly testing network protocols and provide with -basic proof of concepts. Using this tool you will be amazed by the poor quality -of software and you will see clients and servers dying upon unexpected input, -just be prepared to see the very weird behaviours. - -Syntax of ProxyFuzz: - - -ProxyFuzz 0.1, Simple fuzzing proxy by Rodrigo Marcos - -usage(): - -python proxyfuzz -l -r -p [options] - - [options] - - -w: Number of requests to send before start fuzzing - - -c: Fuzz only client side (both otherwise) - - -s: Fuzz only server side (both otherwise) - - -u: UDP protocol (otherwise TCP is used) - - -v: Verbose (outputs network traffic) - - -h: Help page diff --git a/dead.package b/dead.package new file mode 100644 index 0000000..4f59bda --- /dev/null +++ b/dead.package @@ -0,0 +1 @@ +proxyfuzz fails to build from source: https://bugzilla.redhat.com/show_bug.cgi?id=1675687 diff --git a/make-executable.patch b/make-executable.patch deleted file mode 100644 index 087ecaf..0000000 --- a/make-executable.patch +++ /dev/null @@ -1,7 +0,0 @@ ---- a/proxyfuzz.py.txt 2011-08-31 15:58:55.987848740 +0200 -+++ b/proxyfuzz.py.txt 2011-08-31 14:52:40.040845307 +0200 -@@ -1,3 +1,4 @@ -+#!/usr/bin/python - # Proxyfuzz - On the fly TCP and UDP network fuzzer - # Copyright (C) 2011 Rodrigo Marcos - # diff --git a/proxyfuzz.py.txt b/proxyfuzz.py.txt deleted file mode 100644 index fddea09..0000000 --- a/proxyfuzz.py.txt +++ /dev/null @@ -1,243 +0,0 @@ -# Proxyfuzz - On the fly TCP and UDP network fuzzer -# Copyright (C) 2011 Rodrigo Marcos -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# -# Proxyfuzz: a TCP and UDP proxy man-in-the-middle fuzzer -# v 0.1 -# By Rodrigo Marcos -# http://www.secforce.co.uk - -from twisted.protocols import portforward -from twisted.internet.protocol import DatagramProtocol -from twisted.internet import reactor -import getopt, sys -from random import randint - - -# UDP Proxy stuff - -class Client(DatagramProtocol): - def __init__(self, server, host, port): - self.server = server - self.host = host - self.port = port - - def startProtocol(self): - self.transport.connect(desthost, destport) - - def datagramReceived(self, data, (host, port)): - global verbose - global notuntil - global request - global testclient - - if testclient: - if request < notuntil: - request = request + 1 - else: - data = fuzz(data) - if verbose: - print "Server ------> Client" - print "%r" % data - - self.server.transport.write(data, (self.host, self.port)) - -class Server(DatagramProtocol): - client = None - - def datagramReceived(self, data, (host, port)): - if not self.client or self.client.host != host or self.client.port != port: - self.client = Client(self, host, port) - reactor.listenUDP(0, self.client) - - global verbose - global notuntil - global request - global testserver - - if testserver: - if request < notuntil: - request = request + 1 - else: - data = fuzz(data) - if verbose: - print "Client ------> Server" - print "%r" % data - self.client.transport.write(data, (desthost, destport)) - -# TCP proxy stuff - -def server_dataReceived(self, data): - global verbose - global notuntil - global request - global testserver - - if testserver: - if request < notuntil: - request = request + 1 - else: - data = fuzz(data) - - if verbose: - print "Client ------> server" - print "%r" % data - - portforward.Proxy.dataReceived(self, data) - -portforward.ProxyServer.dataReceived = server_dataReceived - -def client_dataReceived(self, data): - global verbose - global notuntil - global request - global testclient - - if testclient: - if request < notuntil: - request = request + 1 - else: - data = fuzz(data) - if verbose: - print "Server ------> Client" - print "%r" % data - - portforward.Proxy.dataReceived(self, data) - -portforward.ProxyClient.dataReceived = client_dataReceived - - -overflowstrings = ["A" * 255, "A" * 256, "A" * 257, "A" * 420, "A" * 511, "A" * 512, "A" * 1023, "A" * 1024, "A" * 2047, "A" * 2048, "A" * 4096, "A" * 4097, "A" * 5000, "A" * 10000, "A" * 20000, "A" * 32762, "A" * 32763, "A" * 32764, "A" * 32765, "A" * 32766, "A" * 32767, "A" * 32768, "A" * 65534, "A" * 65535, "A" * 65536, "%x" * 1024, "%n" * 1025 , "%s" * 2048, "%s%n%x%d" * 5000, "%s" * 30000, "%s" * 40000, "%.1024d", "%.2048d", "%.4096d", "%.8200d", "%99999999999s", "%99999999999d", "%99999999999x", "%99999999999n", "%99999999999s" * 1000, "%99999999999d" * 1000, "%99999999999x" * 1000, "%99999999999n" * 1000, "%08x" * 100, "%%20s" * 1000,"%%20x" * 1000,"%%20n" * 1000,"%%20d" * 1000, "%#0123456x%08x%x%s%p%n%d%o%u%c%h%l%q%j%z%Z%t%i%e%g%f%a%C%S%08x%%#0123456x%%x%%s%%p%%n%%d%%o%%u%%c%%h%%l%%q%%j%%z%%Z%%t%%i%%e%%g%%f%%a%%C%%S%%08x"] - -def bitflipping(data): - l = len(data) - n = int(l*7/100) # 7% of the bytes to be modified - - for i in range(0,n): # We change the bytes - r = randint(0,l-1) - data = data[0:r] + chr(randint(0,255)) + data[r+1:] - return data - -def bofinjection(data): - l = len(data) - r = randint(0,len(overflowstrings)-1) - data = data[0:r] + overflowstrings[r] + data[r-l:] - return data - -def fuzz(data): - - r = randint(0,5) - if r==0: - data = bitflipping(data) - - r = randint(0,5) - if r==0: - data = bofinjection(data) - return data - -def startudpproxy(): - reactor.listenUDP(localport, Server()) - reactor.run() - -def starttcpproxy(): - reactor.listenTCP(localport, portforward.ProxyFactory(desthost, destport)) - reactor.run() - -def usage(): - #print "###############################################################" - print - print "ProxyFuzz 0.1, Simple fuzzing proxy by Rodrigo Marcos" - print "http://www.secforce.co.uk" - print - print "usage():" - #print - print "python proxyfuzz -l -r -p [options]" - print - print " [options]" - print " -c: Fuzz only client side (both otherwise)" - print " -s: Fuzz only server side (both otherwise)" - print " -w: Number of requests to send before start fuzzing" - print " -u: UDP protocol (otherwise TCP is used)" - print " -v: Verbose (outputs network traffic)" - print " -h: Help page" - - -verbose = False -notuntil = 0 -request = 0 -proto = "tcp" -localport = 0 -desthost = "" -destport = 0 -testclient = 1 -testserver = 1 -def main(): - global verbose - global notuntil - global proto - global localport - global desthost - global destport - global testclient - global testserver - - try: - opts, args = getopt.getopt(sys.argv[1:], "uvhcsl:r:p:w:", ["help"]) - except getopt.GetoptError: - usage() - sys.exit(2) - try: - for o, a in opts: - if o in ("-h", "--help"): - usage() - sys.exit() - if o == "-l": - localport=int(a) - if o == "-r": - desthost=a - if o == "-p": - destport=int(a) - if o == "-v": - verbose = True - if o == "-w": - notuntil=int(a) - if o == "-u": - proto="udp" - if o == "-c": # Only client - testserver=0 - if o == "-s": # Only server - testclient=0 - - - except: - usage() - sys.exit(2) - - if testserver==0 and testclient==0: - usage() - sys.exit(2) - elif localport==0 or desthost=="" or destport==0: - usage() - sys.exit(2) - else: - if proto=="tcp": - starttcpproxy() - else: # UDP - startudpproxy() - -if __name__ == "__main__": - main() - - diff --git a/proxyfuzz.spec b/proxyfuzz.spec deleted file mode 100644 index 054e229..0000000 --- a/proxyfuzz.spec +++ /dev/null @@ -1,101 +0,0 @@ -%{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")} -Name: proxyfuzz -Version: 20110923 -Release: 14%{?dist} -Summary: Man-in-the-middle non-deterministic network fuzzer - -License: GPLv3+ -URL: http://www.secforce.co.uk/research/tools.html -Source0: http://www.secforce.co.uk/media/tools/proxyfuzz.py.txt -Source1: README-Fedora - -BuildArch: noarch -Requires: python2-twisted -BuildRequires: python2-devel -%if 0%{?with_python3} -BuildRequires: python3-devel -%endif # if with_python3 - -Patch0: make-executable.patch - -%description -ProxyFuzz is a man-in-the-middle non-deterministic network fuzzier written in -Python. ProxyFuzz randomly changes (fuzzes) contents on the network traffic. -It supports TCP and UDP protocols and can also be configured to fuzz only one -side of the communication. ProxyFuzz is protocol agnostic so it can randomly -fuzz any network communication. - -%prep -cp -p %{SOURCE0} . -cp -p %{SOURCE1} . -%patch0 -p1 -b .make-executable - -%build - -%install -rm -rf $RPM_BUILD_ROOT -install -m 755 -p -d ${RPM_BUILD_ROOT}/%{_sbindir} -install -m 755 -p proxyfuzz.py.txt ${RPM_BUILD_ROOT}/%{_sbindir}/proxyfuzz - - - -%files -%doc README-Fedora -%{_sbindir}/proxyfuzz - - -%changelog -* Fri Jul 26 2019 Fedora Release Engineering - 20110923-14 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild - -* Sat Feb 02 2019 Fedora Release Engineering - 20110923-13 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild - -* Fri Jul 13 2018 Fedora Release Engineering - 20110923-12 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild - -* Fri Feb 09 2018 Fedora Release Engineering - 20110923-11 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild - -* Wed Feb 07 2018 Iryna Shcherbina - 20110923-10 -- Update Python 2 dependency declarations to new packaging standards - (See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3) - -* Thu Jul 27 2017 Fedora Release Engineering - 20110923-9 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild - -* Sat Feb 11 2017 Fedora Release Engineering - 20110923-8 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild - -* Thu Feb 04 2016 Fedora Release Engineering - 20110923-7 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild - -* Thu Jun 18 2015 Fedora Release Engineering - 20110923-6 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild - -* Sat Jun 07 2014 Fedora Release Engineering - 20110923-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild - -* Sun Aug 04 2013 Fedora Release Engineering - 20110923-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild - -* Thu Feb 14 2013 Fedora Release Engineering - 20110923-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild - -* Sat Jul 21 2012 Fedora Release Engineering - 20110923-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild - -* Mon Jan 2 2012 Petr Sklenar 20110923-1 -- version changed -- released changed - -* Thu Oct 13 2011 Petr Sklenar 0.1-20110923 -- version changed -- spec file improved -- README-Fedora created - -* Wed Sep 7 2011 Petr Sklenar 1-2 -- make script being executable - -* Wed Aug 31 2011 Petr Sklenar 1-1 -- Initial commit diff --git a/sources b/sources deleted file mode 100644 index e69de29..0000000 --- a/sources +++ /dev/null