diff options
Diffstat (limited to 'stegtoy/app')
| -rw-r--r-- | stegtoy/app/requirements.txt | 10 | ||||
| -rw-r--r-- | stegtoy/app/stegtoy.py | 45 |
2 files changed, 55 insertions, 0 deletions
diff --git a/stegtoy/app/requirements.txt b/stegtoy/app/requirements.txt new file mode 100644 index 0000000..d9b53c5 --- /dev/null +++ b/stegtoy/app/requirements.txt @@ -0,0 +1,10 @@ +click==7.1.2 +Flask==1.1.2 +Flask-JWT-Extended==4.1.0 +gunicorn==20.0.4 +itsdangerous==1.1.0 +Jinja2==2.11.3 +MarkupSafe==1.1.1 +PyJWT==2.0.1 +Werkzeug==1.0.1 +requests==2.25.1 diff --git a/stegtoy/app/stegtoy.py b/stegtoy/app/stegtoy.py new file mode 100644 index 0000000..2c9c4b9 --- /dev/null +++ b/stegtoy/app/stegtoy.py @@ -0,0 +1,45 @@ +import os +import subprocess +import shlex +from flask import Flask, flash, request, redirect, make_response, url_for +from werkzeug.utils import secure_filename + +app = Flask(__name__) + +@app.route('/', methods=['GET', 'POST']) +def upload_file(): + if request.method == 'POST': + # check if the post request has the file part + if 'file' not in request.files: + flash('No file part') + return redirect(request.url) + if 'data' not in request.form: + flash("No string input") + file = request.files['file'] + if file: + if file.filename == '': + flash('No selected file') + return redirect(request.url) + try: + binary = subprocess.check_output( + "./bmpencode /dev/stdin /dev/stdout {}".format(shlex.quote(request.form['data'])), + stdin=file.stream, + stderr=subprocess.PIPE, + shell=True + ) + response = make_response(binary) + response.headers.set('Content-Type', 'image/bmp') + response.headers.set('Content-Disposition', 'attachment', filename='encoded.bmp') + return response + except subprocess.CalledProcessError as e: + return e.stderr + return ''' + <!doctype html> + <title>Hide Text in a BMP</title> + <h1>Upload new File</h1> + <form method=post enctype=multipart/form-data> + <input type=file name=file> + <input type=text name=data> + <input type=submit value=Upload> + </form> + ''' |