Se sei un programmatore Python puoi usare il programma di manipolazione interattiva dei pacchetti Scapy per crea i tuoi pacchetti e inviali. Puoi anche usarlo come libreria all'interno del tuo programma Python.
Dall'interno del programma interattivo ecco come è possibile creare un pacchetto IP, cambiare l'indirizzo di origine e inviarlo. Scapy utilizzerà qualsiasi percorso predefinito che hai impostato.
>>> 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()
La cosa divertente di Scapy è che crea tutte le intestazioni di livello inferiore per te se non le specifichi con valori predefiniti. Quindi nell'esempio precedente l'intestazione Ethernet viene creata per te già. Quindi probabilmente vuoi manipolare il livello TCP, quindi il codice seguente si baserà sull'esempio sopra.
>>> 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= {}
Se i percorsi sono impostati correttamente per arrivare a destinazione dovresti essere in grado di inviare il pacchetto. Scapy sarà anche in grado di catturare la risposta e cosa no se necessario. La documentazione fornisce buoni esempi semplici, ma non include esempi più avanzati. L'API non è ben documentata, ma esiste una versione di doxygen qui sopra.