Skip to content

Commit

Permalink
fixed important decoder error regarding 'invalid list size', misc fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
sigalor committed Apr 13, 2018
1 parent 7429d33 commit e29b35f
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 7 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -255,7 +255,7 @@ Unfortunately, these binary ones cannot be looked at using the Chrome developer

### General development

- [ ] Allow usage on Windows, i.e. entirely fix [#10](https://github.com/sigalor/whatsapp-web-reveng/issues/16).
- [ ] Allow usage on Windows, i.e. entirely fix [#16](https://github.com/sigalor/whatsapp-web-reveng/issues/16).

### Documentation
- [ ] The _Node Handling_ section. Could become very long.
Expand Down
12 changes: 6 additions & 6 deletions backend/decoder.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ def readPacked8(self, tag):
ret = "";
for i in range(startByte & 127):
currByte = self.readByte();
ret += self.unpackByte(tag, (currByte & 240) >> 4) + self.unpackByte(tag, currByte & 15);
ret += self.unpackByte(tag, (currByte & 0xF0) >> 4) + self.unpackByte(tag, currByte & 0x0F);
if (startByte >> 7) == 0:
ret = ret[:len(ret)-1];
#print "read packed8: " + str(ret);
Expand Down Expand Up @@ -207,11 +207,11 @@ def readString(self, tag):
elif tag == Tags.LIST_EMPTY:
return;
elif tag == Tags.BINARY_8:
return self.readString(self.readByte()); # is this really "readStringFromChars"? At least seems like that...
return self.readStringFromChars(self.readByte()); # is this really "readStringFromChars"? At least seems like that...
elif tag == Tags.BINARY_20:
return self.readString(self.readInt20());
return self.readStringFromChars(self.readInt20());
elif tag == Tags.BINARY_32:
return self.readString(self.readInt32());
return self.readStringFromChars(self.readInt32());
elif tag == Tags.JID_PAIR:
i = self.readString(self.readByte());
j = self.readString(self.readByte());
Expand Down Expand Up @@ -280,13 +280,13 @@ def readBytes(self, n):

def getToken(self, index):
if index < 0 or index >= len(Tokens):
raise ValueError("invalid index: " + str(index));
raise ValueError("invalid token index: " + str(index));
return Tokens[index];

def getTokenDouble(self, index1, index2):
n = 256 * index1 + index2;
if n < 0 or n >= len(Tokens):
raise ValueError("invalid index: " + str(n));
raise ValueError("invalid token index: " + str(n));
return Tokens[n];


Expand Down
24 changes: 24 additions & 0 deletions backend/node_decoder_frombase64.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys;
sys.dont_write_bytecode = True;

import os;
import signal;
import base64;

from utilities import *;
import decoder;

reload(sys);
sys.setdefaultencoding("utf-8");



if len(sys.argv) < 2:
eprint("usage: " + sys.argv[0] + " [base64 string]");
exit();

processedData = decoder.processData("missing_tag", base64.b64decode(sys.argv[1]), doFilterNone=False, me="[email protected]", debug=True);
print json.dumps(processedData, indent=4, ensure_ascii=False, sort_keys=True);
File renamed without changes.

0 comments on commit e29b35f

Please sign in to comment.