Назад | Перейти на главную страницу

Как постоянно запускать Wireshark, не занимая всю мою оперативную память?

Мне нужно запустить Wireshark всю ночь, чтобы захватывать пакеты с определенного IP-адреса. Я заметил, что чем дольше работает Wireshark, тем больше он занимает оперативной памяти, потому что в нем хранятся все пакеты, найденные во время выполнения. Для меня есть 3 возможных решения, но я не нашел ответов в Интернете:

  1. Настройте Wireshark для сохранения в ОЗУ только тех пакетов, которые проходят через фильтр (а не ВСЕ пакеты). Я не уверен, возможно ли это.
  2. Настройте Wireshark на автоматическое сохранение пакетов в файл каждый час и освобождение памяти после сохранения в файл.
  3. Используйте альтернативу Wireshark, которая рассчитана на некоторое время.

Для сред Windows (например, моей, где очень сложно установить wirehark на сервер), начиная с Win7 / 2008R2, был доступен встроенный захват пакетов.

Это захватит все, пока вы не скажете, чтобы он остановился: netsh trace start capture=yes persistent=yes tracefile=c:\temp\results.etl

Наблюдайте за следом: netsh trace show status

Остановить след: netsh trace stop

Он поддерживает все обычные функции: фильтрацию, циклическое ведение журнала и даже может сохраняться при перезагрузке. Еще один плюс - команда help: попробуйте netsh trace ? или netsh trace show ? Вам необходимо установить Microsoft Message Analyzer для просмотра / экспорта результатов.

Похоже, что для вашей ситуации вы должны быть настроены с помощью следующей команды:

netsh trace start capture=yes persistent=yes tracefile=c:\temp\results.etl maxSize=500

Это даст вам циклическое ведение журнала с файлами размером 500 МБ и сохранится при перезагрузке.

Я всегда просто использую tcpdump. Wireshark может открыть полученный файл захвата позже, хотя, если он огромен, вам все равно может потребоваться разделить его чем-то вроде editcap. Вот некоторые примеры:

Захватить весь трафик:

tcpdump -s 0 -n -w <filename>

Захватить весь трафик, кроме трафика SSH (полезно при работе tcpdump по SSH-соединению`):

tcpdump -s 0 'port not 22' -n -w <filename>

Вам нужен -s 0 параметр так, чтобы tcpdump не накладывает ограничений на количество пакетов.

Вам может не понадобиться -n; Я всегда использую его, чтобы Wireshark не тратил время на поиск имен. (Это может быть более полезно без -w.)

Некроед, но ...

  1. Wireshark поддерживает отдельные фильтры на уровне захвата (libpcap или winpcap) и фильтры отображения, по крайней мере, с 2008 года. Пакеты, исключенные фильтром захвата, вообще не сохраняются и не используют память. Синтаксис фильтра захвата проще и менее мощный, чем синтаксис фильтра отображения Wireshark, но от (и / или до) IP-адреса в пределах его возможностей.

    В расположение где вы указываете, фильтр захвата менялся с течением времени. В старых версиях вам приходилось дважды щелкать интерфейс в окне параметров захвата; теперь (или, по крайней мере, недавно) он появляется в окне приветствия и в окне параметров захвата под списком интерфейсов. я считать это изменение произошло в версии 2.0, но я не клянусь.

  2. Оказывается, в этом случае вам действительно нужно только захватить, а отобразить его можно будет позже. В этом случае у Wireshark уже давно есть возможность немедленно записать в файл или серию файлов (в зависимости от временного интервала или объема данных), а также если вы также отключите `` список обновлений в реальном времени '' (отдельный параметр) это не требует столько оперативной памяти. (Очевидно, вам нужно место на диске для файла (ов).)

    Эти варианты тоже переехали. В старых версиях они всегда отображались в окне параметров захвата (фактически они использовали большую часть нижней половины окна, что затрудняло их просмотр); теперь вы должны перейти на вторую и третью вкладки окна параметров захвата.

  3. Пакет Wireshark, включая установщик (ы) Windows, также включает версию для командной строки. tshark[.exe]. С опцией -w и связанные параметры, такие как -b и -a, tshark аналогичным образом имеет возможность захвата с дополнительной фильтрацией захвата и / или фильтрацией «отображение» (!) непосредственно в файл или серию файлов, не отображая вообще, следовательно, практически не требует ОЗУ. Позже вы можете прочитать этот файл (или каждый / любой из этих файлов) в полной версии Wireshark для отображения и анализа.

    Эта опция похожа на tcpdump с -w (но не идентичны). другие режимы tshark - для захвата, немедленного декодирования и отображения; или прочитать файл захвата с помощью -r и декодирование и отображение - в основном похожи на tcpdump, но отображение немного отличается.

    Поскольку это программа командной строки, вам необходимо прочитать ее справочную страницу для получения подробных инструкций. Поскольку в Windows (кроме 10 + WSL) нет справочных страниц, установщик Windows вместо этого предоставляет HTML-файл в папке installdir (\Program Files\Wireshark\tshark.html), который также доступен из программы с графическим интерфейсом (Wireshark) в разделе Help / ManualPages (!).

По возможности избегайте захвата всех пакетов. При выборе интерфейса вставьте фильтр, чтобы охватить расширенный набор пакетов, которые вы ищете для отображения позже. Это значительно сократит использование памяти и диска Wireshark:

пример: чтобы отфильтровать http-пакеты, введите tcp port http и начинаем захват.

ПРИМЕЧАНИЕ: ЭТО Capture Filter ПРИМЕНЯЕТСЯ ПРИ ВЫБОРЕ ИНТЕРФЕЙСА (это не Display Filter).