【问题标题】:Difference between PyShark and TShark Packet CountPyShark 和 TShark 数据包计数之间的差异
【发布时间】:2020-02-10 18:50:03
【问题描述】:

我正在尝试使用以下 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)

【问题讨论】:

    标签: python python-3.x wireshark tshark pyshark


    【解决方案1】:

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

    【讨论】:

    • 我不确定网络接口卡缓冲区,是的,它可能是问题的根源。但我可以说,当我离开程序运行时,两者之间的差距会扩大。所以我不认为这是因为它们是在不同的时间开始的。我会尝试检查网卡缓冲区,看看是否有问题。谢谢。
    • @I.K.我认为你应该在不打印的情况下检查它,让它循环运行大约 2 分钟,然后检查两者的结果,打印在捕获数据包方面可能需要很长时间,2 分钟后只打印计数器跨度>
    猜你喜欢
    • 1970-01-01
    • 2021-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多