From 16adc1d99e100562e04b93bbab82ae4fab5193e5 Mon Sep 17 00:00:00 2001 From: cheeest Date: Tue, 8 Apr 2025 23:00:54 +0300 Subject: [PATCH] feat(forensic): base task and flag accept --- app.py | 16 ++++++++++++++-- func.py | 2 +- templates/base.html | 33 +++++++++++++++++++++++++++++++++ templates/hex.html | 4 +--- 4 files changed, 49 insertions(+), 6 deletions(-) create mode 100644 templates/base.html diff --git a/app.py b/app.py index 06fa8cb..348e9f2 100644 --- a/app.py +++ b/app.py @@ -3,6 +3,7 @@ from flask import Flask, render_template, request, url_for, session, redirect, g import sqlite3 from random import getrandbits from func import * +import base64 connection = sqlite3.connect('database.db') cursor = connection.cursor() @@ -99,9 +100,20 @@ def fmetadata(): def forensic_task1(): return send_file(f'/tmp/task1/{session['task1_id']}.jpg') -@app.route("/forensic/base-guide") +@app.route("/forensic/base-guide", methods=('GET', 'POST')) def fbase(): - return render_template('base.html') + flag_task2 = session['flag_task2'] + if request.method == 'POST': + user_flag = request.form['user_flag'] + if user_flag == flag_task2: + return render_template('base.html', flag=flag_task2, success_flag='.') + return render_template('base.html', flag=flag_task2, error='Ошибка: неверный флаг!') + if not flag_task2: + session['flag_task2'] = flag_task2 = f'C4TchFl4g{{{hex(getrandbits(45))[2:]}}}' + base32str = str(base64.b32encode(flag_task2.encode()))[2:-1] + base64str = str(base64.b64encode(f"Ой-ой, похоже, что самое главное всё ещё зашифровано( {base32str}".encode()))[2:-1] + return render_template('base.html', base_task=base64str) + @app.route("/forensic/.docx_files", methods=('GET', 'POST')) def fbinwalk(): diff --git a/func.py b/func.py index d5c51a0..979c086 100644 --- a/func.py +++ b/func.py @@ -5,4 +5,4 @@ def task1_flag(flag_task1, id): if not os.path.exists('/tmp/task1'): os.mkdir('/tmp/task1') os.system(f'cp static/imgs/task1.jpg /tmp/task1/{id}.jpg') - os.system(f"exiftool -Comment='{flag_task1}' /tmp/task1/{id}.jpg") \ No newline at end of file + os.system(f"exiftool -Comment='{flag_task1}' /tmp/task1/{id}.jpg") diff --git a/templates/base.html b/templates/base.html new file mode 100644 index 0000000..3517004 --- /dev/null +++ b/templates/base.html @@ -0,0 +1,33 @@ +{% extends 'utils/_task.html' %} +{% include 'utils/_forensicsidenav.html' %} +{% block content %} + + +
+
+

На просторах небезызвестной ветки /b форума Двач я нашёл это.. Оно определённо точно напоминает мне какую-то кодировку.. или их там сразу две? Поможешь разгадать эту загадку?

+
{{ base_task }}
+
+
+

Введите ответ:

+
+ + +
+
+
+ + + + {% if error %} +

{{ error }}

+ {% elif success_flag %} +
+

Вы прошли задание!

+ + < Вернуться к заданиям > +
+ {% endif %} +{% endblock %} \ No newline at end of file diff --git a/templates/hex.html b/templates/hex.html index e767f0e..c9689b0 100644 --- a/templates/hex.html +++ b/templates/hex.html @@ -12,15 +12,13 @@

Введите ответ:

-
+
- - {% if error %}

{{ error }}

{% elif success_flag %}