diff options
Diffstat (limited to 'tools')
-rwxr-xr-x | tools/recover.py | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/tools/recover.py b/tools/recover.py new file mode 100755 index 000000000..01e01f92e --- /dev/null +++ b/tools/recover.py @@ -0,0 +1,35 @@ +#!/usr/bin/python + +import sys +import re +import socket +import binascii + +if len(sys.argv) < 2: + sys.exit("log file is not provided") + +path = sys.argv[1] +p = re.compile(r"\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} DEBUG: \[([0-9a-fA-F]{8}): (\d+) < [\d.]+] HEX: ([0-9a-fA-F]+)") + +ports = {} +messages = {} + +for line in open(path): + if "HEX:" in line: + m = p.match(line) + if m: + session = m.group(1) + port = m.group(2) + message = m.group(3) + ports[session] = port + if session not in messages: + messages[session] = [] + messages[session].append(message) + +for session in ports: + port = ports[session] + s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + s.connect(("localhost", int(port))) + for message in messages[session]: + s.send(binascii.unhexlify(message)) + s.close() |