这可能不是一个 wireshark 问题,而更像是 Windows 上的“如何将文件传输到应用程序中”。
在 Linux 上,我可以使用 tcpdump 捕获另一台主机上的 pcap 文件,并将其通过管道传输回本地计算机上的 wireshark,以获得实时捕获体验:ssh host sudo tcpdump -iany -U -s0 -w - 'not port 22' | wireshark-gtk -k -i -
。我还可以从 Windows 计算机启动到安装了 tcpdump 的 Linux 计算机:plink.exe -ssh -pw password user@host "tcpdump -ni any -s 0 -w - not port 22" | "C:\Program Files\Wireshark\Wireshark.exe" -k -i -
。只要我可以访问 shell 和 tcpdump,两者就可以正常工作。但我没有。
目标机器 (AVM Fritzbox) 没有 ssh 或 telnet(不再有)。我无法登录 shell。我只能访问网络。
所以我有一个 pcap 文件,它不断被数据填充。它是从 Chrome 会话中实时捕获的http://fritz.box/html/capture.html正在流式传输到我的下载文件夹。我相信 fritzbox 路由器正在内部使用 tcpdump,将输出作为文件流式传输到我的本地 Windows 下载文件夹)。
我也想在 wireshark.exe 中看到该文件,类似于上面的 Linux 变体。
以下不起作用(使用 PowerShall 几乎等同于 tail -f):。
Get-Content "path-to-file-being-downloaded" -wait | .\Wireshark.exe -i -
Wireshark 根本无法启动。我猜这是因为管道发送的是对象,而不是流。如果我这样做Get-Content "path-to-file-being-downloaded" | .\Wireshark.exe -i -
(不使用“-wait”),Wireshark 将在不打开文件的情况下启动,因此似乎看不到管道输入。
Get-Content "path-to-file-being-downloaded" -wait
会给我一个类似 tail -f 的视图,其中有一些乱码,似乎代表了 pcap 文件的内容。如果我用 打开同一个文件.\Wireshark.exe "path-to-file-being-downloaded"
,wireshark 会从文件内容开始,但会抱怨它“在数据包中间被截断了”。显然……
如何告诉 Windows 上的 wireshark 跟踪仍充满数据的 pcap 文件,类似于上面的 linux 命令?换句话说,如何将该文件连续传输到 wireshark.exe 中?
谢谢丹
答案1
该解决方案涉及 WSL2,但对于 Windows 版本的 Wireshark 来说也很好用。
基本上,你在 WSL2 中运行以下命令:
ssh user@server 'tcpdump -U -i eth0 -w -' | /mnt/c/Program\ Files/Wireshark/Wireshark.exe -k -i -
假设Wireshark安装在默认位置。请根据您的要求和环境进行调整。