Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 等待多个数据包_Python_Http_Get_Scapy_Qos - Fatal编程技术网

Python 等待多个数据包

Python 等待多个数据包,python,http,get,scapy,qos,Python,Http,Get,Scapy,Qos,为了执行HTTP GET,我需要发送一个数据包(GET/HTTP/1.0\n\n)并等待3个数据包: 我得到的回音 得到的答案是:HTTP/1.0 200 OK 以及变速箱的尾部 我找到了两种方法: =>将sr()与多选项一起使用 =>发送GET请求后立即使用嗅探 对于sr()函数,问题是停止嗅探,唯一的选择是设置超时,但我的脚本将测试许多不同的站点,如此多不同的时间的答案,可能很难选择一个静态超时值,我确信没有站点在任何时候超过它 对于sniff,没有相同的问题,因为我可以将“count”参

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

我得到的回音

得到的答案是:HTTP/1.0 200 OK

以及变速箱的尾部

我找到了两种方法:

=>将sr()与多选项一起使用

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

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

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

完美的方法是使用sr()函数和“count=3”选项仅获取3个数据包,但该选项在sr()中不存在

没人有主意吗

非常感谢


对不起,我的语言是法语,这更多的是一个提示,而不是一个答案,但问题可能是您想要检查应用层请求的传输层数据包。通过发送
SYN
,等待并应答,然后发送
ACK
GET
,您可以将
httpget
拆分到传输层。这是一个描述你可能想要什么的例子

使用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()
但你可以用更好的方式来解释。手动发送您的数据包