aboutsummaryrefslogtreecommitdiff
path: root/tools/recover.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/recover.py')
-rwxr-xr-xtools/recover.py35
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()