helpsystems / pcapy

Pcapy is a Python extension module that interfaces with the libpcap packet capture library.
Other
382 stars 104 forks source link

dispatch not working #63

Open havihu opened 5 years ago

havihu commented 5 years ago

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

N7-Revenant commented 5 years ago

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)