问题
我编写了一个从主机嗅探数据包的脚本,但是,我正在以连续模式嗅探数据包,并希望在超时时停止嗅探。我已经编写了以下代码来停止数据包嗅探,但是当时间明显超过超时时它似乎并没有停止。我在这里做错了什么?
import time
import pyshark
prog_start = time.time()
capture = pyshark.LiveCapture(interface='en0')
capture.sniff(timeout=10)
start_time = capture[0].frame_info.time_epoch
end_time = capture[-1].frame_info.time_epoch
print("Capture lasted:", float(end_time) - float(start_time))
pkt_num = 0
for pkt in capture:
pkt_num += 1
print("Time", time.time() - prog_start, "Pkt#", pkt_num)
然后我们得到这个输出,每秒有数千个额外的数据包,超过捕获应该停止的时间:
Capture lasted: 9.148329019546509
Time 10.346031188964844 Pkt# 1
Time 10.348641157150269 Pkt# 2
Time 10.351708889007568 Pkt# 3
Time 10.353564977645874 Pkt# 4
Time 10.35555100440979 Pkt# 5
...
问题
为什么 PyShark 超时后继续抓包?