Я использую scapy для проверки подделки RST-пакетов.
Мой сценарий
import scapy.all as scapy
p = scapy.sniff(
count=1,
iface='lo',
filter='tcp port 5000 and tcp[13:1] = 16'
)[0] # Capture ACK packet
new_p = scapy.IP(dst='127.0.0.1') / scapy.TCP(
flags='R',
sport=p.sport,
dport=p.dport,
seq=p.seq,
)
scapy.send(new_p)
Пока этот скрипт работает, я запускаю nc -4 -l 127.0.0.1 5000
и nc -4 127.0.0.1 5000
в двух других окнах. Мой скрипт Python выполняется и возвращается. Глядя в Wireshark, я вижу трехстороннее рукопожатие, за которым сразу же следует поддельный пакет RST, предположительно отправленный клиентом. Однако соединение не прерывается, так как я все еще могу отправлять пакеты обратно и принудительно между двумя экземплярами netcat.
Я неправильно подделал свой пакет?