summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md6
-rw-r--r--test.py13
-rw-r--r--viewstate.py14
3 files changed, 33 insertions, 0 deletions
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