1#!/usr/local/bin/python3
2
3print("send icmp6 with hop by hop header with router alert")
4
5import os
6import sys
7from struct import pack
8from addr import *
9from scapy.all import *
10
11if len(sys.argv) != 2:
12	print("usage: icmp6_hop_ra.py Nn")
13	exit(2)
14
15N=sys.argv[1]
16IF=eval("IF_"+N);
17ADDR6=eval("ADDR6_"+N);
18
19pid=os.getpid()
20eid=pid & 0xffff
21payload=b"ABCDEFGHIJKLMNOP"
22packet=IPv6(src=ADDR6, dst=ADDR6)/ \
23    IPv6ExtHdrHopByHop(options=[Pad1(),Pad1(),RouterAlert(),\
24    PadN(optdata=b"\x11\x22\x33\x44\x55\x66")])/ \
25    ICMPv6Unknown(type=6, code=0, msgbody=payload)
26
27# send does not work for some reason, add the bpf loopback layer manually
28#send(packet)
29bpf=pack('!I', 24) + bytes(packet)
30sendp(bpf, iface=IF)
31