summaryrefslogtreecommitdiff
path: root/stegtoy/app/stegtoy.py
diff options
context:
space:
mode:
Diffstat (limited to 'stegtoy/app/stegtoy.py')
-rw-r--r--stegtoy/app/stegtoy.py45
1 files changed, 45 insertions, 0 deletions
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>
+ '''