Si eres programador de Python, puedes utilizar el programa interactivo de manipulación de paquetes de Scapy para Crea tus propios paquetes y envíalos. También puede usarlo como una biblioteca dentro de su propio programa Python.
Desde el programa interactivo, aquí se explica cómo puede crear un paquete IP, cambiar la dirección de origen y enviarlo. Scapy utilizará las rutas predeterminadas que haya configurado.
>>> pkt = IP(src="1.2.3.4", dst="5.6.7.8")
>>> pkt.show()
###[ IP ]###
version= 4
ihl= None
tos= 0x0
len= None
id= 1
flags=
frag= 0
ttl= 64
proto= ip
chksum= None
src= 1.2.3.4
dst= 5.6.7.8
\options\
>>> pkt.send()
Lo divertido de Scapy es que crea todos los encabezados de capa inferior para usted si no los especifica con los valores predeterminados. Entonces, en el ejemplo anterior, el encabezado de Ethernet ya está creado para usted. Probablemente desee manipular la capa TCP, por lo que el siguiente código se basará en el ejemplo anterior.
>>> ip_layer = IP(src="1.2.3.4", dst="5.6.7.8")
>>> tcp_layer = TCP()
>>> pkt = ip_layer/tcp_layer
>>> pkt.show()
###[ IP ]###
version= 4
ihl= None
tos= 0x0
len= None
id= 1
flags=
frag= 0
ttl= 64
proto= tcp
chksum= None
src= 1.2.3.4
dst= 5.6.7.8
\options\
###[ TCP ]###
sport= ftp_data
dport= http
seq= 0
ack= 0
dataofs= None
reserved= 0
flags= S
window= 8192
chksum= None
urgptr= 0
options= {}
Siempre que sus rutas estén configuradas correctamente para llegar a su destino, debería poder enviar el paquete. Scapy también podrá capturar la respuesta y lo que no, si es necesario. La documentación proporciona buenos ejemplos simples, pero carece de ejemplos más avanzados. La API no está bien documentada, pero hay una versión de doxygen aquí arriba