MITMf/core/logger.py
byt3bl33d3r eea5f53be2 Initial commit for v1.0 using mitmproxy instead of twisted
Added a plugin system to Net-Creds so you can now add your own parsers,
api hook names might change between now and the offcial release
(will submit a PR to the original repo once completed)

The main MITM HTTP Proxy now uses mitmproxy which is a big deal, cuts
the code down by an insane amount, no more twisted! yay!

Basic plugin have been re-wrote for the new proxy engine

Since we are using mitmproxy we have out of the box support for SSL/TLS!
2016-02-06 13:27:08 -07:00

51 lines
2.1 KiB
Python

import logging
import sys
from datetime import datetime
class ProxyLoggerAdapter(logging.LoggerAdapter):
def process(self, msg, kwargs):
return '[{}] {} [type:{}-{} os:{}] {}'.format(self.extra['proxy'],
self.extra['client'],
self.extra['browser'],
self.extra['browser_v'],
self.extra['os'],
msg), kwargs
class DebugLoggerAdapter(logging.LoggerAdapter):
def process(self, msg, kwargs):
return '[DEBUG][{}] {}'.format(self.extra['source'], msg), kwargs
class NetCredsAdapter(logging.LoggerAdapter):
def __init__(self, logger, extra):
self.logger = logger
self.extra = extra
self.extra['dst_ip_port'] = None
def process(self, msg, kwargs):
if self.extra['dst_ip_port'] is not None:
return '[Net-Creds][{}][{} > {}] {}'.format(self.extra['parser'],
self.extra['src_ip_port'],
self.extra['dst_ip_port'],
msg), kwargs
else:
return '[Net-Creds][{}][{}] {}'.format(self.extra['parser'],
self.extra['src_ip_port'].split(':')[0],
msg), kwargs
def setup_logger(level=logging.INFO):
formatter = logging.Formatter("%(asctime)s %(message)s", datefmt="%m-%d-%Y %H:%M:%S")
fileHandler = logging.FileHandler('./logs/MITMf_{}.log'.format(datetime.now().strftime('%Y-%m-%d')))
fileHandler.setFormatter(formatter)
streamHandler = logging.StreamHandler(sys.stdout)
streamHandler.setFormatter(formatter)
mitmf_logger = logging.getLogger('MITMf')
mitmf_logger.propagate = False
mitmf_logger.addHandler(streamHandler)
mitmf_logger.addHandler(fileHandler)
mitmf_logger.setLevel(level)