Probablemente esto sea menos una pregunta de Wirehark y más una pregunta de "cómo canalizo un archivo a una aplicación" en Windows.
En Linux, puedo capturar un archivo pcap en otro host con tcpdump y canalizarlo nuevamente a Wireshark en la máquina local para una experiencia de captura en vivo: ssh host sudo tcpdump -iany -U -s0 -w - 'not port 22' | wireshark-gtk -k -i -
. También puedo iniciar desde una máquina con Windows a una máquina con Linux que tenga tcpdump instalado: plink.exe -ssh -pw password user@host "tcpdump -ni any -s 0 -w - not port 22" | "C:\Program Files\Wireshark\Wireshark.exe" -k -i -
. Ambos funcionan bien, siempre que tenga acceso a un shell y a tcpdump. Pero yo no.
La máquina de destino (AVM Fritzbox) no tiene ssh ni telnet (ya no). No puedo iniciar sesión en un shell. Sólo tengo acceso a la web.
Entonces tengo un archivo pcap que se llena constantemente de datos. Es una captura en vivo de una sesión de Chrome parahttp://fritz.box/html/capture.htmlsiendo transmitido a mi carpeta de descargas. Creo que el enrutador Fritzbox está usando tcpdump internamente, transmitiendo la salida como un archivo a mi carpeta local de descargas de Windows).
También quiero ver ese archivo en wireshark.exe, similar a la variante de Linux anterior.
Lo siguiente no funciona (con el casi equivalente PowerShall de tail -f):
Get-Content "path-to-file-being-downloaded" -wait | .\Wireshark.exe -i -
. Wireshark simplemente no se inicia. Supongo que esto se debe a que la tubería envía un objeto, no una secuencia. Si lo hago Get-Content "path-to-file-being-downloaded" | .\Wireshark.exe -i -
(sin "-wait"), Wireshark se iniciará sin abrir un archivo, por lo que no parece ver la entrada canalizada.
Get-Content "path-to-file-being-downloaded" -wait
me dará una vista similar a tail -f sobre algún galimatías que parece representar el contenido de un archivo pcap. Si abro el mismo archivo con .\Wireshark.exe "path-to-file-being-downloaded"
, Wireshark comienza con el contenido del archivo, pero se queja de que está "cortado en medio de un paquete"... obviamente...
¿Cómo puedo decirle a Wireshark en Windows que siga un archivo pcap que aún está lleno de datos, similar al comando de Linux anterior? En otras palabras, ¿cómo puedo canalizar ese archivo continuamente a wireshark.exe?
gracias dan
Respuesta1
Esta solución implica WSL2, pero funcionará bien para la versión de Windows de Wireshark.
Básicamente ejecutas lo siguiente en WSL2:
ssh user@server 'tcpdump -U -i eth0 -w -' | /mnt/c/Program\ Files/Wireshark/Wireshark.exe -k -i -
Dado que Wireshark está instalado en la ubicación predeterminada. Adáptese a sus necesidades y entorno.