1

我正在尝试使用以下 python 脚本启动两个不同的 tshark 进程。

import pyshark
import subprocess

packet_count_pyshark = 0
packet_count_tshark = 0

tsharkCall = ["tshark", "-i", "Wi-Fi", "-w", "tshark_capture" + ".pcap"]
print("Starting TShark")
tshark_process = subprocess.Popen(tsharkCall, stderr=subprocess.DEVNULL)
print("Starting Pyshark")
capture = pyshark.LiveCapture(interface='Wi-Fi')
for packet in capture.sniff_continuously():
    packet_count_pyshark += 1
    print("Pyshark : ", packet_count_pyshark)

执行脚本后,我从浏览器打开了 10 个不同的 youtube 视频,以产生巨大的流量。等待大约 30 秒后。我用 CTRL+C 切断了程序流程。我看到 pyshark 捕获的最后一个数据包计数是 6672,但是 tshark pcapng 文件中的数据包数量是 63916。两者之间存在巨大差距。我想知道这起源于什么?我在做/理解错了吗?任何想法都值得赞赏。问题也出现在 github > https://github.com/KimiNewt/pyshark/issues/375

我的 Pyshark 版本是 0.4.2.9,我的 TShark 版本是 TShark (Wireshark) 3.0.0 (v3.0.0-0-g937e33de)

4

1 回答 1

1

我不确定,但我认为 tshark 的工作速度比 pyshark 快得多,您在循环时打印的点可能需要很多时间,这会导致 pyshark 丢弃数据包,导致 NIC 缓冲区已满,而且它们在不同的时间开始,这也可能导致差异

于 2019-10-14T07:28:17.787 回答