aboutsummaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
authorToni Uhlig <matzeton@googlemail.com>2020-08-18 16:48:01 +0200
committerToni Uhlig <matzeton@googlemail.com>2020-08-18 16:48:01 +0200
commite6c2bc6373d9848cdef61919b1297a1c93e99dc4 (patch)
tree2d7af74b2213f5abfb82879604a3782cf6c0a3ba /contrib
parent230e96803ef1a3428e9b6a237a6b538207af82cd (diff)
merged code to reduce code duplicates
Signed-off-by: Toni Uhlig <matzeton@googlemail.com>
Diffstat (limited to 'contrib')
-rw-r--r--contrib/nDPIsrvd.py39
1 files changed, 39 insertions, 0 deletions
diff --git a/contrib/nDPIsrvd.py b/contrib/nDPIsrvd.py
index 060340815..dd85cca58 100644
--- a/contrib/nDPIsrvd.py
+++ b/contrib/nDPIsrvd.py
@@ -1,6 +1,8 @@
#!/usr/bin/env python3
+import json
import re
+import scapy.all
import socket
DEFAULT_HOST = '127.0.0.1'
@@ -53,3 +55,40 @@ class nDPIsrvdSocket:
self.digitlen = 0
return retval
+
+class PcapPacket:
+ def __init__(self, flow_id=-1):
+ self.pktdump = None
+ self.was_dumped = False
+ self.was_detected = False
+ self.flow_id = flow_id
+ self.packets = []
+
+ def addPacket(self, pkt):
+ self.packets += [pkt]
+
+ def detected(self):
+ self.was_detected = True
+
+ def fin(self, filename_suffix):
+ if self.was_dumped is True:
+ return
+ if self.was_detected is True:
+ return
+
+ if self.pktdump is None:
+ if self.flow_id == -1:
+ self.pktdump = scapy.all.PcapWriter('packet-{}.pcap'.format(filename_suffix),
+ append=True, sync=True)
+ else:
+ self.pktdump = scapy.all.PcapWriter('flow-{}-{}.pcap'.format(filename_suffix, self.flow_id),
+ append=False, sync=True)
+
+ for packet in self.packets:
+ self.pktdump.write(scapy.all.Raw(packet))
+
+ self.pktdump.close()
+ self.was_dumped = True
+
+def JsonParseBytes(json_bytes):
+ return json.loads(json_bytes.decode('ascii', errors='replace'), strict=False)