diff --git a/supermega.py b/supermega.py index 03ebb81..ef55985 100644 --- a/supermega.py +++ b/supermega.py @@ -1,4 +1,3 @@ -import shutil import argparse from typing import Dict import os @@ -19,12 +18,14 @@ from model.settings import Settings from model.defs import * from log import setup_logging from model.carrier import DataReuseEntry +from utils import check_deps def main(): """Argument parsing for when called from command line""" logger.info("Super Mega") config.load() + check_deps() settings = Settings() parser = argparse.ArgumentParser(description='SuperMega shellcode loader') diff --git a/utils.py b/utils.py index ce3ad07..6d0edbb 100644 --- a/utils.py +++ b/utils.py @@ -3,6 +3,7 @@ import os import pathlib import glob import logging +import shutil from config import config from model.defs import * @@ -10,6 +11,20 @@ from model.defs import * logger = logging.getLogger("Utils") +def check_deps(): + cl = config.get("path_cl") + if shutil.which(cl) == None: + logger.error("Missing dependency: " + cl) + logger.error("Start in x64 Native Tools Command Prompt for VS 2022") + exit(1) + + ml = config.get("path_ml64") + if shutil.which(ml) == None: + logger.error("Missing dependency: " + ml) + logger.error("Start in x64 Native Tools Command Prompt for VS 2022") + exit(1) + + def delete_all_files_in_directory(directory_path): files = glob.glob(os.path.join(directory_path, '*')) for file_path in files: diff --git a/web.py b/web.py index 4fbdd9d..eb7774c 100644 --- a/web.py +++ b/web.py @@ -9,10 +9,14 @@ from app.views import views from app.views_project import views_project from app.views_shcdev import views_shcdev from log import setup_logging +from utils import check_deps + if __name__ == "__main__": logging.getLogger('werkzeug').setLevel(logging.ERROR) setup_logging() + check_deps() + parser = argparse.ArgumentParser() parser.add_argument('--listenip', type=str, help='IP to listen on', default="0.0.0.0") parser.add_argument('--listenport', type=int, help='Port to listen on', default=5001)