From 15bc07a8fe5d72bff673429f70b60fb8990fe3b4 Mon Sep 17 00:00:00 2001 From: Yuval Adam Date: Thu, 24 Mar 2016 01:41:47 +0200 Subject: Add is_valid() impl and test --- README.md | 6 ++++++ test.py | 13 +++++++++++++ viewstate.py | 14 ++++++++++++++ 3 files changed, 33 insertions(+) create mode 100644 test.py create mode 100644 viewstate.py diff --git a/README.md b/README.md index d1f8de4..b59ed74 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,12 @@ from viewstate import ViewState vs = ViewState(base64EncodedViewState) ``` +## Test + +```python +python test.py +``` + ## References - https://github.com/mutantzombie/JavaScript-ViewState-Parser diff --git a/test.py b/test.py new file mode 100644 index 0000000..84249b2 --- /dev/null +++ b/test.py @@ -0,0 +1,13 @@ +import unittest + +from viewstate import ViewState + +class TestViewState(unittest.TestCase): + + def test_is_valid(self): + with open('samples/ngcs.sample', 'r') as f: + vs = ViewState(f.read()) + self.assertTrue(vs.is_valid()) + +if __name__ == '__main__': + unittest.main() diff --git a/viewstate.py b/viewstate.py new file mode 100644 index 0000000..30da967 --- /dev/null +++ b/viewstate.py @@ -0,0 +1,14 @@ +from base64 import b64decode, b64encode + + +class ViewState(object): + + def __init__(self, base64_encoded): + self.base64_encoded = base64_encoded + self.raw = b64decode(self.base64_encoded) + + def is_valid(self): + format_marker = b'\xff' + version_marker = b'\x01' + preamble = format_marker + version_marker + return self.raw[:2] == preamble -- cgit v1.3.1