Внедрение TCP-пакетов с python (scapy) в середине потока - PullRequest
0 голосов
/ 24 мая 2018

Я бегал по кругу со следующим сценарием:

Клиент отправляет GET-запрос, запрашивая ресурс размером в несколько полных MSS 1460-байтовых TCP-пакетов, скажем, 6. Как заставитьscapy для отправки сегмента TCP с флагом FIN ДО того, как все пакеты будут доставлены сервером, т.е.после пакета 1,2,3,4,5

пробовал комбинацию простых запросов / цикла curl и скрипта python / scapy:

    from scapy.all import * from time import sleep

    os.system("iptables -I OUTPUT -p tcp --tcp-flags ALL RST,ACK -j DROP")  
    os.system("iptables -I OUTPUT -p tcp --tcp-flags ALL RST -j DROP")

    def packet(pkt):
    if pkt[TCP].flags == 16:
    print('ACK packet detected port : ' + str(pkt[TCP].sport) + ' from IP Src   : ' + pkt[IP].src)
    send(IP(dst=pkt[IP].src, src=pkt[IP].dst)/TCP(dport=pkt[TCP].sport, sport=pkt[TCP].dport,ack=pkt[TCP].seq + 1, flags='F')) sniff(iface="ens160", prn=packet, filter="host 1.1.1.1",count=10)

Но сегмент, содержащий флаг FIN, прибывает всегдапоздно и из-за TCP seq / ack синхронизация.

...