es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo obtener datos de Tshark en Python?

Estoy tratando de capturar un comando sencillo usando subprocess y TShark.

import subprocess

tsharkCall = ["tshark", "-a", "duration:2", "-i", "2"]
tsharkProc = subprocess.Popen(tsharkCall,
                              bufsize=0,
                              executable="C:\Program Files\Wireshark\tshark.exe",
                              shell=True,
                              stdout=subprocess.PIPE,
                              stderr=subprocess.PIPE,
                              stdin=subprocess.PIPE)
print(tsharkProc.communicate()[1].decode('utf-8', errors='replace'))

Y me da este error:

Capturando en 'Local Area Connection* 4'
tshark: Filtro de captura no válido "/c tshark -a duration:2 -i 2" para la interfaz 'Local Area Connection* 8'.

Esa cadena no es un filtro de captura válido (no se puede analizar la expresión del filtro: error de sintaxis).
Consulte la Guía del usuario para obtener una descripción de la sintaxis del filtro de captura.
0 paquetes capturados

¿Algún idea de por qué? Muchas gracias ♥

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    A partir del mensaje de error, parece que el comando tshark utilizado como filtro está mal formateado. El comando “/c tshark -a duration:2 -i 2” no debe ser utilizado como filtro.

    En su lugar, intente separar la expresión del filtro usando el indicador “-f”, de la siguiente manera:

    tsharkCall = ["tshark", "-a", "duration:2", "-i", "2", "-f", "tu-expresión-de-filtro"]
    

    Reemplace “tu-expresión-de-filtro” con una expresión de filtro válida para capturar paquetes.

    Si esto no resuelve el problema, verifique si la interfaz de red proporcionada por el indicador “-i” es correcta y está accesible. También puede intentar eliminar el argumento “shell=True” de la llamada “subprocess.Popen”, generalmente no es necesario con una lista de argumentos de comando como se muestra en este ejemplo.

Comments are closed.