#https://github.com/noraj/flask-session-cookie-manager/blob/master/flask_session_cookie_manager3.py
#python3 -m pip install flask
#python3 -m pip install itsdangerous
import zlib
from itsdangerous import base64_decode
import ast
from flask.sessions import SecureCookieSessionInterface
class MockApp(object):
def __init__(self, secret_key):
self.secret_key = secret_key
def encode(secret_key, session_cookie_structure):
try:
app = MockApp(secret_key)
session_cookie_structure = dict(ast.literal_eval(session_cookie_structure))
si = SecureCookieSessionInterface()
s = si.get_signing_serializer(app)
return s.dumps(session_cookie_structure)
except Exception as e:
return "[Encoding error] {}".format(e)
raise e
def decode(session_cookie_value, secret_key=None):
try:
if(secret_key==None):
compressed = False
payload = session_cookie_value
if payload.startswith('.'):
compressed = True
payload = payload[1:]
data = payload.split(".")[0]
data = base64_decode(data)
if compressed:
data = zlib.decompress(data)
return data
else:
app = MockApp(secret_key)
si = SecureCookieSessionInterface()
s = si.get_signing_serializer(app)
return s.loads(session_cookie_value)
except Exception as e:
return "[Decoding error] {}".format(e)
raise e
SECRET_KEY = 'Sup3rUnpredictableK3yPleas3Leav3mdanfe12332942'
print(decode("eyJBZG1pbiI6ImFkbWluIiwidGVzdCI6W119.YL5ioA.dSRlyDjrksMaHk-aM7xuO1KjGXg",SECRET_KEY))
Comments