From d341abbfa0261af215462c89a3d105e41f012f1d Mon Sep 17 00:00:00 2001 From: jeboog Date: Tue, 23 Mar 2021 11:34:17 -0400 Subject: [PATCH] Small Modifcation for Test Cases --- Python/attacker.py | 30 ++++++++------ Python/client.py | 42 ++++++++++--------- Python/connectionObject.py | 17 ++++---- Python/nat.py | 57 ++++++++++++++------------ Python/router.py | 83 +++++++++++++++++++++----------------- Python/server.py | 27 +++++++------ 6 files changed, 142 insertions(+), 114 deletions(-) diff --git a/Python/attacker.py b/Python/attacker.py index e46a2ed..c71510b 100644 --- a/Python/attacker.py +++ b/Python/attacker.py @@ -59,7 +59,7 @@ def processPackets(self): def sendPackets(self): # Puts packets onto the connection if((self.sendingPacket[1] - self.curTime) < 1): if(self.sendingPacket[0].dstIP == self.serverIP): - print(self.sendingPacket[0].dstIP) + #print(self.sendingPacket[0].dstIP) self.packetsSent += 1 # increment counter self.connectionToServer.transferPacketOut(self.sendingPacket[0]) # place packet on connection self.sendingPacket = None @@ -82,9 +82,10 @@ def generateSYN(self): packetType, random.randint(0, 10000), 0, self.packetIDPrefix + str(self.packetsGenerated), self.packetSize, self.ipAddress) # return the packet - self.fileGen.addToLog(npacket.packetID, "Generated at Attacker", - npacket.sequenceNumber, npacket.ackNumber, - npacket.packetType, self.curTime) + if(self.fileGen is not None): + self.fileGen.addToLog(npacket.packetID, "Generated at Attacker", + npacket.sequenceNumber, npacket.ackNumber, + npacket.packetType, self.curTime) return npacket else: if(self.openPort is None): @@ -93,18 +94,20 @@ def generateSYN(self): "PING", random.randint(0, 10000), 0, self.packetIDPrefix + str(self.packetsGenerated), self.packetSize, self.ipAddress) - self.fileGen.addToLog(npacket.packetID, "Generated at Attacker", - npacket.sequenceNumber, npacket.ackNumber, - npacket.packetType, self.curTime) + if(self.fileGen is not None): + self.fileGen.addToLog(npacket.packetID, "Generated at Attacker", + npacket.sequenceNumber, npacket.ackNumber, + npacket.packetType, self.curTime) return npacket elif(self.checkOpenPorts >= 10): npacket = packet.packet(self.ipAddress, 20, "2.0.0.0", self.openPort, "PING", random.randint(0, 10000), 0, self.packetIDPrefix + str(self.packetsGenerated), self.packetSize, self.ipAddress) - self.fileGen.addToLog(npacket.packetID, "Generated at Attacker", - npacket.sequenceNumber, npacket.ackNumber, - npacket.packetType, self.curTime) + if(self.fileGen is not None): + self.fileGen.addToLog(npacket.packetID, "Generated at Attacker", + npacket.sequenceNumber, npacket.ackNumber, + npacket.packetType, self.curTime) self.checkOpenPorts = 0 return npacket else: @@ -112,9 +115,10 @@ def generateSYN(self): packetType, random.randint(0, 10000), 0, self.packetIDPrefix + str(self.packetsGenerated), self.packetSize, self.ipAddress) # return the packet - self.fileGen.addToLog(npacket.packetID, "Generated at Attacker", - npacket.sequenceNumber, npacket.ackNumber, - npacket.packetType, self.curTime) + if(self.fileGen is not None): + self.fileGen.addToLog(npacket.packetID, "Generated at Attacker", + npacket.sequenceNumber, npacket.ackNumber, + npacket.packetType, self.curTime) self.checkOpenPorts += 1 return npacket diff --git a/Python/client.py b/Python/client.py index bb241f8..588ea6f 100644 --- a/Python/client.py +++ b/Python/client.py @@ -73,9 +73,10 @@ def sendPackets(self): # Places new packets into the receive buffer def receivePacket(self, packet): self.receiveBuffer.append(packet) - self.fileGen.addToLog(packet.packetID, "Received at Client", - packet.sequenceNumber, packet.ackNumber, - packet.packetType, self.curTime) + if(self.fileGen is not None): + self.fileGen.addToLog(packet.packetID, "Received at Client", + packet.sequenceNumber, packet.ackNumber, + packet.packetType, self.curTime) self.packetsInReceiveBuffer += 1 self.packetsReceived += 1 @@ -91,9 +92,10 @@ def createResponses(self): "ACK", 0, curPacket.sequenceNumber + 1, self.packetIDPrefix + str(self.packetsGenerated), self.packetSize, self.clientIP) - self.fileGen.addToLog(responsePacket.packetID, "Generated at Client", - responsePacket.sequenceNumber, responsePacket.ackNumber, - responsePacket.packetType, self.curTime) + if(self.fileGen is not None): + self.fileGen.addToLog(responsePacket.packetID, "Generated at Client", + responsePacket.sequenceNumber, responsePacket.ackNumber, + responsePacket.packetType, self.curTime) self.currentQueueLoad += responsePacket.packetSize if(self.currentQueueLoad <= self.queueLimit): self.queue.append(responsePacket) @@ -107,9 +109,10 @@ def createResponses(self): "RST", 0, curPacket.sequenceNumber + 1, self.packetIDPrefix + str(self.packetsGenerated), self.packetSize, self.clientIP) - self.fileGen.addToLog(responsePacket.packetID, "Generated at Client", - responsePacket.sequenceNumber, responsePacket.ackNumber, - responsePacket.packetType, self.curTime) + if(self.fileGen is not None): + self.fileGen.addToLog(responsePacket.packetID, "Generated at Client", + responsePacket.sequenceNumber, responsePacket.ackNumber, + responsePacket.packetType, self.curTime) self.currentQueueLoad += responsePacket.packetSize if(self.currentQueueLoad <= self.queueLimit): self.queue.append(responsePacket) @@ -118,9 +121,10 @@ def createResponses(self): # Drop Packet self.receiveBuffer.pop(i) # remove the packet from the queue self.packetsInReceiveBuffer -= 1 - self.fileGen.addToLog(curPacket.packetID, "Responded to by Client", - curPacket.sequenceNumber, curPacket.ackNumber, - curPacket.packetType, self.curTime) + if(self.fileGen is not None): + self.fileGen.addToLog(curPacket.packetID, "Responded to by Client", + curPacket.sequenceNumber, curPacket.ackNumber, + curPacket.packetType, self.curTime) # Simulates normal traffic by sending periodic syn requests to a normal server def createNormalTraffic(self): @@ -133,9 +137,10 @@ def createNormalTraffic(self): random.randint(0, 10000), 0, self.packetIDPrefix + str(self.packetsGenerated), self.packetSize, self.clientIP) - self.fileGen.addToLog(normalPacket.packetID, "Generated at Client", - normalPacket.sequenceNumber, normalPacket.ackNumber, - normalPacket.packetType, self.curTime) + if(self.fileGen is not None): + self.fileGen.addToLog(normalPacket.packetID, "Generated at Client", + normalPacket.sequenceNumber, normalPacket.ackNumber, + normalPacket.packetType, self.curTime) self.currentQueueLoad += normalPacket.packetSize if(self.currentQueueLoad <= self.queueLimit): self.queue.append(normalPacket) @@ -159,9 +164,10 @@ def createNormalTraffic(self): random.randint(0, 10000), 0, self.packetIDPrefix + str(self.packetsGenerated), self.packetSize, self.clientIP) - self.fileGen.addToLog(normalPacket.packetID, "Generated at Client", - normalPacket.sequenceNumber, normalPacket.ackNumber, - normalPacket.packetType, self.curTime) + if(self.fileGen is not None): + self.fileGen.addToLog(normalPacket.packetID, "Generated at Client", + normalPacket.sequenceNumber, normalPacket.ackNumber, + normalPacket.packetType, self.curTime) self.currentQueueLoad += normalPacket.packetSize if(self.currentQueueLoad <= self.queueLimit): self.queue.append(normalPacket) diff --git a/Python/connectionObject.py b/Python/connectionObject.py index 64f78c6..c4a824b 100644 --- a/Python/connectionObject.py +++ b/Python/connectionObject.py @@ -28,14 +28,15 @@ def transferPacketOut(self, packet): self.packetsInTransit.append((packet, self.curTime + self.propagationTime)) self.numberOfPacketsInTransit += 1 self.packetsAccepted += 1 - self.fileGen.animateTransit(self.device1.packetIDPrefix[0], - self.device2.packetIDPrefix[0], - packet.packetType, packet.sequenceNumber, - packet.ackNumber, packet.dstPortNumber, - self.propagationTime) - self.fileGen.addToLog(packet.packetID, - "In transit between " + str(self.device1IP) + " and " + str(self.device2IP), - packet.sequenceNumber, packet.ackNumber, packet.packetType, self.curTime) + if(self.fileGen is not None): #Testing purposes + self.fileGen.animateTransit(self.device1.packetIDPrefix[0], + self.device2.packetIDPrefix[0], + packet.packetType, packet.sequenceNumber, + packet.ackNumber, packet.dstPortNumber, + self.propagationTime) + self.fileGen.addToLog(packet.packetID, + "In transit between " + str(self.device1IP) + " and " + str(self.device2IP), + packet.sequenceNumber, packet.ackNumber, packet.packetType, self.curTime) def deliverPackets(self): i = 0 # loop over the list of packets and decide where to send them diff --git a/Python/nat.py b/Python/nat.py index 68d5640..59b4f61 100644 --- a/Python/nat.py +++ b/Python/nat.py @@ -41,21 +41,24 @@ def receivePacket(self, packet): if(len(self.receiveBuffer) < self.queueSize): self.receiveBuffer.append(packet) self.packetsReceived += 1 - self.fileGen.addToLog(packet.packetID, "Received at NAT Device", - packet.sequenceNumber, packet.ackNumber, - packet.packetType, self.curTime) + if(self.fileGen is not None): + self.fileGen.addToLog(packet.packetID, "Received at NAT Device", + packet.sequenceNumber, packet.ackNumber, + packet.packetType, self.curTime) else: - print("Packet is getting Dropped") - self.fileGen.animateDrop(curPacket.packetID[0], - curPacket.packetType, - curPacket.sequenceNumber, - curPacket.ackNumber, - curPacket.dstPortNumber) + #print("Packet is getting Dropped") + if(self.fileGen is not None): + self.fileGen.animateDrop(curPacket.packetID[0], + curPacket.packetType, + curPacket.sequenceNumber, + curPacket.ackNumber, + curPacket.dstPortNumber) self.packetsDropped += 1 - self.fileGen.addToLog(packet.packetID, - "Dropped at Router: No space in receiveBuffer", - packet.sequenceNumber, packet.ackNumber, - packet.packetType, self.curTime) + if(self.fileGen is not None): + self.fileGen.addToLog(packet.packetID, + "Dropped at Router: No space in receiveBuffer", + packet.sequenceNumber, packet.ackNumber, + packet.packetType, self.curTime) def addtoQueues(self): for i in self.receiveBuffer: @@ -74,39 +77,41 @@ def addtoQueues(self): else: self.currentQueueLoadRouter -= i.packetSize # Drop Packet - self.fileGen.animateDrop(i.packetID[0], i.packetType, - i.sequenceNumber, i.ackNumber, - i.dstPortNumber) + if(self.fileGen is not None): + self.fileGen.animateDrop(i.packetID[0], i.packetType, + i.sequenceNumber, i.ackNumber, + i.dstPortNumber) self.receiveBuffer.remove(i) def mapPacket(self, packet, dst): if(dst == "CLIENT"): - print("Client packet getting mapped") - print(packet) + #print("Client packet getting mapped") + #print(packet) internalInfo = self.openConnections.get((packet.dstIP, packet.dstPortNumber)) if(internalInfo is not None): self.openConnections.pop((packet.dstIP, packet.dstPortNumber)) packet.dstIP = internalInfo[0] packet.dstPortNumber = internalInfo[1] - print(packet) + #print(packet) return True else: # Drop Packet - print("Mapping not found") - self.fileGen.animateDrop(packet.packetID[0], packet.packetType, - packet.sequenceNumber, packet.ackNumber, - packet.dstPortNumber) + #print("Mapping not found") + if(self.fileGen is not None): + self.fileGen.animateDrop(packet.packetID[0], packet.packetType, + packet.sequenceNumber, packet.ackNumber, + packet.dstPortNumber) return False else: - print("Router packet getting mapped") + #print("Router packet getting mapped") portNumber = random.randint(0, 64000) - print(packet) + #print(packet) while(self.openConnections.get((self.ipAddress, portNumber)) is not None): portNumber = random.randint(0, 64000) self.openConnections[(self.ipAddress, portNumber)] = (packet.srcIP, packet.srcPortNumber) packet.srcIP = self.ipAddress packet.srcPortNumber = portNumber - print(packet) + #print(packet) return True # Add send packets function and mapping function diff --git a/Python/router.py b/Python/router.py index 05e4959..3809909 100644 --- a/Python/router.py +++ b/Python/router.py @@ -81,22 +81,25 @@ def receivePacket(self, synPacket): if(self.receiveBufferLength < self.queueSize): self.receiveBuffer.append(synPacket) self.packetsReceived += 1 - self.fileGen.addToLog(synPacket.packetID, "Received at Router", - synPacket.sequenceNumber, synPacket.ackNumber, - synPacket.packetType, self.curTime) + if(self.fileGen is not None): + self.fileGen.addToLog(synPacket.packetID, "Received at Router", + synPacket.sequenceNumber, synPacket.ackNumber, + synPacket.packetType, self.curTime) else: # print("Packet is getting Dropped") self.receiveBufferLength = self.receiveBufferLength - synPacket.packetSize - self.fileGen.animateDrop(self.packetIDPrefix[0], - curPacket.packetType, - curPacket.sequenceNumber, - curPacket.ackNumber, - curPacket.dstPortNumber) + if(self.fileGen is not None): + self.fileGen.animateDrop(self.packetIDPrefix[0], + curPacket.packetType, + curPacket.sequenceNumber, + curPacket.ackNumber, + curPacket.dstPortNumber) self.packetsDropped += 1 - self.fileGen.addToLog(synPacket.packetID, - "Dropped at Router: No space in receiveBuffer", - synPacket.sequenceNumber, synPacket.ackNumber, - synPacket.packetType, self.curTime) + if(self.fileGen is not None): + self.fileGen.addToLog(synPacket.packetID, + "Dropped at Router: No space in receiveBuffer", + synPacket.sequenceNumber, synPacket.ackNumber, + synPacket.packetType, self.curTime) # Adds the packets in receive buffer to destination queues. def addToQueues(self): @@ -154,9 +157,10 @@ def filterPackets(self, packetT): "PONG", random.randint(0, 10000), 0, "R-" + str(self.packetsGenerated), self.packetSize, self.ipAddress) - self.fileGen.addToLog(npacket.packetID, "Generated at Router", - npacket.sequenceNumber, npacket.ackNumber, - npacket.packetType, self.curTime) + if(self.fileGen is not None): + self.fileGen.addToLog(npacket.packetID, "Generated at Router", + npacket.sequenceNumber, npacket.ackNumber, + npacket.packetType, self.curTime) self.queueAttacker.append(npacket) return False elif(packetT.packetType == "PING"): @@ -165,9 +169,10 @@ def filterPackets(self, packetT): packetT.srcIP, packetT.srcPortNumber, "PONG-RST", random.randint(0, 10000), 0, "R-" + str(self.packetsGenerated), self.packetSize, self.ipAddress) - self.fileGen.addToLog(npacket.packetID, "Generated at Router", - npacket.sequenceNumber, npacket.ackNumber, - npacket.packetType, self.curTime) + if(self.fileGen is not None): + self.fileGen.addToLog(npacket.packetID, "Generated at Router", + npacket.sequenceNumber, npacket.ackNumber, + npacket.packetType, self.curTime) self.queueAttacker.append(npacket) return False else: @@ -183,14 +188,16 @@ def filterPackets(self, packetT): # If the packets dst port number is not found in either list, then drop the packet if(allow is False): # print("Packet dropped at the DDD Filter") - self.fileGen.animateDrop(self.packetIDPrefix[0], - packetT.packetType, - packetT.sequenceNumber, - packetT.ackNumber, - packetT.dstPortNumber) - self.fileGen.addToLog(packetT.packetID, "Dropped at DDD Filter", - packetT.sequenceNumber, packetT.ackNumber, - packetT.packetType, self.curTime) + if(self.fileGen is not None): + self.fileGen.animateDrop(self.packetIDPrefix[0], + packetT.packetType, + packetT.sequenceNumber, + packetT.ackNumber, + packetT.dstPortNumber) + if(self.fileGen is not None): + self.fileGen.addToLog(packetT.packetID, "Dropped at DDD Filter", + packetT.sequenceNumber, packetT.ackNumber, + packetT.packetType, self.curTime) self.packetsDropped += 1 return False @@ -388,17 +395,19 @@ def sendPackets(self): self.sendClient = None else: # print("Packet Dropped at the Port Mapper") - self.fileGen.animateDrop(self.packetIDPrefix[0], - self.sendClient[0].packetType, - self.sendClient[0].sequenceNumber, - self.sendClient[0].ackNumber, - self.sendClient[0].dstPortNumber) - self.fileGen.addToLog(self.sendClient[0].packetID, - "Dropped at Port Mapper", - self.sendClient[0].sequenceNumber, - self.sendClient[0].ackNumber, - self.sendClient[0].packetType, - self.curTime) + if(self.fileGen is not None): + self.fileGen.animateDrop(self.packetIDPrefix[0], + self.sendClient[0].packetType, + self.sendClient[0].sequenceNumber, + self.sendClient[0].ackNumber, + self.sendClient[0].dstPortNumber) + if(self.fileGen is not None): + self.fileGen.addToLog(self.sendClient[0].packetID, + "Dropped at Port Mapper", + self.sendClient[0].sequenceNumber, + self.sendClient[0].ackNumber, + self.sendClient[0].packetType, + self.curTime) self.sendClient = None self.packetsDropped += 1 if(self.sendNServer is not None): diff --git a/Python/server.py b/Python/server.py index ac06109..00c9d51 100644 --- a/Python/server.py +++ b/Python/server.py @@ -53,10 +53,11 @@ def curateResponses(self): "SYN-ACK", seqNumber, curPacket.sequenceNumber + 1, packetID, self.packetSize, self.ipAddress) - self.fileGen.addToLog(newPacket.packetID, - "Generated at " + self.packetIDPrefix[0] + "Server", - newPacket.sequenceNumber, newPacket.ackNumber, - newPacket.packetType, self.curTime) + if(self.fileGen is not None): + self.fileGen.addToLog(newPacket.packetID, + "Generated at " + self.packetIDPrefix[0] + "Server", + newPacket.sequenceNumber, newPacket.ackNumber, + newPacket.packetType, self.curTime) self.currentQueueLoad += newPacket.packetSize if(self.currentQueueLoad <= self.queueLimit): self.queue.append(newPacket) @@ -97,10 +98,11 @@ def resendSynAcks(self): i[2].srcIP, i[2].srcPortNumber, "SYN-ACK", i[3], i[2].sequenceNumber + 1, packetID, self.packetSize, self.ipAddress) - self.fileGen.addToLog(newPacket.packetID, "Generated at " - + self.packetIDPrefix[0] + "Server", - newPacket.sequenceNumber, newPacket.ackNumber, - newPacket.packetType, self.curTime) + if(self.fileGen is not None): + self.fileGen.addToLog(newPacket.packetID, "Generated at " + + self.packetIDPrefix[0] + "Server", + newPacket.sequenceNumber, newPacket.ackNumber, + newPacket.packetType, self.curTime) self.currentQueueLoad += newPacket.packetSize if(self.currentQueueLoad <= self.queueLimit): self.packetsGenerated += 1 @@ -143,10 +145,11 @@ def sendPackets(self): # Places packets into the receive buffer def receivePacket(self, packet): - self.fileGen.addToLog(packet.packetID, "Received at " - + self.packetIDPrefix[0] + "Server", - packet.sequenceNumber, packet.ackNumber, - packet.packetType, self.curTime) + if(self.fileGen is not None): + self.fileGen.addToLog(packet.packetID, "Received at " + + self.packetIDPrefix[0] + "Server", + packet.sequenceNumber, packet.ackNumber, + packet.packetType, self.curTime) self.packetsReceived += 1 self.receiveBuffer.append(packet) self.packetsInReceiveBuffer += 1