From 9fa96ef870da4ac9672eb61b68378b8873aed8ea Mon Sep 17 00:00:00 2001 From: mart Date: Wed, 11 Nov 2015 17:21:35 +0100 Subject: [PATCH] code erbij --- a2/code/client/gen.py | 63 ++++++++++++++++++++++++++++++++ a2/code/client/sender.py | 2 +- a2/code/client/testgeneration.py | 30 --------------- a2/code/server/EchoHandler.java | 2 +- 4 files changed, 65 insertions(+), 32 deletions(-) create mode 100755 a2/code/client/gen.py delete mode 100755 a2/code/client/testgeneration.py diff --git a/a2/code/client/gen.py b/a2/code/client/gen.py new file mode 100755 index 0000000..4dc28d1 --- /dev/null +++ b/a2/code/client/gen.py @@ -0,0 +1,63 @@ +#!/usr/bin/python +from sender import Sender +import sys +import random +import string + +def test(corruptDestinationPort, corruptSourcePort, numpackets, payloadsize, outOfOrder, serverPort): + msgs = [] + ownSeqnr = 101 + + # Make the messages + for _ in range(numpackets): + #msgs.append((ownSeqnr, ''.join(random.choice(string.ascii_letters) for _ in range(payloadsize)))) + msgs.append((ownSeqnr, ''.join(random.choice(string.ascii_letters) for _ in range(payloadsize)))) + ownSeqnr += payloadsize + + # Out of order + if outOfOrder and len(msgs) > 1: + indexes = range(0, len(msgs)) + random.shuffle(indexes) + msgs[indexes[0]], msgs[indexes[1]] = msgs[indexes[1]], msgs[indexes[0]] + print msgs + + sender = Sender(serverIP="127.0.0.1", networkInterface="lo", isLocal=True, serverPort=serverPort, waitTime=1, isVerbose=0) + # isLocal is True if the interface is a local one + response = sender.sendInput("S", 100, 100) + + # triggers the response SA _ 101 if the server is listening on the specified port + # if the server isn't listening, there are no responses + print sender.lastAckReceived + print sender.isTimeout + + # an example for the echo handling server + if sender.isTimeout == False: # in case something was received + #print 'swapped {} {}'.format(indexes[0], indexes[1]) + corruptDestinationPort = -1 if not corruptDestinationPort else random.randint(0, len(msgs)) + oldDestinationPort = sender.serverPort + corruptSourcePort = -1 if not corruptSourcePort else random.randint(0, len(msgs)) + oldSourcePort = sender.senderPort + for i, (seq, m) in enumerate(msgs): + if i == corruptDestinationPort: + sender.serverPort = sender.serverPort+1 + else: + sender.serverPort = oldDestinationPort + + if i == corruptSourcePort: + sender.senderPort = sender.senderPort+1 + else: + sender.senderPort = oldSourcePort + sender.sendInput("A", seq, sender.lastSeqReceived + 1, None) # send some data + + print 'response: ', sender.sendInput("FA", ownSeqnr, sender.lastSeqReceived + 1) # close connection (the echo also closes) + print 'response: ', sender.sendInput("RP", ownSeqnr+1, 0) # reset connection + + sender.sendReset() # switch sender port + print 'Succes!' + + +if __name__ == '__main__': + serverPort = 10000 + if len(sys.argv) > 1: + serverPort = int(sys.argv[1]) + test(corruptDestinationPort=False, corruptSourcePort=False, numpackets=2, payloadsize=1, outOfOrder=False, serverPort=serverPort) diff --git a/a2/code/client/sender.py b/a2/code/client/sender.py index e1091a3..0af62d1 100644 --- a/a2/code/client/sender.py +++ b/a2/code/client/sender.py @@ -74,7 +74,7 @@ class Sender: # consider adding the parameter: iface="ethx" if you don't receive a response. Also consider increasing the wait time scapyResponse = sr1(packet, timeout=self.waitTime, verbose=self.isVerbose) if scapyResponse is not None: - scapyResponse.show() + # scapyResponse.show() # ^^ in case you want to show the packet content # here is what you store from every packet response if Raw not in scapyResponse: diff --git a/a2/code/client/testgeneration.py b/a2/code/client/testgeneration.py deleted file mode 100755 index 17e7c9e..0000000 --- a/a2/code/client/testgeneration.py +++ /dev/null @@ -1,30 +0,0 @@ -#!/usr/bin/python -from sender import Sender -import sys - -def test(serverPort): - sender = Sender(serverIP="127.0.0.1", networkInterface="lo", isLocal=True, serverPort=serverPort, waitTime=1, isVerbose=1) - # isLocal is True if the interface is a local one - response = sender.sendInput("S", 100, 100) - - # triggers the response SA _ 101 if the server is listening on the specified port - # if the server isn't listening, there are no responses - print sender.lastAckReceived - print sender.isTimeout - - # an example for the echo handling server - if sender.isTimeout == False: # in case something was received - sender.sendInput("A", 101, sender.lastSeqReceived + 1) # connection is established - sender.sendInput("A", 101, sender.lastSeqReceived + 1, data = "Hello world!") # send some data - sender.sendInput("FA", 103, sender.lastSeqReceived + 1) # close connection (the echo also closes) - sender.sendInput("RP", 104, 0) # reset connection - - sender.sendReset() # switch sender port - print 'Succes!' - - -if __name__ == "__main__": - serverPort = 10000 - if len(sys.argv) > 1: - serverPort = int(sys.argv[1]) - test(serverPort) diff --git a/a2/code/server/EchoHandler.java b/a2/code/server/EchoHandler.java index e8e95c7..c60a9f0 100644 --- a/a2/code/server/EchoHandler.java +++ b/a2/code/server/EchoHandler.java @@ -43,4 +43,4 @@ public class EchoHandler implements Runnable { } } -} \ No newline at end of file +} -- 2.20.1