1
0
Fork 0
junos-testing-framework/script.py
2026-01-24 13:12:03 +01:00

52 lines
1.2 KiB
Python

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))