0
我需要發送FIN數據包來關閉具有IP和端口信息的連接(以及來自previus數據包的其他信息)。如何通過scapy發送FIN數據包來關閉連接?
我已經看到,通過3方握手來建立一個新的連接(請參閱3 way handshake in Scapy),但沒有關閉連接。
我需要發送FIN數據包來關閉具有IP和端口信息的連接(以及來自previus數據包的其他信息)。如何通過scapy發送FIN數據包來關閉連接?
我已經看到,通過3方握手來建立一個新的連接(請參閱3 way handshake in Scapy),但沒有關閉連接。
正如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)
嘿Lucap。你可以設置最後一個數據包的TCP標誌爲'F'嗎?你有一個你正在使用的代碼的例子嗎? – Noob123