From 81552d4c8f9cec8777a6d0e0257ce22c496666d6 Mon Sep 17 00:00:00 2001 From: Jason Tibbitts Date: Tue, 10 Jul 2018 02:15:34 -0500 Subject: [PATCH 01/36] Remove needless use of %defattr --- proxyfuzz.spec | 1 - 1 file changed, 1 deletion(-) diff --git a/proxyfuzz.spec b/proxyfuzz.spec index 96937de..28e72df 100644 --- a/proxyfuzz.spec +++ b/proxyfuzz.spec @@ -41,7 +41,6 @@ install -m 755 -p proxyfuzz.py.txt ${RPM_BUILD_ROOT}/%{_sbindir}/proxyfuzz %files -%defattr(-,root,root,-) %doc README-Fedora %{_sbindir}/proxyfuzz From 9f8927f835c6319d305c35f9a346e68535026a52 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 13 Jul 2018 22:54:26 +0000 Subject: [PATCH 02/36] - Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- proxyfuzz.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/proxyfuzz.spec b/proxyfuzz.spec index 28e72df..f2576b2 100644 --- a/proxyfuzz.spec +++ b/proxyfuzz.spec @@ -1,7 +1,7 @@ %{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")} Name: proxyfuzz Version: 20110923 -Release: 11%{?dist} +Release: 12%{?dist} Summary: Man-in-the-middle non-deterministic network fuzzer Group: Applications/Internet @@ -46,6 +46,9 @@ install -m 755 -p proxyfuzz.py.txt ${RPM_BUILD_ROOT}/%{_sbindir}/proxyfuzz %changelog +* 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 From 097eb0d4a521e51294c7444b7f762704d504fe9e Mon Sep 17 00:00:00 2001 From: Igor Gnatenko Date: Mon, 28 Jan 2019 20:18:13 +0100 Subject: [PATCH 03/36] Remove obsolete Group tag References: https://fedoraproject.org/wiki/Changes/Remove_Group_Tag --- proxyfuzz.spec | 1 - 1 file changed, 1 deletion(-) diff --git a/proxyfuzz.spec b/proxyfuzz.spec index f2576b2..4bb3704 100644 --- a/proxyfuzz.spec +++ b/proxyfuzz.spec @@ -4,7 +4,6 @@ Version: 20110923 Release: 12%{?dist} Summary: Man-in-the-middle non-deterministic network fuzzer -Group: Applications/Internet License: GPLv3+ URL: http://www.secforce.co.uk/research/tools.html Source0: http://www.secforce.co.uk/media/tools/proxyfuzz.py.txt From 02a27b31c80a8467b5131ec45c1044c2c23bc74e Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 2 Feb 2019 04:53:00 +0000 Subject: [PATCH 04/36] - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- proxyfuzz.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/proxyfuzz.spec b/proxyfuzz.spec index 4bb3704..e50642e 100644 --- a/proxyfuzz.spec +++ b/proxyfuzz.spec @@ -1,7 +1,7 @@ %{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")} Name: proxyfuzz Version: 20110923 -Release: 12%{?dist} +Release: 13%{?dist} Summary: Man-in-the-middle non-deterministic network fuzzer License: GPLv3+ @@ -45,6 +45,9 @@ install -m 755 -p proxyfuzz.py.txt ${RPM_BUILD_ROOT}/%{_sbindir}/proxyfuzz %changelog +* 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 From a14477598a8b54b3fac53e62d341287a9d183171 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 26 Jul 2019 11:22:54 +0000 Subject: [PATCH 05/36] - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- proxyfuzz.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/proxyfuzz.spec b/proxyfuzz.spec index e50642e..054e229 100644 --- a/proxyfuzz.spec +++ b/proxyfuzz.spec @@ -1,7 +1,7 @@ %{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")} Name: proxyfuzz Version: 20110923 -Release: 13%{?dist} +Release: 14%{?dist} Summary: Man-in-the-middle non-deterministic network fuzzer License: GPLv3+ @@ -45,6 +45,9 @@ install -m 755 -p proxyfuzz.py.txt ${RPM_BUILD_ROOT}/%{_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 From 9be1a40e455cdf2e1cfac12821d1d59eb6593f34 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 8 Aug 2019 16:18:21 +0000 Subject: [PATCH 06/36] proxyfuzz fails to build from source: https://bugzilla.redhat.com/show_bug.cgi?id=1675687 --- .gitignore | 0 README-Fedora | 33 ------ dead.package | 1 + make-executable.patch | 7 -- proxyfuzz.py.txt | 243 ------------------------------------------ proxyfuzz.spec | 101 ------------------ sources | 0 7 files changed, 1 insertion(+), 384 deletions(-) delete mode 100644 .gitignore delete mode 100644 README-Fedora create mode 100644 dead.package delete mode 100644 make-executable.patch delete mode 100644 proxyfuzz.py.txt delete mode 100644 proxyfuzz.spec delete mode 100644 sources diff --git a/.gitignore b/.gitignore deleted file mode 100644 index e69de29..0000000 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 From 570f51b5165f361b59505c2d7748885bcc9958e6 Mon Sep 17 00:00:00 2001 From: Petr Sklenar Date: Wed, 13 Nov 2019 10:29:38 +0100 Subject: [PATCH 07/36] python shebang added, built fixed --- README-Fedora | 33 ++++++ dead.package | 1 - make-executable.patch | 7 ++ proxyfuzz.py.txt | 243 ++++++++++++++++++++++++++++++++++++++++++ proxyfuzz.spec | 98 +++++++++++++++++ sources | 0 6 files changed, 381 insertions(+), 1 deletion(-) create mode 100644 README-Fedora delete mode 100644 dead.package create mode 100644 make-executable.patch create mode 100644 proxyfuzz.py.txt create mode 100644 proxyfuzz.spec create mode 100644 sources diff --git a/README-Fedora b/README-Fedora new file mode 100644 index 0000000..aa3810d --- /dev/null +++ b/README-Fedora @@ -0,0 +1,33 @@ +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 deleted file mode 100644 index 4f59bda..0000000 --- a/dead.package +++ /dev/null @@ -1 +0,0 @@ -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 new file mode 100644 index 0000000..087ecaf --- /dev/null +++ b/make-executable.patch @@ -0,0 +1,7 @@ +--- 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 new file mode 100644 index 0000000..fddea09 --- /dev/null +++ b/proxyfuzz.py.txt @@ -0,0 +1,243 @@ +# 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 new file mode 100644 index 0000000..e50642e --- /dev/null +++ b/proxyfuzz.spec @@ -0,0 +1,98 @@ +%{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")} +Name: proxyfuzz +Version: 20110923 +Release: 13%{?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 +* 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 new file mode 100644 index 0000000..e69de29 From 62a14b15dbbe809043564d2e9388084a00d499c9 Mon Sep 17 00:00:00 2001 From: Petr Sklenar Date: Wed, 13 Nov 2019 10:31:41 +0100 Subject: [PATCH 08/36] built fixed --- proxyfuzz.py.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/proxyfuzz.py.txt b/proxyfuzz.py.txt index fddea09..1023586 100644 --- a/proxyfuzz.py.txt +++ b/proxyfuzz.py.txt @@ -1,3 +1,4 @@ +#!/usr/bin/python2 # Proxyfuzz - On the fly TCP and UDP network fuzzer # Copyright (C) 2011 Rodrigo Marcos # From ad19ca1e239542ef4c570e7e70797ce2834de400 Mon Sep 17 00:00:00 2001 From: Petr Sklenar Date: Wed, 13 Nov 2019 10:44:52 +0100 Subject: [PATCH 09/36] build fixed --- make-executable.patch | 7 ------- 1 file changed, 7 deletions(-) delete mode 100644 make-executable.patch 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 - # From b7e3e332126a9d42ce3552d8fb51622fc83ccda1 Mon Sep 17 00:00:00 2001 From: Petr Sklenar Date: Wed, 13 Nov 2019 10:45:51 +0100 Subject: [PATCH 10/36] built for f31 fixed --- proxyfuzz.spec | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/proxyfuzz.spec b/proxyfuzz.spec index e50642e..429e980 100644 --- a/proxyfuzz.spec +++ b/proxyfuzz.spec @@ -26,9 +26,9 @@ 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 +#cp -p %{SOURCE0} . +#cp -p %{SOURCE1} . +#%patch0 -p1 -b .make-executable %build From 4cc3dd5c55ea887a9b5232d90f94cac2fe5291e9 Mon Sep 17 00:00:00 2001 From: Petr Sklenar Date: Wed, 13 Nov 2019 10:53:47 +0100 Subject: [PATCH 11/36] build fixed --- proxyfuzz.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proxyfuzz.spec b/proxyfuzz.spec index 429e980..e83b617 100644 --- a/proxyfuzz.spec +++ b/proxyfuzz.spec @@ -16,7 +16,7 @@ BuildRequires: python2-devel BuildRequires: python3-devel %endif # if with_python3 -Patch0: make-executable.patch +#Patch0: make-executable.patch %description ProxyFuzz is a man-in-the-middle non-deterministic network fuzzier written in From 7c8d3edaf2411cf22313ab5af20f7d30eaac950d Mon Sep 17 00:00:00 2001 From: Petr Sklenar Date: Wed, 13 Nov 2019 11:00:15 +0100 Subject: [PATCH 12/36] f30 build issues --- proxyfuzz.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/proxyfuzz.spec b/proxyfuzz.spec index e83b617..76c9720 100644 --- a/proxyfuzz.spec +++ b/proxyfuzz.spec @@ -26,8 +26,8 @@ side of the communication. ProxyFuzz is protocol agnostic so it can randomly fuzz any network communication. %prep -#cp -p %{SOURCE0} . -#cp -p %{SOURCE1} . +cp -p %{SOURCE0} . +cp -p %{SOURCE1} . #%patch0 -p1 -b .make-executable %build From 353352c2e53d0f311dea54253f59ecce54e4a7c2 Mon Sep 17 00:00:00 2001 From: Petr Sklenar Date: Thu, 14 Nov 2019 10:18:09 +0100 Subject: [PATCH 13/36] used python3 now --- proxyfuzz.py.txt | 244 ----------------------------------------------- proxyfuzz.spec | 8 +- 2 files changed, 4 insertions(+), 248 deletions(-) delete mode 100644 proxyfuzz.py.txt diff --git a/proxyfuzz.py.txt b/proxyfuzz.py.txt deleted file mode 100644 index 1023586..0000000 --- a/proxyfuzz.py.txt +++ /dev/null @@ -1,244 +0,0 @@ -#!/usr/bin/python2 -# 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 index 76c9720..e54e1ec 100644 --- a/proxyfuzz.spec +++ b/proxyfuzz.spec @@ -5,13 +5,13 @@ Release: 13%{?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 +URL: https://github.com/SECFORCE +Source0: https://raw.githubusercontent.com/SECFORCE/proxyfuzz/master/proxyfuzz.py Source1: README-Fedora BuildArch: noarch -Requires: python2-twisted -BuildRequires: python2-devel +Requires: python3-twisted +BuildRequires: python3-devel %if 0%{?with_python3} BuildRequires: python3-devel %endif # if with_python3 From 09061f64b8031e263ebbfcbf9ba7e4a6c9edae46 Mon Sep 17 00:00:00 2001 From: Petr Sklenar Date: Thu, 14 Nov 2019 10:23:04 +0100 Subject: [PATCH 14/36] bump the version --- proxyfuzz.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/proxyfuzz.spec b/proxyfuzz.spec index e54e1ec..09b8da3 100644 --- a/proxyfuzz.spec +++ b/proxyfuzz.spec @@ -1,7 +1,7 @@ %{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")} Name: proxyfuzz -Version: 20110923 -Release: 13%{?dist} +Version: 20190404 +Release: 14%{?dist} Summary: Man-in-the-middle non-deterministic network fuzzer License: GPLv3+ From b082022bf428f320b2b0c8dc83e0f7476327e72a Mon Sep 17 00:00:00 2001 From: Petr Sklenar Date: Thu, 14 Nov 2019 10:30:58 +0100 Subject: [PATCH 15/36] sources changed --- proxyfuzz.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/proxyfuzz.spec b/proxyfuzz.spec index 09b8da3..b8943a0 100644 --- a/proxyfuzz.spec +++ b/proxyfuzz.spec @@ -26,8 +26,8 @@ side of the communication. ProxyFuzz is protocol agnostic so it can randomly fuzz any network communication. %prep -cp -p %{SOURCE0} . -cp -p %{SOURCE1} . +#cp -p %{SOURCE0} . +#cp -p %{SOURCE1} . #%patch0 -p1 -b .make-executable %build From 618621f42fcf999f76d2a92e2778142659be7158 Mon Sep 17 00:00:00 2001 From: Petr Sklenar Date: Thu, 14 Nov 2019 10:35:39 +0100 Subject: [PATCH 16/36] change the name of the file --- README-Fedora | 2 +- proxyfuzz.py | 260 +++++++++++++++++++++++++++++++++++++++++++++++++ proxyfuzz.spec | 2 +- 3 files changed, 262 insertions(+), 2 deletions(-) create mode 100644 proxyfuzz.py diff --git a/README-Fedora b/README-Fedora index aa3810d..b7f10c2 100644 --- a/README-Fedora +++ b/README-Fedora @@ -16,7 +16,7 @@ ProxyFuzz 0.1, Simple fuzzing proxy by Rodrigo Marcos usage(): -python proxyfuzz -l -r -p [options] +python3 proxyfuzz -l -r -p [options] [options] diff --git a/proxyfuzz.py b/proxyfuzz.py new file mode 100644 index 0000000..9369dac --- /dev/null +++ b/proxyfuzz.py @@ -0,0 +1,260 @@ +#!/usr/bin/python3 +# 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, randrange + + +# 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(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(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(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(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 * 2 / 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] + str.encode(chr(randrange(0, 1114111))) + data[r + 1:] + return data + + +def bofinjection(data): + l = len(data) + r = randint(0, len(overflowstrings) - 1) + data = data[0:r] + str.encode(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 index b8943a0..a72776f 100644 --- a/proxyfuzz.spec +++ b/proxyfuzz.spec @@ -35,7 +35,7 @@ fuzz any network communication. %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 +install -m 755 -p proxyfuzz.py ${RPM_BUILD_ROOT}/%{_sbindir}/proxyfuzz From cae60a5c674b2919318544237df43cc01530a36f Mon Sep 17 00:00:00 2001 From: Petr Sklenar Date: Thu, 14 Nov 2019 10:40:57 +0100 Subject: [PATCH 17/36] change the name of the file --- proxyfuzz.spec | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/proxyfuzz.spec b/proxyfuzz.spec index a72776f..81a5ffd 100644 --- a/proxyfuzz.spec +++ b/proxyfuzz.spec @@ -6,7 +6,7 @@ Summary: Man-in-the-middle non-deterministic network fuzzer License: GPLv3+ URL: https://github.com/SECFORCE -Source0: https://raw.githubusercontent.com/SECFORCE/proxyfuzz/master/proxyfuzz.py +Source0: proxyfuzz.py Source1: README-Fedora BuildArch: noarch @@ -26,8 +26,8 @@ side of the communication. ProxyFuzz is protocol agnostic so it can randomly fuzz any network communication. %prep -#cp -p %{SOURCE0} . -#cp -p %{SOURCE1} . +cp -p %{SOURCE0} . +cp -p %{SOURCE1} . #%patch0 -p1 -b .make-executable %build From 46dbc07176502a34627530c32b543d9a7ef1758f Mon Sep 17 00:00:00 2001 From: Petr Sklenar Date: Thu, 14 Nov 2019 14:10:57 +0100 Subject: [PATCH 18/36] python3 specialities a_b a,b --- proxyfuzz.py | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/proxyfuzz.py b/proxyfuzz.py index 9369dac..2820943 100644 --- a/proxyfuzz.py +++ b/proxyfuzz.py @@ -38,7 +38,7 @@ class Client(DatagramProtocol): def startProtocol(self): self.transport.connect(desthost, destport) - def datagramReceived(self, data, host, port): + def datagramReceived(self, data, host_port): global verbose global notuntil global request @@ -52,13 +52,15 @@ class Client(DatagramProtocol): if verbose: print("Server ------> Client") print(data) - self.server.transport.write(data, self.host, self.port) + addr=(self.host, self.port) + self.server.transport.write(data, addr) class Server(DatagramProtocol): client = None - def datagramReceived(self, data, host, port): + def datagramReceived(self, data, host_port): + host, port = 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) @@ -76,7 +78,8 @@ class Server(DatagramProtocol): if verbose: print("Client ------> Server") print(data) - self.client.transport.write(data, (desthost, destport)) + addr=(desthost, destport) + self.client.transport.write(data, addr) # TCP proxy stuff @@ -135,11 +138,11 @@ overflowstrings = ["A" * 255, "A" * 256, "A" * 257, "A" * 420, "A" * 511, "A" * def bitflipping(data): l = len(data) - n = int(l * 2 / 100) # 7% of the bytes to be modified + 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] + str.encode(chr(randrange(0, 1114111))) + data[r + 1:] + data = data[0:r] + str.encode(chr(randrange(0, 255))) + data[r + 1:] return data @@ -173,14 +176,14 @@ def starttcpproxy(): def usage(): # print "###############################################################" - print() + print('') print("ProxyFuzz 0.1, Simple fuzzing proxy by Rodrigo Marcos") print("http://www.secforce.co.uk") - print() + print('') print("usage():") - # print - print("python proxyfuzz -l -r -p [options]") - print() + print('') + print("proxyfuzz -l -r -p [options]") + print('') print(" [options]") print(" -c: Fuzz only client side (both otherwise)") print(" -s: Fuzz only server side (both otherwise)") From 315dcc9be120ef7111c704edb18f86466041a841 Mon Sep 17 00:00:00 2001 From: Petr Sklenar Date: Thu, 14 Nov 2019 14:11:50 +0100 Subject: [PATCH 19/36] bump the version only --- proxyfuzz.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proxyfuzz.spec b/proxyfuzz.spec index 81a5ffd..47848d9 100644 --- a/proxyfuzz.spec +++ b/proxyfuzz.spec @@ -1,7 +1,7 @@ %{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")} Name: proxyfuzz Version: 20190404 -Release: 14%{?dist} +Release: 15%{?dist} Summary: Man-in-the-middle non-deterministic network fuzzer License: GPLv3+ From aca2e5bf3347d8a538f5817490387b1c83e27ccb Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 30 Jan 2020 09:50:19 +0000 Subject: [PATCH 20/36] - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- proxyfuzz.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/proxyfuzz.spec b/proxyfuzz.spec index 47848d9..de7ec11 100644 --- a/proxyfuzz.spec +++ b/proxyfuzz.spec @@ -1,7 +1,7 @@ %{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")} Name: proxyfuzz Version: 20190404 -Release: 15%{?dist} +Release: 16%{?dist} Summary: Man-in-the-middle non-deterministic network fuzzer License: GPLv3+ @@ -45,6 +45,9 @@ install -m 755 -p proxyfuzz.py ${RPM_BUILD_ROOT}/%{_sbindir}/proxyfuzz %changelog +* Thu Jan 30 2020 Fedora Release Engineering - 20190404-16 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + * Sat Feb 02 2019 Fedora Release Engineering - 20110923-13 - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild From f7efb0971b8ea56d5fdb09148ab59da77b7cee35 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Tue, 28 Jul 2020 23:04:17 +0000 Subject: [PATCH 21/36] - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- proxyfuzz.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/proxyfuzz.spec b/proxyfuzz.spec index de7ec11..38a08a4 100644 --- a/proxyfuzz.spec +++ b/proxyfuzz.spec @@ -1,7 +1,7 @@ %{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")} Name: proxyfuzz Version: 20190404 -Release: 16%{?dist} +Release: 17%{?dist} Summary: Man-in-the-middle non-deterministic network fuzzer License: GPLv3+ @@ -45,6 +45,9 @@ install -m 755 -p proxyfuzz.py ${RPM_BUILD_ROOT}/%{_sbindir}/proxyfuzz %changelog +* Tue Jul 28 2020 Fedora Release Engineering - 20190404-17 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + * Thu Jan 30 2020 Fedora Release Engineering - 20190404-16 - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild From 8a380cf32e70ae88bd8f4390badaa2fd1fee4512 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 27 Jan 2021 08:38:51 +0000 Subject: [PATCH 22/36] - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- proxyfuzz.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/proxyfuzz.spec b/proxyfuzz.spec index 38a08a4..80df4dd 100644 --- a/proxyfuzz.spec +++ b/proxyfuzz.spec @@ -1,7 +1,7 @@ %{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")} Name: proxyfuzz Version: 20190404 -Release: 17%{?dist} +Release: 18%{?dist} Summary: Man-in-the-middle non-deterministic network fuzzer License: GPLv3+ @@ -45,6 +45,9 @@ install -m 755 -p proxyfuzz.py ${RPM_BUILD_ROOT}/%{_sbindir}/proxyfuzz %changelog +* Wed Jan 27 2021 Fedora Release Engineering +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + * Tue Jul 28 2020 Fedora Release Engineering - 20190404-17 - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild From f7f4020534d4769c56a628dc9bc422f29a0d0bbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= Date: Tue, 13 Jul 2021 17:23:11 +0200 Subject: [PATCH 23/36] Fix FTBFS: Macro %python_sitelib failed to expand See https://fedoraproject.org/wiki/Changes/PythonMacroError Fixes https://bugzilla.redhat.com/show_bug.cgi?id=1974327 --- proxyfuzz.spec | 1 - 1 file changed, 1 deletion(-) diff --git a/proxyfuzz.spec b/proxyfuzz.spec index 80df4dd..eaff07a 100644 --- a/proxyfuzz.spec +++ b/proxyfuzz.spec @@ -1,4 +1,3 @@ -%{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")} Name: proxyfuzz Version: 20190404 Release: 18%{?dist} From 5a7d2a2134b03919c53f0a7cb86ac43a6ff88b81 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 23 Jul 2021 04:08:17 +0000 Subject: [PATCH 24/36] - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- proxyfuzz.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/proxyfuzz.spec b/proxyfuzz.spec index eaff07a..ac58f6a 100644 --- a/proxyfuzz.spec +++ b/proxyfuzz.spec @@ -1,6 +1,6 @@ Name: proxyfuzz Version: 20190404 -Release: 18%{?dist} +Release: 19%{?dist} Summary: Man-in-the-middle non-deterministic network fuzzer License: GPLv3+ @@ -44,6 +44,9 @@ install -m 755 -p proxyfuzz.py ${RPM_BUILD_ROOT}/%{_sbindir}/proxyfuzz %changelog +* Fri Jul 23 2021 Fedora Release Engineering - 20190404-19 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + * Wed Jan 27 2021 Fedora Release Engineering - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild From 36c7cd88bdf6116d12061979191c72e56c93da91 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 21 Jan 2022 09:31:48 +0000 Subject: [PATCH 25/36] - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- proxyfuzz.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/proxyfuzz.spec b/proxyfuzz.spec index ac58f6a..b4ae601 100644 --- a/proxyfuzz.spec +++ b/proxyfuzz.spec @@ -1,6 +1,6 @@ Name: proxyfuzz Version: 20190404 -Release: 19%{?dist} +Release: 20%{?dist} Summary: Man-in-the-middle non-deterministic network fuzzer License: GPLv3+ @@ -44,6 +44,9 @@ install -m 755 -p proxyfuzz.py ${RPM_BUILD_ROOT}/%{_sbindir}/proxyfuzz %changelog +* Fri Jan 21 2022 Fedora Release Engineering - 20190404-20 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + * Fri Jul 23 2021 Fedora Release Engineering - 20190404-19 - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild From 65881aad924a74e6c793cc3b116c74ac4f3f84d1 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 22 Jul 2022 15:29:48 +0000 Subject: [PATCH 26/36] Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- proxyfuzz.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/proxyfuzz.spec b/proxyfuzz.spec index b4ae601..2dda7b7 100644 --- a/proxyfuzz.spec +++ b/proxyfuzz.spec @@ -1,6 +1,6 @@ Name: proxyfuzz Version: 20190404 -Release: 20%{?dist} +Release: 21%{?dist} Summary: Man-in-the-middle non-deterministic network fuzzer License: GPLv3+ @@ -44,6 +44,9 @@ install -m 755 -p proxyfuzz.py ${RPM_BUILD_ROOT}/%{_sbindir}/proxyfuzz %changelog +* Fri Jul 22 2022 Fedora Release Engineering - 20190404-21 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + * Fri Jan 21 2022 Fedora Release Engineering - 20190404-20 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild From 453d2f67122544768d7981321a6783860f53077f Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 20 Jan 2023 10:21:43 +0000 Subject: [PATCH 27/36] Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- proxyfuzz.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/proxyfuzz.spec b/proxyfuzz.spec index 2dda7b7..ed9c805 100644 --- a/proxyfuzz.spec +++ b/proxyfuzz.spec @@ -1,6 +1,6 @@ Name: proxyfuzz Version: 20190404 -Release: 21%{?dist} +Release: 22%{?dist} Summary: Man-in-the-middle non-deterministic network fuzzer License: GPLv3+ @@ -44,6 +44,9 @@ install -m 755 -p proxyfuzz.py ${RPM_BUILD_ROOT}/%{_sbindir}/proxyfuzz %changelog +* Fri Jan 20 2023 Fedora Release Engineering - 20190404-22 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + * Fri Jul 22 2022 Fedora Release Engineering - 20190404-21 - Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild From 2c5e2ef8dd5e6eecd9bb1fe611ef0c165125a810 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 21 Jul 2023 06:22:46 +0000 Subject: [PATCH 28/36] Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- proxyfuzz.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/proxyfuzz.spec b/proxyfuzz.spec index ed9c805..a04e2e0 100644 --- a/proxyfuzz.spec +++ b/proxyfuzz.spec @@ -1,6 +1,6 @@ Name: proxyfuzz Version: 20190404 -Release: 22%{?dist} +Release: 23%{?dist} Summary: Man-in-the-middle non-deterministic network fuzzer License: GPLv3+ @@ -44,6 +44,9 @@ install -m 755 -p proxyfuzz.py ${RPM_BUILD_ROOT}/%{_sbindir}/proxyfuzz %changelog +* Fri Jul 21 2023 Fedora Release Engineering - 20190404-23 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + * Fri Jan 20 2023 Fedora Release Engineering - 20190404-22 - Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild From b60ef75aceae91f96bb1d409fdd8fa8784a457ea Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sun, 21 Jan 2024 22:26:37 +0000 Subject: [PATCH 29/36] Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild --- proxyfuzz.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/proxyfuzz.spec b/proxyfuzz.spec index a04e2e0..9cad47d 100644 --- a/proxyfuzz.spec +++ b/proxyfuzz.spec @@ -1,6 +1,6 @@ Name: proxyfuzz Version: 20190404 -Release: 23%{?dist} +Release: 24%{?dist} Summary: Man-in-the-middle non-deterministic network fuzzer License: GPLv3+ @@ -44,6 +44,9 @@ install -m 755 -p proxyfuzz.py ${RPM_BUILD_ROOT}/%{_sbindir}/proxyfuzz %changelog +* Sun Jan 21 2024 Fedora Release Engineering - 20190404-24 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + * Fri Jul 21 2023 Fedora Release Engineering - 20190404-23 - Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild From 70991afa89b7c47c505793a90ce61f31f7f3ebb8 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 26 Jan 2024 00:13:29 +0000 Subject: [PATCH 30/36] Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild --- proxyfuzz.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/proxyfuzz.spec b/proxyfuzz.spec index 9cad47d..8bb61d5 100644 --- a/proxyfuzz.spec +++ b/proxyfuzz.spec @@ -1,6 +1,6 @@ Name: proxyfuzz Version: 20190404 -Release: 24%{?dist} +Release: 25%{?dist} Summary: Man-in-the-middle non-deterministic network fuzzer License: GPLv3+ @@ -44,6 +44,9 @@ install -m 755 -p proxyfuzz.py ${RPM_BUILD_ROOT}/%{_sbindir}/proxyfuzz %changelog +* Fri Jan 26 2024 Fedora Release Engineering - 20190404-25 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + * Sun Jan 21 2024 Fedora Release Engineering - 20190404-24 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild From d42bd3575a10ddbe6394275f73b61e04a90fe782 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 19 Jul 2024 08:35:02 +0000 Subject: [PATCH 31/36] Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild --- proxyfuzz.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/proxyfuzz.spec b/proxyfuzz.spec index 8bb61d5..58b82a9 100644 --- a/proxyfuzz.spec +++ b/proxyfuzz.spec @@ -1,6 +1,6 @@ Name: proxyfuzz Version: 20190404 -Release: 25%{?dist} +Release: 26%{?dist} Summary: Man-in-the-middle non-deterministic network fuzzer License: GPLv3+ @@ -44,6 +44,9 @@ install -m 755 -p proxyfuzz.py ${RPM_BUILD_ROOT}/%{_sbindir}/proxyfuzz %changelog +* Fri Jul 19 2024 Fedora Release Engineering - 20190404-26 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + * Fri Jan 26 2024 Fedora Release Engineering - 20190404-25 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild From 3b56561b1ddb286961a2b47d53133bb63e7e02ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miroslav=20Such=C3=BD?= Date: Thu, 25 Jul 2024 12:46:22 +0200 Subject: [PATCH 32/36] convert GPLv3+ license to SPDX This is part of https://fedoraproject.org/wiki/Changes/SPDX_Licenses_Phase_4 --- proxyfuzz.spec | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/proxyfuzz.spec b/proxyfuzz.spec index 58b82a9..b666645 100644 --- a/proxyfuzz.spec +++ b/proxyfuzz.spec @@ -1,9 +1,10 @@ Name: proxyfuzz Version: 20190404 -Release: 26%{?dist} +Release: 27%{?dist} Summary: Man-in-the-middle non-deterministic network fuzzer -License: GPLv3+ +# Automatically converted from old format: GPLv3+ - review is highly recommended. +License: GPL-3.0-or-later URL: https://github.com/SECFORCE Source0: proxyfuzz.py Source1: README-Fedora @@ -44,6 +45,9 @@ install -m 755 -p proxyfuzz.py ${RPM_BUILD_ROOT}/%{_sbindir}/proxyfuzz %changelog +* Thu Jul 25 2024 Miroslav Suchý - 20190404-27 +- convert license to SPDX + * Fri Jul 19 2024 Fedora Release Engineering - 20190404-26 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild From a917e60b3d5794b28645bbafb715602f76b26395 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 18 Jan 2025 10:54:34 +0000 Subject: [PATCH 33/36] Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild --- proxyfuzz.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/proxyfuzz.spec b/proxyfuzz.spec index b666645..f1b4498 100644 --- a/proxyfuzz.spec +++ b/proxyfuzz.spec @@ -1,6 +1,6 @@ Name: proxyfuzz Version: 20190404 -Release: 27%{?dist} +Release: 28%{?dist} Summary: Man-in-the-middle non-deterministic network fuzzer # Automatically converted from old format: GPLv3+ - review is highly recommended. @@ -45,6 +45,9 @@ install -m 755 -p proxyfuzz.py ${RPM_BUILD_ROOT}/%{_sbindir}/proxyfuzz %changelog +* Sat Jan 18 2025 Fedora Release Engineering - 20190404-28 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + * Thu Jul 25 2024 Miroslav Suchý - 20190404-27 - convert license to SPDX From ccb7e36330d33b2b5f225a084c869200f96e4772 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 25 Jul 2025 06:11:57 +0000 Subject: [PATCH 34/36] Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild --- proxyfuzz.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/proxyfuzz.spec b/proxyfuzz.spec index f1b4498..29f4f02 100644 --- a/proxyfuzz.spec +++ b/proxyfuzz.spec @@ -1,6 +1,6 @@ Name: proxyfuzz Version: 20190404 -Release: 28%{?dist} +Release: 29%{?dist} Summary: Man-in-the-middle non-deterministic network fuzzer # Automatically converted from old format: GPLv3+ - review is highly recommended. @@ -45,6 +45,9 @@ install -m 755 -p proxyfuzz.py ${RPM_BUILD_ROOT}/%{_sbindir}/proxyfuzz %changelog +* Fri Jul 25 2025 Fedora Release Engineering - 20190404-29 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + * Sat Jan 18 2025 Fedora Release Engineering - 20190404-28 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild From 220270b17aaaaaa3f40105753412dd62ecbf3321 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 17 Jan 2026 05:48:51 +0000 Subject: [PATCH 35/36] Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild --- proxyfuzz.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/proxyfuzz.spec b/proxyfuzz.spec index 29f4f02..1f588fb 100644 --- a/proxyfuzz.spec +++ b/proxyfuzz.spec @@ -1,6 +1,6 @@ Name: proxyfuzz Version: 20190404 -Release: 29%{?dist} +Release: 30%{?dist} Summary: Man-in-the-middle non-deterministic network fuzzer # Automatically converted from old format: GPLv3+ - review is highly recommended. @@ -45,6 +45,9 @@ install -m 755 -p proxyfuzz.py ${RPM_BUILD_ROOT}/%{_sbindir}/proxyfuzz %changelog +* Sat Jan 17 2026 Fedora Release Engineering - 20190404-30 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild + * Fri Jul 25 2025 Fedora Release Engineering - 20190404-29 - Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild From 2d9588a73a41e33784db4ef8648c16e7317ec22c Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 16 Jul 2026 17:43:48 +0000 Subject: [PATCH 36/36] Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild --- proxyfuzz.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/proxyfuzz.spec b/proxyfuzz.spec index 1f588fb..80bcd5b 100644 --- a/proxyfuzz.spec +++ b/proxyfuzz.spec @@ -1,6 +1,6 @@ Name: proxyfuzz Version: 20190404 -Release: 30%{?dist} +Release: 31%{?dist} Summary: Man-in-the-middle non-deterministic network fuzzer # Automatically converted from old format: GPLv3+ - review is highly recommended. @@ -45,6 +45,9 @@ install -m 755 -p proxyfuzz.py ${RPM_BUILD_ROOT}/%{_sbindir}/proxyfuzz %changelog +* Thu Jul 16 2026 Fedora Release Engineering - 20190404-31 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild + * Sat Jan 17 2026 Fedora Release Engineering - 20190404-30 - Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild