gpt4 book ai didi

python - Scapy 等待多个数据包

转载 作者:可可西里 更新时间:2023-11-01 16:38:41 34 4
gpt4 key购买 nike

为了执行 HTTP GET,我需要发送一个数据包(GET/HTTP/1.0\n\n)并等待 3 个数据包:

我的GET的ACK

GET 响应:HTTP/1.0 200 OK

和传输的FIN ACK

我找到了两种方法:

=> 使用多选项的 sr()

=> 在发送我的 GET 请求后立即使用嗅探

  • 对于 sr() 函数,问题是停止嗅探,唯一的选择是设置超时,但是我的脚本会测试很多不同的站点,所以很多不同的时间答案,可能很难选择一个静态超时值,我确信任何时候都没有网站超过它。

  • 对于嗅探,没有相同的问题,因为我可以设置“计数”参数以仅获取 3 个数据包。但是很难使过滤器足够好以确保记录的 3 个数据包是我想要的 3 个(没有 ARP、DNS 或其他任何东西)。但主要问题有时是在“嗅探”启动之前(在发送(GET_PACKET)和 answers=sniff(...)之间)出现第一个应答数据包。在这种情况下,我丢失了一些信息并且我的所有后处理都已损坏。

完美的方法是使用带有“count=3”选项的 sr() 函数来只获取 3 个数据包,但 sr() 不存在该选项。

有人有想法吗?

非常感谢

对不起我的语言,我是法国人

最佳答案

使用 Sniff 并将过滤器设置为 TCP 端口 80对于延迟问题,您可以使用线程,首先在线程中启动嗅探器,然后发送数据包:

def sniffer():
packets=sniff(filter="tcp port 80" , count=5)
wrcap("test.cap" , packets) #save packets in .cap file
t = threading.Thread(target=sniffer)
t.start()

但您可以使用更好的方式来解释 HERE .手动发送您的数据包。

关于python - Scapy 等待多个数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13647853/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com