From 15229329dcc1da68f669f145208a65d489df5b8a Mon Sep 17 00:00:00 2001 From: Yuval Adam Date: Thu, 24 Mar 2016 21:44:10 +0200 Subject: Extract body property and test for bad preamble decoding --- viewstate.py | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) (limited to 'viewstate.py') diff --git a/viewstate.py b/viewstate.py index 30da967..d1c9cf8 100644 --- a/viewstate.py +++ b/viewstate.py @@ -1,14 +1,37 @@ from base64 import b64decode, b64encode +CONSTS = { + '\x64': {}, + '\x65': '', + '\x66': 0, + '\x67': True, + '\x68': False +} + +def parse(): + pass + + class ViewState(object): def __init__(self, base64_encoded): self.base64_encoded = base64_encoded self.raw = b64decode(self.base64_encoded) + self.decoded = None + + @property + def body(self): + return self.raw[:2] def is_valid(self): format_marker = b'\xff' version_marker = b'\x01' preamble = format_marker + version_marker - return self.raw[:2] == preamble + return self.body == preamble + + def decode(self): + if not self.is_valid(): + raise Exception('Cannot decode invalid viewstate, bad preamble') + self.decoded = parse(self.body) + return self.decoded -- cgit v1.3.1