Как Wireshark.exe в Windows может читать из потока файлов pcap?
Вероятно, это не столько вопрос Wireshark, сколько вопрос «как передать файл в приложение» в Windows.
В Linux я могу захватить файл pcap на другом хосте с помощью tcpdump и передать его обратно в Wireshark на локальном компьютере для живого захвата:ssh host sudo tcpdump -iany -U -s0 -w - 'not port 22' | wireshark-gtk -k -i -
. Я также могу начать с компьютера с Windows на компьютер с Linux, на котором установлен tcpdump:plink.exe -ssh -pw password user@host "tcpdump -ni any -s 0 -w - not port 22" | "C:\Program Files\Wireshark\Wireshark.exe" -k -i -
. Оба работают нормально, пока у меня есть доступ к оболочке и tcpdump. Но я этого не делаю.
Целевая машина (AVM Fritzbox) не имеет ssh или telnet (уже нет). Я не могу войти в оболочку. У меня есть только доступ в Интернет.
Итак, у меня есть файл 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
даст мне вид, похожий на хвост -f, на какую-то тарабарщину, которая, кажется, представляет собой содержимое файла pcap. Если я открою тот же файл с помощью.\Wireshark.exe "path-to-file-being-downloaded"
, Wireshark начинается с содержимого файла, но жалуется, что оно «обрывается в середине пакета».. очевидно..
Как я могу указать Wireshark в Windows следовать за файлом pcap, который все еще заполняется данными, аналогично команде Linux, приведенной выше? Другими словами, как я могу непрерывно передавать этот файл в Wireshark.exe?
Спасибо, Дэн.
1 ответ
Это решение включает WSL2, но отлично работает с версией Wireshark для Windows.
По сути, в WSL2 вы запускаете следующее:
ssh user@server 'tcpdump -U -i eth0 -w -' | /mnt/c/Program\ Files/Wireshark/Wireshark.exe -k -i -
Учитывая, что Wireshark установлен в папку по умолчанию. Приспосабливайтесь к вашим требованиям и окружающей среде.