簡體   English   中英

使用Scapy對http數據包無響應

[英]no response for a http packet using scapy

我已經使用以下代碼來發送HTTP GET請求:

syn = IP(dst='www.google.com') / TCP(dport=80, flags='S')
syn_ack = sr1(syn)
getStr = 'GET / HTTP/1.1\r\nHost: www.google.com\r\n\r\n'
request = IP(dst='www.google.com') / TCP(dport=80, sport=syn_ack[TCP].dport,seq=syn_ack[TCP].ack, ack=syn_ack[TCP].seq + 1, flags='A') / getStr
reply = sr1(request)

而且我仍在等待接收來自Google的回復數據包

這可能與您未遵循正確的TCP協議有關。 讀取代碼后,您似乎忘記了三向握手(SYN-SYN_ACK-ACK)中的ACK。 因此,您正在發送數據,但由於您尚未完成設置連接,因此將忽略它​​。 嘗試執行以下操作。

syn = IP(dst='www.google.com') / TCP(dport=80, flags='S')
syn_ack = sr1(syn)
ack = TCP(sport=syn.sport, dport=80, flags='A', seq=syn_ack.ack, ack=syn_ack.seq + 1)
ack_resp = sr1(ip/ack)

getStr = 'GET / HTTP/1.1\r\nHost: www.google.com\r\n\r\n'
request = IP(dst='www.google.com') / TCP(sport=syn.sport, dport=80, flags='A', seq=ack_resp.ack, ack=ack_resp.seq $
reply = sr1(request)

我尚未對此進行測試,因此它可能會或可能不會起作用,但是如果沒有最后一個ACK,它肯定不會起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM