mirror of
https://github.com/lgandx/Responder.git
synced 2025-08-20 13:23:38 -07:00
Fixed the bind to interface issue (https://github.com/lgandx/Responder/issues/6)
This commit is contained in:
parent
0cf1087010
commit
ce211f7fcf
2 changed files with 46 additions and 14 deletions
37
Responder.py
37
Responder.py
|
@ -66,7 +66,10 @@ class ThreadingUDPServer(ThreadingMixIn, UDPServer):
|
||||||
def server_bind(self):
|
def server_bind(self):
|
||||||
if OsInterfaceIsSupported():
|
if OsInterfaceIsSupported():
|
||||||
try:
|
try:
|
||||||
self.socket.setsockopt(socket.SOL_SOCKET, 25, settings.Config.Bind_To+'\0')
|
if settings.Config.Bind_To_ALL:
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
self.socket.setsockopt(socket.SOL_SOCKET, 25, settings.Config.Interface+'\0')
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
UDPServer.server_bind(self)
|
UDPServer.server_bind(self)
|
||||||
|
@ -75,7 +78,10 @@ class ThreadingTCPServer(ThreadingMixIn, TCPServer):
|
||||||
def server_bind(self):
|
def server_bind(self):
|
||||||
if OsInterfaceIsSupported():
|
if OsInterfaceIsSupported():
|
||||||
try:
|
try:
|
||||||
self.socket.setsockopt(socket.SOL_SOCKET, 25, settings.Config.Bind_To+'\0')
|
if settings.Config.Bind_To_ALL:
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
self.socket.setsockopt(socket.SOL_SOCKET, 25, settings.Config.Interface+'\0')
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
TCPServer.server_bind(self)
|
TCPServer.server_bind(self)
|
||||||
|
@ -84,7 +90,10 @@ class ThreadingTCPServerAuth(ThreadingMixIn, TCPServer):
|
||||||
def server_bind(self):
|
def server_bind(self):
|
||||||
if OsInterfaceIsSupported():
|
if OsInterfaceIsSupported():
|
||||||
try:
|
try:
|
||||||
self.socket.setsockopt(socket.SOL_SOCKET, 25, settings.Config.Bind_To+'\0')
|
if settings.Config.Bind_To_ALL:
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
self.socket.setsockopt(socket.SOL_SOCKET, 25, settings.Config.Interface+'\0')
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER, struct.pack('ii', 1, 0))
|
self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER, struct.pack('ii', 1, 0))
|
||||||
|
@ -101,7 +110,10 @@ class ThreadingUDPMDNSServer(ThreadingMixIn, UDPServer):
|
||||||
|
|
||||||
if OsInterfaceIsSupported():
|
if OsInterfaceIsSupported():
|
||||||
try:
|
try:
|
||||||
self.socket.setsockopt(socket.SOL_SOCKET, 25, settings.Config.Bind_To+'\0')
|
if settings.Config.Bind_To_ALL:
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
self.socket.setsockopt(socket.SOL_SOCKET, 25, settings.Config.Interface+'\0')
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
UDPServer.server_bind(self)
|
UDPServer.server_bind(self)
|
||||||
|
@ -109,7 +121,6 @@ class ThreadingUDPMDNSServer(ThreadingMixIn, UDPServer):
|
||||||
class ThreadingUDPLLMNRServer(ThreadingMixIn, UDPServer):
|
class ThreadingUDPLLMNRServer(ThreadingMixIn, UDPServer):
|
||||||
def server_bind(self):
|
def server_bind(self):
|
||||||
MADDR = "224.0.0.252"
|
MADDR = "224.0.0.252"
|
||||||
|
|
||||||
self.socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
|
self.socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
|
||||||
self.socket.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, 255)
|
self.socket.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, 255)
|
||||||
|
|
||||||
|
@ -117,7 +128,10 @@ class ThreadingUDPLLMNRServer(ThreadingMixIn, UDPServer):
|
||||||
|
|
||||||
if OsInterfaceIsSupported():
|
if OsInterfaceIsSupported():
|
||||||
try:
|
try:
|
||||||
self.socket.setsockopt(socket.SOL_SOCKET, 25, settings.Config.Bind_To+'\0')
|
if settings.Config.Bind_To_ALL:
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
self.socket.setsockopt(socket.SOL_SOCKET, 25, settings.Config.Interface+'\0')
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
UDPServer.server_bind(self)
|
UDPServer.server_bind(self)
|
||||||
|
@ -130,7 +144,7 @@ ThreadingTCPServerAuth.allow_reuse_address = 1
|
||||||
|
|
||||||
def serve_thread_udp_broadcast(host, port, handler):
|
def serve_thread_udp_broadcast(host, port, handler):
|
||||||
try:
|
try:
|
||||||
server = ThreadingUDPServer(('', port), handler)
|
server = ThreadingUDPServer((host, port), handler)
|
||||||
server.serve_forever()
|
server.serve_forever()
|
||||||
except:
|
except:
|
||||||
print color("[!] ", 1, 1) + "Error starting UDP server on port " + str(port) + ", check permissions or other servers running."
|
print color("[!] ", 1, 1) + "Error starting UDP server on port " + str(port) + ", check permissions or other servers running."
|
||||||
|
@ -150,12 +164,13 @@ def serve_LLMNR_poisoner(host, port, handler):
|
||||||
server = ThreadingUDPLLMNRServer((host, port), handler)
|
server = ThreadingUDPLLMNRServer((host, port), handler)
|
||||||
server.serve_forever()
|
server.serve_forever()
|
||||||
except:
|
except:
|
||||||
|
raise
|
||||||
print color("[!] ", 1, 1) + "Error starting UDP server on port " + str(port) + ", check permissions or other servers running."
|
print color("[!] ", 1, 1) + "Error starting UDP server on port " + str(port) + ", check permissions or other servers running."
|
||||||
|
|
||||||
def serve_thread_udp(host, port, handler):
|
def serve_thread_udp(host, port, handler):
|
||||||
try:
|
try:
|
||||||
if OsInterfaceIsSupported():
|
if OsInterfaceIsSupported():
|
||||||
server = ThreadingUDPServer((settings.Config.Bind_To, port), handler)
|
server = ThreadingUDPServer((host, port), handler)
|
||||||
server.serve_forever()
|
server.serve_forever()
|
||||||
else:
|
else:
|
||||||
server = ThreadingUDPServer((host, port), handler)
|
server = ThreadingUDPServer((host, port), handler)
|
||||||
|
@ -166,7 +181,7 @@ def serve_thread_udp(host, port, handler):
|
||||||
def serve_thread_tcp(host, port, handler):
|
def serve_thread_tcp(host, port, handler):
|
||||||
try:
|
try:
|
||||||
if OsInterfaceIsSupported():
|
if OsInterfaceIsSupported():
|
||||||
server = ThreadingTCPServer((settings.Config.Bind_To, port), handler)
|
server = ThreadingTCPServer((host, port), handler)
|
||||||
server.serve_forever()
|
server.serve_forever()
|
||||||
else:
|
else:
|
||||||
server = ThreadingTCPServer((host, port), handler)
|
server = ThreadingTCPServer((host, port), handler)
|
||||||
|
@ -177,7 +192,7 @@ def serve_thread_tcp(host, port, handler):
|
||||||
def serve_thread_tcp_auth(host, port, handler):
|
def serve_thread_tcp_auth(host, port, handler):
|
||||||
try:
|
try:
|
||||||
if OsInterfaceIsSupported():
|
if OsInterfaceIsSupported():
|
||||||
server = ThreadingTCPServerAuth((settings.Config.Bind_To, port), handler)
|
server = ThreadingTCPServerAuth((host, port), handler)
|
||||||
server.serve_forever()
|
server.serve_forever()
|
||||||
else:
|
else:
|
||||||
server = ThreadingTCPServerAuth((host, port), handler)
|
server = ThreadingTCPServerAuth((host, port), handler)
|
||||||
|
@ -192,7 +207,7 @@ def serve_thread_SSL(host, port, handler):
|
||||||
key = os.path.join(settings.Config.ResponderPATH, settings.Config.SSLKey)
|
key = os.path.join(settings.Config.ResponderPATH, settings.Config.SSLKey)
|
||||||
|
|
||||||
if OsInterfaceIsSupported():
|
if OsInterfaceIsSupported():
|
||||||
server = ThreadingTCPServer((settings.Config.Bind_To, port), handler)
|
server = ThreadingTCPServer((host, port), handler)
|
||||||
server.socket = ssl.wrap_socket(server.socket, certfile=cert, keyfile=key, server_side=True)
|
server.socket = ssl.wrap_socket(server.socket, certfile=cert, keyfile=key, server_side=True)
|
||||||
server.serve_forever()
|
server.serve_forever()
|
||||||
else:
|
else:
|
||||||
|
|
19
settings.py
19
settings.py
|
@ -20,7 +20,7 @@ import subprocess
|
||||||
|
|
||||||
from utils import *
|
from utils import *
|
||||||
|
|
||||||
__version__ = 'Responder 2.3.2.8'
|
__version__ = 'Responder 2.3.2.9'
|
||||||
|
|
||||||
class Settings:
|
class Settings:
|
||||||
|
|
||||||
|
@ -69,6 +69,10 @@ class Settings:
|
||||||
print utils.color("Error: -I <if> mandatory option is missing", 1)
|
print utils.color("Error: -I <if> mandatory option is missing", 1)
|
||||||
sys.exit(-1)
|
sys.exit(-1)
|
||||||
|
|
||||||
|
if options.Interface == "ALL" and options.OURIP == None:
|
||||||
|
print utils.color("Error: -i is missing.\nWhen using -I ALL you need to provide your current ip address", 1)
|
||||||
|
sys.exit(-1)
|
||||||
|
|
||||||
# Config parsing
|
# Config parsing
|
||||||
config = ConfigParser.ConfigParser()
|
config = ConfigParser.ConfigParser()
|
||||||
config.read(os.path.join(self.ResponderPATH, 'Responder.conf'))
|
config.read(os.path.join(self.ResponderPATH, 'Responder.conf'))
|
||||||
|
@ -176,7 +180,20 @@ class Settings:
|
||||||
self.HtmlToInject = ''
|
self.HtmlToInject = ''
|
||||||
|
|
||||||
self.Bind_To = utils.FindLocalIP(self.Interface, self.OURIP)
|
self.Bind_To = utils.FindLocalIP(self.Interface, self.OURIP)
|
||||||
|
|
||||||
|
if self.Interface == "ALL":
|
||||||
|
self.Bind_To_ALL = True
|
||||||
|
else:
|
||||||
|
self.Bind_To_ALL = False
|
||||||
|
|
||||||
|
|
||||||
self.IP_aton = socket.inet_aton(self.Bind_To)
|
self.IP_aton = socket.inet_aton(self.Bind_To)
|
||||||
|
|
||||||
|
if self.Interface == "ALL":
|
||||||
|
self.IP_aton = socket.inet_aton(self.OURIP)
|
||||||
|
else:
|
||||||
|
self.IP_aton = socket.inet_aton(self.Bind_To)
|
||||||
|
|
||||||
self.Os_version = sys.platform
|
self.Os_version = sys.platform
|
||||||
|
|
||||||
# Set up Challenge
|
# Set up Challenge
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue