diff --git a/core/poisoners/LLMNR.py b/core/poisoners/LLMNR.py index 6779da1..0227740 100644 --- a/core/poisoners/LLMNR.py +++ b/core/poisoners/LLMNR.py @@ -33,8 +33,7 @@ def start(): t.setDaemon(True) t.start() except Exception as e: - print "Error starting LLMNR server on port 5355" - print_exc() + print "Error starting LLMNR server on port 5355: {}".format(e) class ThreadingUDPLLMNRServer(ThreadingMixIn, UDPServer): diff --git a/core/poisoners/MDNS.py b/core/poisoners/MDNS.py index c6ee0c7..075aa6a 100644 --- a/core/poisoners/MDNS.py +++ b/core/poisoners/MDNS.py @@ -19,7 +19,6 @@ import core.responder.settings as settings import socket import threading -from traceback import print_exc from SocketServer import BaseRequestHandler, ThreadingMixIn, UDPServer from core.responder.packets import MDNS_Ans from core.responder.utils import * @@ -31,8 +30,7 @@ def start(): t.setDaemon(True) t.start() except Exception as e: - print "Error starting MDNS server on port 5353" - print_exc() + print "Error starting MDNS server on port 5353: {}".format(e) class ThreadingUDPMDNSServer(ThreadingMixIn, UDPServer): diff --git a/core/poisoners/NBTNS.py b/core/poisoners/NBTNS.py index 6163fa9..15be53a 100644 --- a/core/poisoners/NBTNS.py +++ b/core/poisoners/NBTNS.py @@ -19,7 +19,6 @@ import threading import core.responder.settings as settings import core.responder.fingerprint as fingerprint -from traceback import print_exc from core.responder.packets import NBT_Ans from SocketServer import BaseRequestHandler, ThreadingMixIn, UDPServer from core.responder.utils import * @@ -31,8 +30,7 @@ def start(): t.setDaemon(True) t.start() except Exception as e: - print "Error starting NBTNS server on port 137" - print_exec() + print "Error starting NBTNS server on port 137: {}".format(e) class ThreadingUDPServer(ThreadingMixIn, UDPServer): diff --git a/core/servers/Browser.py b/core/servers/Browser.py index c9840b6..7491ec5 100644 --- a/core/servers/Browser.py +++ b/core/servers/Browser.py @@ -16,11 +16,30 @@ # along with this program. If not, see . import socket import struct +import threading +import core.responder.settings as settings -from core.configwatcher import ConfigWatcher -from core.packets import SMBHeader, SMBNegoData, SMBSessionData, SMBTreeConnectData, RAPNetServerEnum3Data, SMBTransRAPData -from SocketServer import BaseRequestHandler -from core.utils import * +from core.responder.packets import SMBHeader, SMBNegoData, SMBSessionData, SMBTreeConnectData, RAPNetServerEnum3Data, SMBTransRAPData +from SocketServer import BaseRequestHandler, ThreadingMixIn, UDPServer +from core.responder.utils import * + +def start(): + try: + server = ThreadingUDPServer(('', 138), Browser1) + t = threading.Thread(name='Browser', target=server.serve_forever) + t.setDaemon(True) + t.start() + except Exception as e: + print "Error starting Browser server on port 138: {}".format(e) + +class ThreadingUDPServer(ThreadingMixIn, UDPServer): + def server_bind(self): + if OsInterfaceIsSupported(): + try: + self.socket.setsockopt(socket.SOL_SOCKET, 25, settings.Config.Bind_To+'\0') + except: + pass + UDPServer.server_bind(self) def WorkstationFingerPrint(data): Role = { @@ -189,7 +208,7 @@ def ParseDatagramNBTNames(data,Client): except: pass -class Browser(BaseRequestHandler): +class Browser1(BaseRequestHandler): def handle(self): try: diff --git a/core/servers/HTTP.py b/core/servers/HTTP.py index adb4d1d..82296eb 100644 --- a/core/servers/HTTP.py +++ b/core/servers/HTTP.py @@ -18,7 +18,6 @@ import os import struct import core.responder.settings as settings import threading -from traceback import print_exc from SocketServer import BaseServer, BaseRequestHandler, StreamRequestHandler, ThreadingMixIn, TCPServer from base64 import b64decode, b64encode @@ -61,7 +60,6 @@ class HTTP: except Exception as e: print "Error starting HTTP server: {}".format(e) - print_exc() class ThreadingTCPServer(ThreadingMixIn, TCPServer): diff --git a/core/servers/SMB.py b/core/servers/SMB.py index e03bd74..198ba4d 100644 --- a/core/servers/SMB.py +++ b/core/servers/SMB.py @@ -18,7 +18,6 @@ import struct import core.responder.settings as settings import threading import socket -from traceback import print_exc from random import randrange from core.responder.packets import SMBHeader, SMBNegoAnsLM, SMBNegoAns, SMBNegoKerbAns, SMBSession1Data, SMBSession2Accept, SMBSessEmpty, SMBTreeData @@ -42,7 +41,6 @@ class SMB: t.start() except Exception as e: print "Error starting SMB server: {}".format(e) - print_exc() class ThreadingTCPServer(ThreadingMixIn, TCPServer): diff --git a/plugins/responder.py b/plugins/responder.py index fdfdd45..983a904 100644 --- a/plugins/responder.py +++ b/plugins/responder.py @@ -42,6 +42,10 @@ class Responder(Plugin): MDNS.start() NBTNS.start() + # Load Browser Listener + import core.servers.Browser as Browser + Browser.start() + if self.config["Responder"]["SQL"].lower() == "on": from core.servers.MSSQL import MSSQL self.tree_info.append("MSSQL server [ON]") diff --git a/plugins/sslstrip+.py b/plugins/sslstrip+.py index 51f21b3..109e721 100644 --- a/plugins/sslstrip+.py +++ b/plugins/sslstrip+.py @@ -30,7 +30,7 @@ class SSLstripPlus(Plugin): self.options = options from core.sslstrip.URLMonitor import URLMonitor - from core.servers.dns.DNSchef import DNSChef + from core.servers.DNS import DNSChef from core.utils import iptables if iptables().dns is False: