# -*- coding: utf-8 -*- from __future__ import unicode_literals from flask import Flask, request, make_response, redirect, url_for from flask.helpers import flash, get_flashed_messages from werkzeug.security import safe_str_cmp import pickle, base64 b64e=base64.b64encode b64d=base64.b64decode SECRET_KEY=b'XiAqnj3ju81jyBtqHttbOGDoxsv9PYvIlHHzm9sLDMp22iGkaB' cookie_secret='' app = Flask(__name__) app.config.from_object(__name__) @app.route('/') def home(): base_str = """
%s %s Remember brains! """ remembered_str = 'Hello, here is what we remember for you. If you want to change, delete or extend it, click below.
%s
' new_str = 'Hello fellow zombie, have you found a tasty brain and want to remember where? Go right here and enter it:
' location = getlocation() if location == False: return redirect(url_for("clear")) elif location == '': rem_str = new_str else: rem_str = remembered_str % location flash_str = '' for msg in get_flashed_messages(): flash_str += "%sEnter location of brains here:
""" % location def getlocation(): cookie = request.cookies.get('location') if not cookie: return '' (digest, location) = cookie.split("!") if not safe_str_cmp(calc_digest(location, cookie_secret), digest): flash("Hey! This is not a valid cookie! Leave me alone.") return False location = pickle.loads(b64d(location)) return location def make_cookie(location, secret): return "%s!%s" % (calc_digest(location, secret), location) def calc_digest(location, secret): from hashlib import sha256 return sha256("%s%s" % (location, secret)).hexdigest() def init_secret(): from os import path import random, string if not path.exists('secret'): with open("secret", "w") as f: secret = ''.join(random.choice(string.ascii_letters + string.digits) for x in range(5)) f.write(secret) with open("secret", "r") as f: return f.read() if __name__ == '__main__': cookie_secret = init_secret() app.run()