ui: nicer log output and error handling

This commit is contained in:
Dobin
2024-02-19 19:50:35 +00:00
parent e3d2deb4a0
commit ab80be8a3d
3 changed files with 18 additions and 7 deletions
+13 -3
View File
@@ -35,8 +35,17 @@ def clean_files():
def run_process_checkret(args, check=True): def run_process_checkret(args, check=True):
ret = subprocess.run(args, ret = subprocess.CompletedProcess("", 666)
capture_output=True) try:
ret = subprocess.run(args, capture_output=True)
except KeyboardInterrupt:
logger.warn("Caught KeyboardInterrupt, exiting gracefully...")
except subprocess.CalledProcessError as e:
logger.warn(f"Command '{e.cmd}' returned non-zero exit status {e.returncode}.")
# Handle the error case
except Exception as e:
logger.warn(f"An error occurred: {e}")
# Handle other exceptions
with open("logs/cmdoutput.log", "ab") as f: with open("logs/cmdoutput.log", "ab") as f:
cmd = "------------------------------------\n" cmd = "------------------------------------\n"
@@ -92,12 +101,13 @@ def delete_all_files_in_directory(directory_path):
def rbrunmode_str(rbrunmode): def rbrunmode_str(rbrunmode):
rbrunmode = str(rbrunmode)
if rbrunmode == "1": if rbrunmode == "1":
return "change AddressOfEntryPoint" return "change AddressOfEntryPoint"
elif rbrunmode == "2": elif rbrunmode == "2":
return "hijack branching instruction at Original Entry Point (jmp, call, ...)" return "hijack branching instruction at Original Entry Point (jmp, call, ...)"
else: else:
return "Invalid" return "Invalid: {}".format(rbrunmode)
def hexdump(data, addr = 0, num = 0): def hexdump(data, addr = 0, num = 0):
+2 -1
View File
@@ -8,7 +8,7 @@ import tempfile
from pehelper import * from pehelper import *
from model import * from model import *
from observer import observer from observer import observer
from helper import rbrunmode_str
from derbackdoorer.derbackdoorer import PeBackdoor from derbackdoorer.derbackdoorer import PeBackdoor
logger = logging.getLogger("Injector") logger = logging.getLogger("Injector")
@@ -23,6 +23,7 @@ def inject_exe(
logger.info("--[ Injecting: {} into: {} -> {} mode {}".format( logger.info("--[ Injecting: {} into: {} -> {} mode {}".format(
shellcode_in, exe_in, exe_out, inject_mode shellcode_in, exe_in, exe_out, inject_mode
)) ))
logger.warn("--[ Inject mode: {}".format(rbrunmode_str(inject_mode)))
+3 -3
View File
@@ -229,7 +229,7 @@ def start(project: Project):
exit_code = phases.injector.verify_injected_exe(project.inject_exe_out) exit_code = phases.injector.verify_injected_exe(project.inject_exe_out)
elif project.try_start_final_infected_exe: elif project.try_start_final_infected_exe:
logger.info("--[ Start infected exe") logger.info("--[ Start infected exe: {}".format(project.inject_exe_out))
run_process_checkret([ run_process_checkret([
project.inject_exe_out, project.inject_exe_out,
], check=False) ], check=False)
@@ -339,10 +339,10 @@ class ListHandler(logging.Handler):
def setup_logging(): def setup_logging():
root_logger = logging.getLogger() root_logger = logging.getLogger()
root_logger.setLevel(logging.DEBUG) root_logger.setLevel(logging.INFO)
ch = logging.StreamHandler() ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG) ch.setLevel(logging.INFO)
ch.setFormatter(CustomFormatter()) ch.setFormatter(CustomFormatter())
list_handler = ListHandler(log_messages) list_handler = ListHandler(log_messages)