TCP-соединение игнорирует поддельный RST-пакет

Я использую 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.

Я неправильно подделал свой пакет?


person Daniel Walker    schedule 30.06.2021    source источник