2017-02-23 1 views
0

Ich muss ein FIN-Paket senden, um eine Verbindung zu schließen, die IP- und Portinformation (plus andere Informationen von previus-Paketen) hat.Wie kann ich eine Verbindung über das Scapy-Senden eines FIN-Pakets schließen?

Ich habe gesehen, dass es möglich ist, eine neue Verbindung durch einen 3-Wege-Handshake herzustellen (siehe 3 way handshake in Scapy), aber nichts zum Verbindungsabbau.

+0

Hey Lucap. Könnten Sie das TCP-Flag des letzten Pakets auf 'F' setzen? Haben Sie ein Beispiel für den Code, den Sie verwenden? – Noob123

Antwort

0

Wie von der RFC angegeben, müssen Sie ein FIN-Segment senden, dann auf das Bestätigungssegment (ACK) + FIN des Endpunkts warten und dann ein letztes ACK-Segment dafür senden.

Hier ist ein einfaches Beispiel scapy mit:

from scapy.all import * 

conf.L3socket=L3RawSocket 

sport=10000 
dport=45000 
pkt=IP(src="1.2.3.4", dst="4.5.6.7") 

SYN=pkt/TCP(sport=sport, dport=dport, flags="S") 
SYNACK=sr1(SYN) 
ACK=pkt/TCP(sport=sport, dport=dport, flags="A", seq=SYNACK.ack, ack=SYNACK.seq + 1) 
send(ACK) 

# ... 

FIN=pkt/TCP(sport=sport, dport=dport, flags="FA", seq=SYNACK.ack, ack=SYNACK.seq + 1) 
FINACK=sr1(FIN) 
LASTACK=pkt/TCP(sport=sport, dport=dport, flags="A", seq=FINACK.ack, ack=FINACK.seq + 1) 
send(LASTACK) 
Verwandte Themen