這可能不是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 變體。
以下內容不起作用(與 tail -f 的 PowerShall 幾乎等效):
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 安裝在預設位置。根據您的要求和環境進行調整。