Skip to content

Commit

Permalink
Merge branch 'taste-proxy-poc' of https://github.com/mlhaigh/flare-fa…
Browse files Browse the repository at this point in the history
…kenet-ng into taste-proxy-poc
  • Loading branch information
mlhaigh committed Aug 24, 2017
2 parents de44317 + db83c07 commit 5644303
Show file tree
Hide file tree
Showing 9 changed files with 37 additions and 48 deletions.
33 changes: 21 additions & 12 deletions fakenet/fakenet.py
Expand Up @@ -184,18 +184,9 @@ def start(self):
self.logger.error("%s" % e)

else:
# Listener provider object
#listener_provider_instance = listener_provider(listener_config, listener_name, self.logging_level, self.running_listener_providers)

# Only pass the listeners to the proxy
if ('proxy' in listener_config and
listener_config['proxy'] == 'True'):
listener_provider_instance = listener_provider(
listener_config, listener_name, self.logging_level,
self.running_listener_providers, self.diverter)
else:
listener_provider_instance = listener_provider(
listener_config, listener_name, self.logging_level)

listener_provider_instance = listener_provider(
listener_config, listener_name, self.logging_level)

# Store listener provider object
self.running_listener_providers.append(listener_provider_instance)
Expand All @@ -210,6 +201,24 @@ def start(self):
if self.diverter:
self.diverter.start()

for listener in self.running_listener_providers:

# Only listeners that implement acceptListeners(listeners)
# interface receive running_listener_providers
try:
#if callable(getattr(listener_provider, 'acceptListeners')):
listener.acceptListeners(self.running_listener_providers)
except:
pass

# Only listeners that implement acceptDiverter(diverter)
# interface receive diverter
try:
#if callable(getattr(listener_provider, 'acceptDiverter')):
listener.acceptDiverter(self.diverter)
except Exception as e:
pass

def stop(self):

self.logger.info("Stopping...")
Expand Down
4 changes: 0 additions & 4 deletions fakenet/listeners/DNSListener.py
Expand Up @@ -29,8 +29,6 @@ def __init__(
config={},
name='DNSListener',
logging_level=logging.INFO,
running_listeners=None,
diverter=None
):

self.logger = logging.getLogger(name)
Expand All @@ -39,8 +37,6 @@ def __init__(
self.config = config
self.local_ip = '0.0.0.0'
self.server = None
self.running_listeners = running_listeners
self.diverter = diverter
self.name = 'DNS'
self.port = 53

Expand Down
9 changes: 3 additions & 6 deletions fakenet/listeners/HTTPListener.py
Expand Up @@ -40,10 +40,10 @@ def taste(self, data, dport):

for method in request_methods:
if data.lstrip().startswith(method):
return confidence + 2
confidence += 2

if ssl_detector.looks_like_ssl(data):
return confidence + 2
confidence += 1

return confidence

Expand All @@ -59,8 +59,7 @@ def __init__(
config={},
name='HTTPListener',
logging_level=logging.DEBUG,
running_listeners=None,
diverter=None):
):

