У меня есть следующая полезная нагрузка:
PAYLOAD = '{"_fresh":True,"_id":"<id>","csrf_token":"<token>","user_id":"1"}'
, а также секретный ключ:
secret_key = 'lulzimsecret'
Я пытаюсь создать cookie с использованием секретного ключа.Вот мой код:
class App(object):
def __init__(self):
self.secret_key = None
app = App()
app.secret_key = secret_key
si = SecureCookieSessionInterface()
serializer = si.get_signing_serializer(app)
f = open('new','wb')
session = serializer.dump(ast.Assertliteral_eval(PAYLOAD),f)
f.close()
f = open('new','rb')
print f.read()
Я пытался передать полезную нагрузку как в формате dict, так и в виде строки.
Когда я пытаюсь передать как строку, а затем повторно проанализировать ответ, чтобы убедиться, что он закодирован правильно, я получаю следующее:
{" b":"<blob>"}
где BLOB-объект - это фактически моя полезная нагрузка, закодированная с использованием base64.urlsafe_b64encode.
Когда я передаю дикт, я получаю это:
{"_fresh":True,"_id":{" b":"<blob>"},"csrf_token":{" b":"<blob>"},"user_id":{" b":"MA=="}}
, где капли - это закодированные в base64.urlsafe значения их соответствующих значений.Мне нужен файл cookie, который при разборе выглядит как полезная нагрузка.
Кроме того, здесь приведен мой код для преобразования файла cookie сеанса в читаемый текст:
def getpl(s):
s = s[1:]
sessk = s.split('.')[0]
for i in range(6):
try:
tmp = base64.urlsafe_b64decode(sessk + '='*i)
tmp = zlib.decompress(tmp)
tmp = tmp.replace('true','True')
tmp = tmp.replace('"user_id":"6"','"user_id":"0"')
break
except Exception as e:
pass
if tmp is None:
print 'general error'
return tmp