summaryrefslogtreecommitdiff
path: root/stegtoy/app
diff options
context:
space:
mode:
Diffstat (limited to 'stegtoy/app')
-rw-r--r--stegtoy/app/requirements.txt10
-rw-r--r--stegtoy/app/stegtoy.py45
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>
+ '''