-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsniffing.py
More file actions
77 lines (64 loc) · 2.37 KB
/
Copy pathsniffing.py
File metadata and controls
77 lines (64 loc) · 2.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import threading
from scapy.all import *
import datetime
import os
import signal
import subprocess
class DatasetSniffer(threading.Thread):
def __init__(self, iface, local_dir='.', filename=str(datetime.datetime.now()), stop_filter=None, name=None):
threading.Thread.__init__(self)
self.iface = iface
self.filename = filename
self.local_dir = local_dir
self.stop_filter = stop_filter
self.writer = PcapWriter(local_dir+"/"+filename+".pcap", append=True, sync=True)
if name is not None:
self.name = name
def run(self):
sniff_interface(self.writer.write, self.iface, self.stop_filter)
def sniff_interface(write, iface, stop_filter):
sniff(store=0, prn=write, iface=iface, stop_filter=stop_filter)
class DatasetManager(object):
def __init__(self, directory, interfaces, name):
self.directory = directory
self.interfaces = interfaces
self.sniffers = {}
self.stop_sniffing = False
self.name = name
def init_sniffers(self):
for iface in self.interfaces:
#self.sniffers.append(DatasetSniffer(self.interfaces[iface], self.directory, iface, self.stop_filter, iface))
cmd = "tcpdump -ni " + self.interfaces[iface] + " -s 65535 -w " + self.directory + '/' + iface + ".pcap"
self.sniffers[iface] = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True, preexec_fn=os.setsid)
def stop_filter(self, p):
if self.stop_sniffing:
return True
else:
return False
def start(self):
self.init_sniffers()
# for sniffer in self.sniffers:
# sniffer.start()
def stop(self):
self.stop_sniffing = True
for sniffer in self.sniffers:
os.killpg(os.getpgid(self.sniffers[sniffer].pid), signal.SIGTERM)
if __name__ == "__main__":
local = "dataset/"
directory = local + str(datetime.datetime.now().strftime("%Y%m%d%H%M%S"))
os.makedirs(directory)
#DatasetSnifferExit = False
# Create new threads
interfaces = {
'attacker': "eno1",
'master': "enxdc9b9ced48d0",
#'slave': "eth2"
}
manager = DatasetManager(directory, interfaces, "test")
manager.start()
try:
while True:
pass
except KeyboardInterrupt:
manager.stop()
print "\nStopping Dataset Manager..."