【问题标题】:Python multithreading pysharkPython 多线程 pyshark
【发布时间】:2020-06-01 07:30:57
【问题描述】:

我是 python 新手,我正在测试库 pyshark。

我想一直嗅探流量并做其他事情。但是当我启动嗅探器时,所有其他代码都停止工作。我尝试过异步线程和多线程,但它总是给我不同的错误。

这是我想在不阻塞应用程序的情况下运行的代码。

import pyshark
import asyncio

class Sniffer:

    @staticmethod
    @asyncio.coroutine
    def sniff():
        cap = pyshark.LiveCapture(interface='en0')
        cap.sniff_continuously(packet_count=0)
        for pkt in cap:
            print(pkt)

感谢您的建议。

【问题讨论】:

    标签: python multithreading pyshark


    【解决方案1】:

    你可以试试多线程类。 https://docs.python.org/3/library/threading.html

    例如:

    import thread
    obj = Sniffer()
    thread.start_new_thread( obj.sniff,)
    

    如果您厌倦了多线程或其他人,另一种方法是创建新的 python 文件并导入您的嗅探器。

    例如:

    # new python file
    import sniffer
    obj = sniffer.Sniffer()
    while True:
        obj.sniff()
    

    这样使用您的处理器内核。这和多线程一样,差别不大,你的操作系统会自动完成。

    【讨论】:

    • Pyshark 可能会阻止您的以太网卡。尝试其他嗅探器方法或库。另一种方法是创建虚拟以太网卡并在真实设备与虚拟设备之间建立桥梁,然后连接虚拟卡进行嗅探。 cap = pyshark.LiveCapture(interface='my_virtual_eth')
    猜你喜欢
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 2017-03-22
    • 2018-06-26
    • 2023-03-08
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多