在后台运行pyshark

问题描述

我想在后台运行pyshark,因此在运行pyshark的同时,我仍然可以执行一些网络操作并捕获它们。 一个强制性条件是我必须能够使用tshark进行解析,因为我有一些专有的Wireshark解剖器。

基本上我需要做的是

  1. 开始网络捕获
  2. 执行一些Web操作
  3. 停止捕获(或等待停止条件)
  4. 遍历捕获对象并检查每个数据包的属性

我不能按原样使用capture.sniff(),因为它在阻塞模式下工作,而不能使用capture.sniff_continuously(),因为它是生成器。

问题: 我尝试从线程调用sniff(),然后等待它以join()结尾。 但是当我到达迭代器时,tshark.exe重新启动并覆盖捕获文件:

print('Background sniffing:')
capture = pyshark.LiveCapture(interface='Ethernet',bpf_filter='host 10.20.30.40',output_file='bg_capture.pcapng')
t = threading.Thread(target=capture.sniff,kwargs={'timeout': 30,'packet_count': 5000},daemon=True)
t.start()
print('Do some stuff web action here...')
t.join()
print('Done sniffing')
for p in capture: # At this point,tshark re-launch itself
    print(f'Packet number {p.number}')

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)