如何通过合并WireShark来监视基于Python的程序包的网络流量?

时间:2019-07-13 00:17:34

标签: python-3.x wireshark network-monitoring

我正在尝试找到监视基于Python的程序包的网络流量的方法。一种建议的方法是将WireShark合并到软件包中。我以前从未做过这样的事情,也无法在Internet上找到与此有关的任何教程。而且,无论我能收集到什么,似乎都建议使用PyShark作为包装器来执行任务。有人可以为我提供一些指导,例如代码片段或关于如何解决该任务的指针吗?任何帮助将非常感激。

1 个答案:

答案 0 :(得分:0)

弄清楚,我可能可以使用TSharkpyshark来监视基于Python的程序包的网络流量。有关详细信息,请参见https://www.wireshark.org/docs/man-pages/tshark.html上的官方文档。可以按照以下来源做我最初想做的事情:


截至2019年7月17日的更新:

因此,对我而言,主要要注意的是,我可以使用pyshark中的两种方法来捕获数据包,即FileCaptureLiveCaptureFileCapture主要用于从捕获文件中读取数据,因此它对我没有太大帮助,因为我想捕获一些实时事件。另一方面,LiveCapture用于从实时界面中进行读取,因此我选择使用它来监视实时网络流量。因此,我编写了以下代码片段,以捕获笔记本电脑上传输的一些tcp数据包:

@staticmethod
def get_packet_info(interface=None):
    """
    Returns the size of the transmitted data using Wireshark.

    Args:
        interface: A string. Name of the interface to sniff on.

    Returns: Size of the packet sent over WebSockets in a given event.
    """
    if interface is None:
        raise Exception("Please provide the interface used.")
    else:
        capture = pyshark.LiveCapture(interface=interface)
        capture.sniff(timeout=60)
        for packet in capture:
            try:
                packet_info = packet.pretty_print()
            except:
                raise Exception("Cannot determine packet info.")
        return packet_info

sniff的参数可以从timeout更改为packet_count。另外,我可以向LiveCapture添加更多属性以更好地控制。