xref: /openbsd/regress/sys/net/pf_opts/igmp_bad.py (revision 473ed62e)
1#!/usr/local/bin/python3
2
3print("send internet group management protocol with unknown option")
4
5import os
6import sys
7from struct import pack
8from addr import *
9from scapy.all import *
10from scapy.contrib.igmp import *
11
12if len(sys.argv) != 2:
13	print("usage: igmp_bad.py Nn")
14	exit(2)
15
16N=sys.argv[1]
17IF=eval("IF_"+N);
18ADDR=eval("ADDR_"+N);
19
20pid=os.getpid()
21eid=pid & 0xffff
22packet=IP(src=ADDR, dst="224.0.0.1", ttl=1, options=b"\003\004\000\000")/ \
23    IGMP(type=0x11)
24
25# send() does not work for some reason, add the bpf loopback layer manually
26bpf=pack('!I', 2) + bytes(packet)
27sendp(bpf, iface=IF)
28