2017-02-23 147 views

回答

0

正如RFC所述,您需要發送一個FIN段,然後等待端點的確認(ACK)+ FIN段,然後發送最後一個ACK段。

下面是使用Scapy的一個簡單的例子:

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)