summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuval Adam <yuval@y3xz.com>2016-03-24 01:41:47 +0200
committerYuval Adam <yuval@y3xz.com>2016-03-24 01:41:47 +0200
commit15bc07a8fe5d72bff673429f70b60fb8990fe3b4 (patch)
treed0bc50d9c707cb28051d27cc6f07867343bd15ec
parent45747990238cc708dfa370c8339a21f1aae5439b (diff)
Add is_valid() impl and test
-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