pcapy
pcapy copied to clipboard
dispatch not working
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
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)