From 29ae75e6bf728fc396560db93bec6e9d64cf1d91 Mon Sep 17 00:00:00 2001 From: zblurx Date: Fri, 17 Feb 2023 14:20:16 +0100 Subject: [PATCH] init log_mode --- cme/crackmapexec.py | 3 ++- cme/data/cme.conf | 1 + cme/logger.py | 31 +++++++++++++++++-------------- 3 files changed, 20 insertions(+), 15 deletions(-) diff --git a/cme/crackmapexec.py b/cme/crackmapexec.py index da948c37..46ec276c 100755 --- a/cme/crackmapexec.py +++ b/cme/crackmapexec.py @@ -16,7 +16,6 @@ from cme.context import Context from concurrent.futures import ThreadPoolExecutor from pprint import pformat from decimal import Decimal -import time import asyncio import aioconsole import functools @@ -140,6 +139,8 @@ def main(): jitter = None server_port_dict = {'http': 80, 'https': 443, 'smb': 445} current_workspace = config.get('CME', 'workspace') + if config.get('CME', 'log_mode') != "False": + logger.setup_logfile() if args.verbose: setup_debug_logger() diff --git a/cme/data/cme.conf b/cme/data/cme.conf index 5ef700b5..5d76c2fa 100755 --- a/cme/data/cme.conf +++ b/cme/data/cme.conf @@ -3,6 +3,7 @@ workspace = default last_used_db = smb pwn3d_label = Pwn3d! audit_mode = +log_mode = False [BloodHound] bh_enabled = False diff --git a/cme/logger.py b/cme/logger.py index 088f370a..839eafaf 100755 --- a/cme/logger.py +++ b/cme/logger.py @@ -2,6 +2,7 @@ # -*- coding: utf-8 -*- import logging +import os import sys import re from cme.helpers.misc import called_from_cmd_args @@ -33,6 +34,7 @@ class CMEAdapter(logging.LoggerAdapter): def __init__(self, logger_name='CME', extra=None): self.logger = logging.getLogger(logger_name) self.extra = extra + self.outputfile = None def process(self, msg, kwargs): if self.extra is None: @@ -107,6 +109,16 @@ class CMEAdapter(logging.LoggerAdapter): out = CMEAdapter.message CMEAdapter.message = '' return out + + def setup_logfile(self): + formatter = logging.Formatter("%(message)s") + self.outputfile = init_log_file() + open(self.outputfile, 'x') + fileHandler = logging.FileHandler(filename=self.outputfile, mode="a") + with fileHandler._open() as f: + f.write("> %s\n\n" % " ".join(sys.argv)) + fileHandler.setFormatter(formatter) + self.logger.addHandler(fileHandler) def setup_debug_logger(): debug_output_string = "{} %(message)s".format(colored('DEBUG', 'magenta', attrs=['bold'])) @@ -117,31 +129,22 @@ def setup_debug_logger(): root_logger = logging.getLogger() root_logger.handlers = [] root_logger.addHandler(streamHandler) - #root_logger.addHandler(fileHandler) root_logger.setLevel(logging.DEBUG) return root_logger -def setup_logger(level=logging.INFO, log_to_file=False, log_prefix=None, logger_name='CME'): +def setup_logger(level=logging.INFO, logger_name='CME'): formatter = logging.Formatter("%(message)s") - if log_to_file: - if not log_prefix: - log_prefix = 'log' - - log_filename = '{}_{}.log'.format(log_prefix.replace('/', '_'), datetime.now().strftime('%Y-%m-%d')) - fileHandler = logging.FileHandler('./logs/{}'.format(log_filename)) - fileHandler.setFormatter(formatter) - streamHandler = logging.StreamHandler(sys.stdout) streamHandler.setFormatter(formatter) cme_logger = logging.getLogger(logger_name) cme_logger.propagate = False cme_logger.addHandler(streamHandler) - - if log_to_file: - cme_logger.addHandler(fileHandler) - cme_logger.setLevel(level) return cme_logger + +def init_log_file(): + log_filename = os.path.join(os.path.expanduser('~/.cme'), 'logs','full-log_{}.log'.format(datetime.now().strftime('%Y-%m-%d_%H-%M-%S'))) + return log_filename \ No newline at end of file