From f670fbaa7fcd3b072aef7cf29f43c1d76d6f13bf Mon Sep 17 00:00:00 2001 From: lgandx Date: Thu, 7 Dec 2023 09:36:54 -0300 Subject: [PATCH] added:error handling on exceptions. --- poisoners/MDNS.py | 60 ++++++++++++++++++++++++---------------------- poisoners/NBTNS.py | 42 ++++++++++++++++---------------- 2 files changed, 53 insertions(+), 49 deletions(-) diff --git a/poisoners/MDNS.py b/poisoners/MDNS.py index d63d0fb..a9b555a 100755 --- a/poisoners/MDNS.py +++ b/poisoners/MDNS.py @@ -51,47 +51,49 @@ def Poisoned_MDNS_Name(data): class MDNS(BaseRequestHandler): def handle(self): - - data, soc = self.request - Request_Name = Parse_MDNS_Name(data) - MDNSType = Parse_IPV6_Addr(data) - # Break out if we don't want to respond to this host + try: + data, soc = self.request + Request_Name = Parse_MDNS_Name(data) + MDNSType = Parse_IPV6_Addr(data) + # Break out if we don't want to respond to this host - if (not Request_Name) or (RespondToThisHost(self.client_address[0].replace("::ffff:",""), Request_Name) is not True): - return None + if (not Request_Name) or (RespondToThisHost(self.client_address[0].replace("::ffff:",""), Request_Name) is not True): + return None - if settings.Config.AnalyzeMode: # Analyze Mode - print(text('[Analyze mode: MDNS] Request by %-15s for %s, ignoring' % (color(self.client_address[0].replace("::ffff:",""), 3), color(Request_Name, 3)))) - SavePoisonersToDb({ + if settings.Config.AnalyzeMode: # Analyze Mode + print(text('[Analyze mode: MDNS] Request by %-15s for %s, ignoring' % (color(self.client_address[0].replace("::ffff:",""), 3), color(Request_Name, 3)))) + SavePoisonersToDb({ 'Poisoner': 'MDNS', 'SentToIp': self.client_address[0], 'ForName': Request_Name, 'AnalyzeMode': '1', - }) - elif MDNSType == True: # Poisoning Mode - Poisoned_Name = Poisoned_MDNS_Name(data) - Buffer = MDNS_Ans(AnswerName = Poisoned_Name) - Buffer.calculate() - soc.sendto(NetworkSendBufferPython2or3(Buffer), self.client_address) - if not settings.Config.Quiet_Mode: - print(color('[*] [MDNS] Poisoned answer sent to %-15s for name %s' % (self.client_address[0].replace("::ffff:",""), Request_Name), 2, 1)) - SavePoisonersToDb({ + }) + elif MDNSType == True: # Poisoning Mode + Poisoned_Name = Poisoned_MDNS_Name(data) + Buffer = MDNS_Ans(AnswerName = Poisoned_Name) + Buffer.calculate() + soc.sendto(NetworkSendBufferPython2or3(Buffer), self.client_address) + if not settings.Config.Quiet_Mode: + print(color('[*] [MDNS] Poisoned answer sent to %-15s for name %s' % (self.client_address[0].replace("::ffff:",""), Request_Name), 2, 1)) + SavePoisonersToDb({ 'Poisoner': 'MDNS', 'SentToIp': self.client_address[0], 'ForName': Request_Name, 'AnalyzeMode': '0', - }) + }) - elif MDNSType == 'IPv6': # Poisoning Mode - Poisoned_Name = Poisoned_MDNS_Name(data) - Buffer = MDNS6_Ans(AnswerName = Poisoned_Name) - Buffer.calculate() - soc.sendto(NetworkSendBufferPython2or3(Buffer), self.client_address) - if not settings.Config.Quiet_Mode: - print(color('[*] [MDNS] Poisoned answer sent to %-15s for name %s' % (self.client_address[0].replace("::ffff:",""), Request_Name), 2, 1)) - SavePoisonersToDb({ + elif MDNSType == 'IPv6': # Poisoning Mode + Poisoned_Name = Poisoned_MDNS_Name(data) + Buffer = MDNS6_Ans(AnswerName = Poisoned_Name) + Buffer.calculate() + soc.sendto(NetworkSendBufferPython2or3(Buffer), self.client_address) + if not settings.Config.Quiet_Mode: + print(color('[*] [MDNS] Poisoned answer sent to %-15s for name %s' % (self.client_address[0].replace("::ffff:",""), Request_Name), 2, 1)) + SavePoisonersToDb({ 'Poisoner': 'MDNS6', 'SentToIp': self.client_address[0], 'ForName': Request_Name, 'AnalyzeMode': '0', - }) + }) + except: + raise diff --git a/poisoners/NBTNS.py b/poisoners/NBTNS.py index 1064bda..f574a98 100755 --- a/poisoners/NBTNS.py +++ b/poisoners/NBTNS.py @@ -27,33 +27,35 @@ else: class NBTNS(BaseRequestHandler): def handle(self): + try: + data, socket = self.request + Name = Decode_Name(NetworkRecvBufferPython2or3(data[13:45])) + # Break out if we don't want to respond to this host + if RespondToThisHost(self.client_address[0].replace("::ffff:",""), Name) is not True: + return None - data, socket = self.request - Name = Decode_Name(NetworkRecvBufferPython2or3(data[13:45])) - # Break out if we don't want to respond to this host - if RespondToThisHost(self.client_address[0].replace("::ffff:",""), Name) is not True: - return None - - if data[2:4] == b'\x01\x10': - if settings.Config.AnalyzeMode: # Analyze Mode - print(text('[Analyze mode: NBT-NS] Request by %-15s for %s, ignoring' % (color(self.client_address[0].replace("::ffff:",""), 3), color(Name, 3)))) - SavePoisonersToDb({ + if data[2:4] == b'\x01\x10': + if settings.Config.AnalyzeMode: # Analyze Mode + print(text('[Analyze mode: NBT-NS] Request by %-15s for %s, ignoring' % (color(self.client_address[0].replace("::ffff:",""), 3), color(Name, 3)))) + SavePoisonersToDb({ 'Poisoner': 'NBT-NS', 'SentToIp': self.client_address[0], 'ForName': Name, 'AnalyzeMode': '1', - }) - else: # Poisoning Mode - Buffer1 = NBT_Ans() - Buffer1.calculate(data) - socket.sendto(NetworkSendBufferPython2or3(Buffer1), self.client_address) - if not settings.Config.Quiet_Mode: - LineHeader = "[*] [NBT-NS]" - print(color("%s Poisoned answer sent to %s for name %s (service: %s)" % (LineHeader, self.client_address[0].replace("::ffff:",""), Name, NBT_NS_Role(NetworkRecvBufferPython2or3(data[43:46]))), 2, 1)) - SavePoisonersToDb({ + }) + else: # Poisoning Mode + Buffer1 = NBT_Ans() + Buffer1.calculate(data) + socket.sendto(NetworkSendBufferPython2or3(Buffer1), self.client_address) + if not settings.Config.Quiet_Mode: + LineHeader = "[*] [NBT-NS]" + print(color("%s Poisoned answer sent to %s for name %s (service: %s)" % (LineHeader, self.client_address[0].replace("::ffff:",""), Name, NBT_NS_Role(NetworkRecvBufferPython2or3(data[43:46]))), 2, 1)) + SavePoisonersToDb({ 'Poisoner': 'NBT-NS', 'SentToIp': self.client_address[0], 'ForName': Name, 'AnalyzeMode': '0', - }) + }) + except: + raise