¿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 ♥
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:
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.