Skip to content

Instantly share code, notes, and snippets.

@RJ
Created November 19, 2013 18:10
Show Gist options
  • Save RJ/7549732 to your computer and use it in GitHub Desktop.
Save RJ/7549732 to your computer and use it in GitHub Desktop.
Send an empty icmp6 echo packet from python, having bound to a specific source ipv6 address
#!/usr/bin/env python
import socket
import sys
## ipv6.google.com:
PING_TARGET = '2604:8300:100:200b:6667:3:0:4d1f'
source_ip = sys.argv[1]
addresses = [addr for addr in socket.getaddrinfo(source_ip, None) if socket.AF_INET6 == addr[0]]
src_address = addresses[0][-1][0]
print "Source addr: " + repr(src_address)
# A minimal ICMP6-echo message
data = '\x80\0\0\0\0\0\0\0'
sock = socket.socket(socket.AF_INET6, socket.SOCK_RAW, socket.getprotobyname('ipv6-icmp'))
sock.bind((src_address, 0))
sent = sock.sendto(data, (PING_TARGET, 0, 0, 0))
sock.close()
print "send: " + repr(sent)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment