From 573658e7a0435546e37e2360864f3a6875ffd2af Mon Sep 17 00:00:00 2001 From: Dobin Date: Thu, 7 Mar 2024 19:13:25 +0000 Subject: [PATCH] feature: web: start --- app/templates/project.html | 9 ++++++--- app/views.py | 17 ++++++++++++++--- supermega.py | 20 ++++++++++++-------- 3 files changed, 32 insertions(+), 14 deletions(-) diff --git a/app/templates/project.html b/app/templates/project.html index 0d7710f..3eda8dd 100644 --- a/app/templates/project.html +++ b/app/templates/project.html @@ -18,7 +18,6 @@
-
@@ -64,7 +63,7 @@ {% for name, value in decoderstyles %} + >{{value}} {% endfor %} @@ -85,10 +84,14 @@ -
+
+ + +
+
diff --git a/app/views.py b/app/views.py index 49d0aea..195ad7e 100644 --- a/app/views.py +++ b/app/views.py @@ -21,6 +21,7 @@ from app.storage import storage, Project views = Blueprint('views', __name__) conv = Ansi2HTMLConverter() +config.load() @views.route("/") @@ -64,12 +65,15 @@ def project(name): @views.route("/add_project", methods=['POST', 'GET']) def inject(): if request.method == 'POST': - config.load() settings = Settings() project_name = request.form['project_name'] settings.payload_path = "app/upload/shellcode/" + request.form['shellcode'] + if request.form['shellcode'] == "createfile.bin": + settings.verify = True + settings.try_start_final_infected_exe = False + settings.inject_exe_in = "app/upload/exe/" + request.form['exe'] settings.inject_exe_out = "app/upload/infected/" + request.form['exe'] + ".injected" @@ -124,8 +128,15 @@ def inject(): injectstyles=injectstyles, ) - #start(settings) - + +@views.route("/start_project", methods=['POST', 'GET']) +def start_project(): + #project_name = request.args.get('project_name') + project_name = request.form['project_name'] + project = storage.get_project(project_name) + start(project.settings) + return redirect("/project/{}".format(project_name), code=302) + @views.route("/build") def build(): diff --git a/supermega.py b/supermega.py index 07e9f51..1b76ccc 100644 --- a/supermega.py +++ b/supermega.py @@ -163,14 +163,18 @@ def start(settings: Settings): # Compile: Carrier to .asm (C -> ASM) if settings.generate_asm_from_c: - phases.compiler.compile( - c_in = main_c_file, - asm_out = main_asm_file, - payload_len = project.payload.len, - carrier = project.carrier, - source_style = project.settings.source_style, - exe_host = project.exe_host, - short_call_patching = project.settings.short_call_patching) + try: + phases.compiler.compile( + c_in = main_c_file, + asm_out = main_asm_file, + payload_len = project.payload.len, + carrier = project.carrier, + source_style = project.settings.source_style, + exe_host = project.exe_host, + short_call_patching = project.settings.short_call_patching) + except Exception as e: + logger.error(f'Error compiling: {e}') + return exit(1) # Assemble: Assemble .asm to .shc (ASM -> SHC) if settings.generate_shc_from_asm: