diff options
author | Aldo Cortesi <aldo@nullcube.com> | 2015-05-17 11:31:02 +1200 |
---|---|---|
committer | Aldo Cortesi <aldo@nullcube.com> | 2015-05-17 11:31:02 +1200 |
commit | bddf81edfc07aab065c12b245665b613d2f61e13 (patch) | |
tree | c8bc54863ee24b73cef0a96ffcd8497b6fde4bef /libpathod/language/websockets.py | |
parent | cd2fb13b3e9ced39059f3d6572fd8806d0026d2e (diff) | |
download | mitmproxy-bddf81edfc07aab065c12b245665b613d2f61e13.tar.gz mitmproxy-bddf81edfc07aab065c12b245665b613d2f61e13.tar.bz2 mitmproxy-bddf81edfc07aab065c12b245665b613d2f61e13.zip |
websockets: lINTEGER to specify payload length
Diffstat (limited to 'libpathod/language/websockets.py')
-rw-r--r-- | libpathod/language/websockets.py | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/libpathod/language/websockets.py b/libpathod/language/websockets.py index 428f3b4d..a006c50d 100644 --- a/libpathod/language/websockets.py +++ b/libpathod/language/websockets.py @@ -10,6 +10,7 @@ from . import base, generators, actions, message wf:-fin:-rsv1:-rsv2:-rsv3:-mask wf:l234 + wf:mask:r"foo """ @@ -64,11 +65,17 @@ class KeyNone(base.CaselessLiteral): TOK = "knone" +class Length(base.Integer): + bounds = (0, 1<<64) + preamble = "l" + + class WebsocketFrame(message.Message): comps = ( Body, OpCode, + Length, # Bit flags Fin, RSV1, @@ -122,6 +129,10 @@ class WebsocketFrame(message.Message): def knone(self): return self.tok(KeyNone) + @property + def toklength(self): + return self.tok(Length) + @classmethod def expr(klass): parts = [i.expr() for i in klass.comps] @@ -157,6 +168,8 @@ class WebsocketFrame(message.Message): else: bodygen = None length = 0 + if self.toklength: + length = int(self.toklength.value) frameparts = dict( payload_length = length ) |