pcapy icon indicating copy to clipboard operation
pcapy copied to clipboard

dispatch not working

Open havihu opened this issue 5 years ago • 1 comments

Hi, im trying to capture packets and im using open_live(timeout 0) with dispatch instead of next, and I dont know why but its sniffing only a few packets and then close pip. my code:

import pcapy import threading import time from pcapy import open_live, PcapError

def parse_eth_packet_hndlr(header, packet): print('header len:%s\n'%header.getlen())

def start(): try: packets_reader = open_live('eth2', 200, 0, 0) except PcapError as e: if 'That device is not up' in str(e): logging.debug(e) return None try: print('Try to start capturing packets') packets_reader.dispatch(-1, parse_eth_packet_hndlr) except PcapError as e: return

if name == 'main': start()

pcapy version:pcapy-0.11.5.dev0 python version: 2.7 please advice

havihu avatar Sep 08 '19 12:09 havihu

Hi, as far as I know, this is expected behaviour: while next process single packet, dispatch allows you to run a callback for all currently available packets, and then it returns. So you need to add a cycle around dispatch call, a while loop for example:

while condition:
    packets_reader.dispatch(-1, parse_eth_packet_hndlr)

N7-Revenant avatar Oct 03 '19 16:10 N7-Revenant