【问题标题】:no response for a http packet using scapy使用 scapy 对 http 数据包没有响应
【发布时间】:2016-10-22 22:47:57
【问题描述】:

我使用以下代码发送 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)

我还在等待接收来自谷歌的响应包

【问题讨论】:

  • 我认为这篇文章可能对您有所帮助。 link

标签: python http tcp get scapy


【解决方案1】:

这可能与您没有遵循正确的 TCP 协议有关。阅读您的代码,您似乎忘记了 3 次握手 (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​​,它肯定不会工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-20
    • 1970-01-01
    • 2021-02-07
    • 1970-01-01
    • 2021-03-19
    • 2013-09-11
    • 2014-08-18
    相关资源
    最近更新 更多