self.logger = logging.getLogger(name)
self.logger.setLevel(logging_level)
Expand All @@ -69,8 +68,6 @@ def __init__(
self.name = name
self.local_ip = '0.0.0.0'
self.server = None
self.running_listeners = running_listeners
self.diverter = diverter
self.name = 'HTTP'
self.port = '80'

Expand Down
3 changes: 0 additions & 3 deletions fakenet/listeners/IRCListener.py
Expand Up @@ -24,8 +24,6 @@ def __init__(self,
config,
name='IRCListener',
logging_level=logging.INFO,
running_listeners=None,
diverter=None
):

self.logger = logging.getLogger(name)
Expand All @@ -35,7 +33,6 @@ def __init__(self,
self.name = name
self.local_ip = '0.0.0.0'
self.server = None
self.running_listeners = running_listeners
self.name = 'IRC'
self.port = None

Expand Down
3 changes: 0 additions & 3 deletions fakenet/listeners/POPListener.py
Expand Up @@ -30,8 +30,6 @@ def __init__(self,
config,
name='POPListener',
logging_level=logging.INFO,
running_listeners=None,
diverter=None
):

self.logger = logging.getLogger(name)
Expand All @@ -41,7 +39,6 @@ def __init__(self,
self.name = name
self.local_ip = '0.0.0.0'
self.server = None
self.running_listeners = running_listeners
self.name = 'POP'
self.port = 110

Expand Down
24 changes: 13 additions & 11 deletions fakenet/listeners/ProxyListener.py
Expand Up @@ -18,8 +18,6 @@
BUF_SZ = 1024
IP = '0.0.0.0'

#sys.path.insert(0, './listeners')

class ProxyListener():


Expand All @@ -28,8 +26,6 @@ def __init__(
config={},
name ='ProxyListener',
logging_level=logging.DEBUG,
running_listeners=None,
diverter=None
):

self.logger = logging.getLogger(name)
Expand All @@ -38,8 +34,6 @@ def __init__(
self.config = config
self.name = name
self.server = None
self.running_listeners = running_listeners
self.diverter = diverter

self.logger.info('Starting...')

Expand Down Expand Up @@ -76,8 +70,8 @@ def start(self):

self.server.config = self.config
self.server.logger = self.logger
self.server.running_listeners = self.running_listeners
self.server.diverter = self.diverter
self.server.running_listeners = None
self.server.diverter = None
self.server_thread = threading.Thread(
target=self.server.serve_forever)
self.server_thread.daemon = True
Expand All @@ -91,8 +85,13 @@ def stop(self):
if self.server:
self.server.shutdown()
self.server.server_close()


def acceptListeners(self, listeners):
self.server.listeners = listeners

def acceptDiverter(self, diverter):
self.server.diverter = diverter

class ThreadedClientSocket(threading.Thread):


Expand Down Expand Up @@ -136,6 +135,7 @@ class ThreadedUDPServer(SocketServer.ThreadingMixIn, SocketServer.UDPServer):
def get_top_listener(config, data, listeners, diverter, orig_src_ip,
orig_src_port, proto):


top_listener = None
top_confidence = 0
dport = diverter.getOriginalDestPort(orig_src_ip, orig_src_port, proto)
Expand Down Expand Up @@ -192,8 +192,9 @@ def handle(self):

orig_src_ip = self.client_address[0]
orig_src_port = self.client_address[1]

top_listener = get_top_listener(self.server.config, data,
self.server.running_listeners, self.server.diverter,
self.server.listeners, self.server.diverter,
orig_src_ip, orig_src_port, 'TCP')

if top_listener:
Expand Down Expand Up @@ -250,8 +251,9 @@ def handle(self):

orig_src_ip = self.client_address[0]
orig_src_port = self.client_address[1]

top_listener = get_top_listener(self.server.config, data,
self.server.running_listeners, self.server.diverter,
self.server.listeners, self.server.diverter,
orig_src_ip, orig_src_port, 'UDP')

if top_listener:
Expand Down
3 changes: 0 additions & 3 deletions fakenet/listeners/RawListener.py
Expand Up @@ -19,8 +19,6 @@ def __init__(self,
config,
name='RawListener',
logging_level=logging.INFO,
running_listeners=None,
diverter=None
):

self.logger = logging.getLogger(name)
Expand All @@ -30,7 +28,6 @@ def __init__(self,
self.name = name
self.local_ip = '0.0.0.0'
self.server = None
self.running_listeners = running_listeners
self.name = 'Raw'
self.port = 1337

Expand Down
3 changes: 0 additions & 3 deletions fakenet/listeners/SMTPListener.py
Expand Up @@ -21,8 +21,6 @@ def __init__(
config,
name='SMTPListener',
logging_level=logging.INFO,
running_listeners=None,
diverter=None
):

self.logger = logging.getLogger(name)
Expand All @@ -32,7 +30,6 @@ def __init__(
self.name = name
self.local_ip = '0.0.0.0'
self.server = None
self.running_listeners = running_listeners
self.name = 'SMTP'
self.port = 587

Expand Down
3 changes: 0 additions & 3 deletions fakenet/listeners/TFTPListener.py
Expand Up @@ -39,8 +39,6 @@ def __init__(self,
config,
name='TFTPListener',
logging_level=logging.INFO,
running_listeners=None,
diverter=None
):

self.logger = logging.getLogger(name)
Expand All @@ -50,7 +48,6 @@ def __init__(self,
self.name = name
self.local_ip = '0.0.0.0'
self.server = None
self.running_listeners = running_listeners
self.name = 'TFTP'
self.port = 69

Expand Down

0 comments on commit 5644303

Please sign in to comment.