diff --git a/script.py b/script.py new file mode 100644 index 0000000..026a5bd --- /dev/null +++ b/script.py @@ -0,0 +1,52 @@ +from time import sleep + +from scapy.all import ICMP, IP, Dot1Q, Ether, sendp, AsyncSniffer, wrpcap +from tqdm import tqdm + +a = AsyncSniffer(iface="enp5s0d1", filter="icmp") +a.start() +for i in tqdm(range(0, 4095)): + sendp( + Ether(dst="00:02:c9:27:10:73", src="00:f0:cb:ef:e0:3b") + / Dot1Q(vlan=i) + / IP(dst="10.0.45.45", src="10.0.45.5") + / ICMP(id=i), + iface="enp2s0", + verbose=False, + ) +print("Wrapping up and waiting for last packets") +sleep(1) +plist = a.stop() + +seen = [False for i in range(4095)] +icmpid = [False for i in range(4095)] + +def pprint(seen): + last = None + s = "" + for k, v in enumerate(seen): + if v and last is None: + last = k + s += str(k) + if not v and last is not None: + if k-1 == last: + s += "," + else: + s += f"-{k-1}," + last = None + if last is not None and last < k: + s += f"-{k}" + return s + "\n" + + +for p in plist: + if Dot1Q in p: + vlan = int(p[Dot1Q].vlan) + seen[vlan] = True + if ICMP in p and p[ICMP].id == vlan: + icmpid[vlan] = True + +print("Icmp correspondance") +print(pprint(icmpid)) +print("Seen vlans") +print(pprint(seen))