Как разбить pcap файл трафика

Обновлено: 03.07.2024

Собирайтесь . Итак, работа началась. Сиденье взрывается!

Первое, что я хочу сказать, это то, что я знаю, что в Python есть много библиотек для разбора файлов pcap, поэтому они здесь не используются для понимания деталей формата файлов pcap. Вы можете легко захватить серию пакетов, используя tcpdump. Однако tcpdump не имеет функции анализа пакетов. Если вы хотите проанализировать некоторые подсказки из этого файла захвата пакетов, такие как повторная передача, вы должны использовать wireshark или тому подобное. Программное обеспечение, используйте wireshark, чтобы открыть файл pcap, захваченный tcpdump. Если вы видите багровую гроздь (похожую на цвет свиной крови, вытекающей из вены), то эти пакеты должны быть «в поле зрения уровня протокола» Ненормальные пакеты данных включают в себя, но не ограничиваются ими, повторные передачи, вышедшие из строя и т. Д. Для получения дополнительной информации, пожалуйста, введите «tcp.analysis.» В фильтре wireshark, и тогда он будет автоматически завершен, что чрезвычайно удобно. Если вы также хотите просмотреть некоторую глобальную статистику, то нажмите первые «Свойства файла захвата» в меню «Статистика», вы увидите дополнительную информацию. Хотя пакет данных уже прошел, но голос дикого гуся, мы все еще можем получить больше информации, захватив пакет данных. Спасибо за наличие wireshark / tshark (инструмент анализа файла pcap с символьным интерфейсом, похожий на wireshark, но больше Вентиляторы командной строки, подходящие для игры на механических клавиатурах) / shookshark (. ) Эти инструменты позволяют нам действительно анализировать файлы pcap для получения информации.
Я думаю, что этого недостаточно.
Существует простое требование: я хочу получить общее количество байтов данных полезной нагрузки TCP, отправленных конечным узлом в соединении TCP, включая обычную передачу и повторную передачу. Я не нашел функцию для получения этих данных в Wireshark, поэтому я не могу дождаться, чтобы написать сам. Шеф-повар боится есть мясо?
Но есть предпосылка, то есть я должен понимать формат файла pcap, потому что я хочу проанализировать файл pcap голым, попытаться выяснить длину полезной нагрузки TCP (исключая заголовок TCP и заголовок IP) каждого интересующего пакета, а затем изменить его. накопительный. Поэтому я должен знать подробности формата файла pcap.
К счастью, файлы pcap очень просты, как я анализировал файлы Windows PE почти 10 лет назад, и до сих пор делают то же самое сегодня.
Если вы плохо разбираетесь в документации, как программист, выбор исходного кода libpcap также является хорошим выбором. Как и практически любой формат файла, pcap также является форматом с самоописанием (это самоописание недостаточно элегантно, чтобы появиться позже). С форматом файла pcapng, я напишу отдельную статью позже), все включает заголовок файла и полезную нагрузку данных, так называемая полезная нагрузка данных здесь представляет собой пакет сетевых данных. В файле pcap.h libpcap структура pcap_file_header описывает заголовок файла:
Я не буду объяснять конкретно, я буду использовать пример для анализа позже. Сразу после этого заголовка файла следуют пакеты данных. Для описания метаинформации каждого пакета данных каждый пакет данных будет иметь заголовок описания:

Эта структура описывает информацию о времени и длине захвата пакета.Только после этой структуры пакет данных, поэтому типичный файл pcap должен быть следующим:



Это предельно ясно. Снова обращаясь к моему требованию, как мне подсчитать две величины?

Количество байтов, фактически отправленных TCP-соединением: сумма длины полезной нагрузки TCP каждого пакета.
Число байтов, которые теоретически должен отправлять TCP: разница между конечным порядковым номером TCP и начальным порядковым номером.
С учетом вышеизложенного, я думаю, что это требование очень просто реализовать. Чтобы продемонстрировать эффект от изучения Python, приведен следующий код:


Это просто! Любой, кто знает python, будет смеяться надо мной!
На самом деле, прежде чем я посмотрел на формат файла pcap, я думал, что файл pcap организован аналогичным ASN.1, но после прочтения я обнаружил, что это не так, и был весьма разочарован. Я разочарован, потому что кажется, что описанный выше pcap не может описывать больше, чем просто пакет. Это на самом деле не самоописание. Это файловая структура фиксированной длины. Очень быстрый, но очень негибкий и трудно расширяемый! Тщательная структура с самоописанием - ASN.1!
.
Давайте посмотрим на пример. Просто возьмите пакет TCP, чтобы получить файл test.pcap, откройте этот pcap с помощью UE, пожалуйста, создайте себя! Если вы действительно понимаете файловую организацию pcap, то, пожалуйста, внимательно проанализируйте ее, а если нет, то поймите это полностью, а не мозговые дополнения!

Мы обнаружили, что в формате файла pcap большая часть структуры мета-описания представляет собой фиксированное число и фиксированную длину. Возьмем, к примеру, LinkType. Я могу указать только один LinkType за раз для захвата пакетов. Он записан в pcap_file_header в начале файла pcap. Это означает, что я не могу одновременно захватывать пакеты на плате Ethernet и сетевой карте PPP, отличной от Ethernet, и одновременно получать подробную информацию о канальном уровне! И pcapng решает эту проблему.

Я хочу знать, как pcapng, и увидеть следующий текст.

Детали 1: готовый захват и Ethernet



Эту информацию можно получить через LinkType. Почему существуют такие пакеты типа Cooked Capture? Поскольку инструмент захвата пакетов не может обрабатывать длину канального уровня унифицированным способом в случае любого -i, например, многие протоколы имеют много внутренних подпротоколов. Длина заголовка протокола зависит от прикладного уровня. Это то, что ядро ​​не может обработать на уровне захвата пакета. В файле pcap вы можете указать LinkType только в одном месте, то есть pcap_pkthdr после заголовка файла.Если я укажу -i eth0 -i lo -i ppp0 -i tun0, это совершенно неправильно! К счастью, если вы используете формат pcapng для хранения файлов захвата пакетов, вы можете обращаться с этими сетевыми картами по-разному. Каждый пакет, захваченный сетевой картой, будет закрыт для LinkType, и вам будет легче обрабатывать канальный уровень. Однако большинство Людям наплевать на канальный уровень или IP. Больше людей заботится о TCP.

У меня есть огромный файл pcap (сгенерированный tcpdump). Когда я пытаюсь открыть его в wireshark, программа просто перестает отвечать на запросы. Есть ли способ разделить файл на несколько меньших, чтобы открыть их один за другим? Трафик, захваченный в файле, генерируется двумя программами на двух серверах, поэтому я не могу разделить файл с помощью фильтров tcpdump 'host' или 'port'. Я также попробовал команду linux 'split' :-), но безуспешно. Wireshark не распознает формат.

Насколько велика огромна? Это намного больше чем доступная RAM? Немного поздно, но причина, по которой Wireshark не будет читать файлы, которые выводятся, split состоит в том, что split делит на точные границы байтов. Это очень вероятно, чтобы разделить пакет, который делает недействительным часть содержимого файла.

Вы можете использовать сам tcpdump с опциями -C, -r и -w

Опция "-C" указывает размер файла для разбивки. Например: в приведенном выше случае размер новых файлов составит 10 миллионов байт каждый.

Есть ли способ сделать это без разрыва сессии? (Предполагая, что один сеанс меньше аргумента ограничения размера). Быстро: tcpdump -r old_file -w new_files -C 1000 разбивает на каждый 955 МБ записанного трафика

Используйте editcap утилиту, которая распространяется вместе с Wireshark.

editpcap -c 1000 input.pcap output.pcap будет разделен input.pcap на захваты с максимум 1000 пакетов на захват. В результате будут получены несколько файлов захвата, отформатированных как output__.pcap Спасибо, блачет за пример! Но это просто editcap , не так editpcap ли?

Я знаю, что этот ответ немного запоздал, но он может послужить и другим людям. Я нашел отличный инструмент для разделения файлов pcap: PcapSplitter . Она является частью библиотеки PcapPlusPlus, что означает ее кроссплатформенность (Win32, Linux и Mac OS), и она может разбивать файлы pcap на основе различных критериев, таких как размер файла (что вам нужно), но также и соединение, клиент / сервер IP, порт сервера (аналогично протоколу), количество пакетов и т. Д. Я нашел это очень полезным. Ссылка выше для исходного кода, но если вы не хотите / не знаете, как скомпилировать, я создал скомпилированные двоичные файлы для нескольких платформ, с которыми я использовал этот инструмент. Я очень рекомендую этот инструмент

РЕДАКТИРОВАТЬ: очевидно, была выпущена новая версия PcapPlusPlus, и она содержит двоичные файлы PcapSplitter для довольно многих платформ (Windows, Ubuntu 12.04 / 14.04, Mac OSX Mavericks / Yosemite / El Captian). Я думаю, что лучше использовать эти двоичные файлы, чем ссылку, которую я ранее предоставил. Вы можете найти это здесь

Лучший и самый быстрый способ - использовать SplitCap, который может разбивать большие файлы дампа пакетов, например, на основе сеансов. Таким образом, вы получите каждый сеанс TCP в отдельном файле PCAP. SplitCap также может разделять пакеты в файлы pcap на основе IP-адресов.

Оригинал: How to filter, split or merge pcap files on Linux
Автор: Dan Nanni
Дата публикации: 18 декабря 2014 г.
Перевод: А.Панин
Дата перевода: 18 августа 2016 г.

Фильтрация содержимого, разделение и объединение pcap-файлов в Linux

Если вы являетесь системным администратором и занимаетесь обслуживанием системы обнаружения вторжений или управляете политикой доступа к сети, вы наверняка нередко осуществляете оффлайн-анализ собранных дампов сетевых пакетов. При сохранении дампов с помощью инструментов с открытым исходным кодом для сниффинга и захвата сетевых пакетов наиболее часто используется формат библиотеки libpcap (или формат pcap). В том случае, если pcap-файлы используются в рамках мероприятий, направленных на тестирование безопасности инфраструктуры или при оффлайн-анализе собранных данных, нередко возникает необходимость в выполнении дополнительных манипуляций перед осуществлением инъекции в сеть.

Один из самых популярных снифферов сетевых пакетов с графическим интерфейсом Wireshark

В данной статье я познакомлю вас с полезными инструментами, предназначенными для осуществления различных манипуляций с pcap-файлами, и продемонстрирую примеры их использования.

Editcap и Mergecap

Wireshark , один из самых популярных снифферов сетевых пакетов с графическим интерфейсом, на самом деле, изначально содержит в комплекте поставки набор очень полезных инструментов с интерфейсом командной строки. Среди этих инструментов следует особо выделить утилиты editcap и mergecap . Первая утилита является многофункциональным редактором pcap-файлов, который может фильтровать их содержимое или разделять их на множество частей в зависимости от переданных параметров. Вторая позволяет объединять множество pcap-файлов в рамках одного файла. В данной статье будут рассматриваться именно две перечисленные утилиты.

Если вы уже установили Wireshark в систему, рассматриваемые утилиты должны быть доступны. В противном случае вам придется установить пакет программного обеспечения с инструментами с интерфейсом командной строки из комплекта поставки сниффера сетевых пакетов Wireshark. Обратите внимание на то, что в дистрибутивах, основанных на Debian, вы можете установить его, не устанавливая само приложение Wireshark с графическим интерфейсом, в то время, как в дистрибутивах, основанных на RedHat вам придется установить пакет программного обеспечения со всеми компонентами Wireshark.

Debian, Ubuntu или Linux Mint:

Fedora, CentOS или RHEL:

По окончании процесса установки пакета программного обеспечения с инструментами с интерфейсом командной строки из комплекта поставки Wireshark вы сможете беспрепятственно использовать утилиты editcap и mergecap .

Фильтрация содержимого pcap-файла

Утилита editcap позволяет фильтровать содержимое pcap-файла в зависимости от переданных параметров и сохранять результат в рамках другого pcap-файла.

В первую очередь вы можете отфильтровать содержимое pcap-файла на основе начального и/или конечного времени захвата сетевых пакетов. Параметры "-A <начальное-время>" и "-B <конечное-вермя>" используются для указания интересующего пользователя промежутка времени, захваченные в течение которого дынные сетевых пакетов быть сохранены в результирующем файле (например, от 2:30 пп до 2:35 пп). При составлении команд должен использоваться формат записи времени "ГГГГ-ММ-ДД ЧЧ:ММ:СС" .

Если вам нужны данные ровно N сетевых пакетов из pcap-файла, вы также можете получить их с помощью рассматриваемого инструмента. Приведенная ниже команда позволяет извлечь данные 100 пакетов (начиная с 401 и заканчивая 500) из файла input.pcap и сохранить их в файле output.pcap:

Если вы хотите отфильтровать дубликаты сетевых пакетов, содержащиеся в pcap-файле, вы можете воспользоваться параметром "-D <окно-поиска-дубликатов>" . В этом случае будет осуществляться проверка совпадения длины и контрольной суммы, вычисленной в соответствии с алгоритмом MD5, каждого сетевого пакета с последовательностью предыдущих сетевых пакетов (длиной <окно-поиска-дубликатов> - 1) и отбрасывание пакетов в случае обнаружения совпадений.

Альтернативным решением является использование временного интервала вместо окна для поиска дубликатов сетевых пакетов. Если вы воспользуетесь параметром "-w <временной-интервал-поиска-дубликатов>" , будет осуществляться проверка совпадения сетевого пакета с пакетами, которые прибыли в течение заданного временного интервала поиска дубликатов (длительностью <временной-интервал-поиска-дубликатов> секунд).

Разделение pcap-файла на части

Утилита editcap также может оказаться полезной в том случае, если у вас возникнет потребность в разделении pcap-файла на несколько pcap-файлов меньшего размера.

Команда для разделения pcap-файла на несколько pcap-файлов с одинаковым количеством сетевых пакетов:

Каждый выходной pcap-файл будет содержать данные одного и того же количества сетевых пакетов и иметь имя <префикс-имен-выходных-файлов>-NNNN .

Команда для разделения pcap-файла на множество pcap-файлов, содержащих сетевые пакеты, прибывшие в течение одинаковых временных интервалов:

Объединение pcap-файлов

Если вам понадобится объединить несколько pcap-файлов в один, вам поможет утилита mergecap .

При объединении pcap-файлов mergecap по умолчанию использует метки времени сетевых пакетов из переданных pcap-файлов для сортировки этих пакетов в хронологическом порядке.

Если вы захотите проигнорировать метки времени сетевых пакетов и просто объединить pcap-файлы в порядке передачи их имен с помощью интерфейса командной строки утилиты, вы можете использовать параметр "-a" .

Например, следующая команда позволяет скопировать все сетевые пакеты из файлов input.pcap и input2.pcap в файл output.pcap:

Заключение

В данной статье я представил несколько примеров использования утилит editcap и mergecap для осуществления манипуляций с pcap-файлами. Помимо упомянутых утилит, существует большое количество других утилит для работы с pcap-файлами, например, reordercap , предназначенная для изменения порядка следования сетевых пакетов, text2pcap , предназначенная для преобразования текстового представления сетевых пакетов в файл pcap, pcap-diff , предназначенная для поиска различий в pcap-файлах и другие. Некоторые из этих утилит для работы с pcap-файлами могут оказаться очень полезными в комбинации с утилитами для инъекций пакетов в сеть в процессе тестирования безопасности и поиска неполадок сетей, поэтому стоит как минимум знать об их существовании!

Используете ли вы какие-нибудь инструменты для работы с pcap-файлами? Если да, то какие и для каких целей?


Зачем вообще нужны анализаторы пакетов?
Для того чтобы проводить исследования сетевых приложений и протоколов, а также, чтобы находить проблемы в работе сети, и, что важно, выяснять причины этих проблем.
Вполне очевидно, что для того чтобы максимально эффективно использовать снифферы или анализаторы трафика, необходимы хотя бы общие знания и понимания работы сетей и сетевых протоколов.
Так же напомню, что во многих странах использование сниффера без явного на то разрешения приравнивается к преступлению.


Для начала захвата достаточно выбрать свой сетевой интерфейс и нажать Start.

После чего и начнется процесс захвата, причем прилетевшие пакеты будут появляться в реальном времени.
В процессе рассмотрения и изучения пакетов бывают ситуации, когда нужно вернуться предыдущему пакету. Для этого есть две кнопки (см скриншот).



И на самом верху идет нечто вроде небольшого обзора собранной информации о кадре.


Про фильтры мы поговорим дальше, а на данном этапе, если нужно быстро отфильтровать лишние пакеты, достаточно сделать правый клик на пакете, выбрать меню Apply as Filter – Not selected и изменения сразу же вступят в силу.
Если нужно еще что-то убрать, то в следующий раз выбирать “and not Selected”, и новое правило просто добавится к фильтру.

Довольно часто при работе с Wireshark возникает ошибка IP checksum offload – ошибка контрольной суммы заголовка IP пакета.


Современные сетевые карты насколько умные, что сами считают контрольную сумму, зачем это делать на уровне стека TCP/IP программно, если можно делать хардварно.
А Wireshark натурально перехватывает пакеты, до того как они попадают в сеть.
И до того как эта сумма была просчитана и была добавлена в заголовок пакета.
Соответственно есть два пути решения этой проблемы — выключать функцию offload в настройках сетевой карты или в настройках сниффера указать, чтобы он не обращал внимание на это значение.
Хардваные функции зачастую лучше софтварных, в основном из-за скорости обработки (в железе обычно выше) поэтому лучше изменить настройки самого сниффера.
Для этого нужно зайти в настройки (Edit — Preferences), затем Protocols – IPv4 – и снять флаг с “Validate IPv4 checksum if possible”.


  • Локально на своем хосте;
  • Организовать зеркалирование трафика на коммутаторе;
  • Подключаться непосредственно в интересующие места;
  • или же отравление протокола ARP (еще более незаконно, чем пассивное прослушивание трафика)

Wireshark содержит два вида фильтров – захвата (Capture Filters) и отображения (Display Filters).
Вначале рассмотрим Capture Filters.
Как можно догадаться по названию, они служат для фильтрации еще на этапе захвата трафика.
Но в таком случае, безусловно, можно безвозвратно потерять часть нужного трафика.
Фильтр представляет собой выражение, состоящее из встроенных значений, которые при необходимости могут объединяться логическими функциями (and, or, not).
Для того, чтобы его задействовать, нужно зайти в меню Сapture, затем Options, и в поле Capture Filter набрать, например, host 8.8.8.8 (или, например, net 192.168.0.0./24)


Так же, конечно, можно выбрать и заранее созданный фильтр (за это отвечает кнопка Capture Filter).
В любом из вариантов фильтр появится возле интерфейса, можно жать Start.

Теперь перейдем к Display Filters.
Они фильтруют исключительно уже захваченный трафик.
Что можно фильтровать?
— Практически все — протоколы, адреса, специфические поля в протоколах.
Операции, которые можно использовать при построении фильтров:

Команда Значение Пример использования
== равенство ip.dst == 193.168.3.10
!= Не равно udp.dst != 53
< меньше чем ip.ttl < 24
> больше чем frame.len > 10
<= меньше или равно frame.len <= 0x20
>= больше или равно tcp.analysis.bytes_in_flight >= 1000
matches регулярные выражения frame matches "[Pp][Aa][Ss][Ss]"
contains содержит dns.resp.name contains google

Как вы, наверное, заметили, в таблице в качестве примеров были разнообразные выражения, достаточно понятные и зачастую говорящие сами за себя.
Например, ip.dst – это поле протокола IP.
Чтобы увидеть это поле, можно просто посмотреть на пакет, и в нижней части окна можно увидеть его значение, которое потом можно применять в любом фильтре.
Например, нас интересует, как создать фильтр, где будет проверяться значение TTL.
Для этого раскрываем L3 часть и становимся на соответствующее поле:


И видим, что для построения фильтра, нужно использовать выражение ip.ttl.
Если начать набирать фильтр, то после точки автоматически появится список возможных значений:


Чтобы применить фильтр, достаточно нажать enter или кнопку Apply.
Само поле для ввода фильтра может менять цвет в зависимости от того, что было набрано.
Зеленый цвет означает, что все в порядке. Красный — допущена ошибка, желтый — получен неожиданный результат, потому что существуют другие варианты написания фильтра (например можно написать ip.dst != 8.8.8.8 или же !ip.dst == 8.8.8.8, именно второй вариант более предпочтительный).
Фильтры можно сохранять для дальнейшего использования, нажав кнопку Save, затем ввести произвольное название


и после нажатия на кнопку ОК фильтр появится как кнопка на панели.


А если кликнуть на расположенную неподалеку кнопку «Expression…», то откроется достаточно мощный конструктор выражений, по которому можно чуть ли не изучать сетевые протоколы. Количество поддерживаемых протоколов постоянно увеличивается.


Как уже упоминалось ранее, можно выделить любой пакет и в контекстном меню выбрать Apply as Filter и в подменю выбрать режим — selected или not selected и соответственно сразу же появится фильтр, который будет показывать только выбранное или наоборот уберет выбранное с экрана.
Таким образом можно гибко выбирать, что видеть на экране, а что — нет.
Это может быть определенный ip-адрес, ttl, порт, dns ответ и многое другое.
Кроме того, есть два варианта для таких быстрых фильтров — Prepare as Filter и Apply as Filter.
Как можно догадаться по названию — разница заключается в том, что в первом случае только появится в поле для ввода Display Filter, но не применится (удобно, если например, добавлять таким способом несколько фильтров, а затем сразу применить готовый результат), а во втором — сразу же и применится.

Таким образом можно строить большие и сложные фильтры вроде:
(tcp.flags.syn==1) && (ip.src == 172.16.10.2) && (ip.dst == 172.16.10.1)
Здесь видим, что выбираются только TCP SYN сегменты, только с определенным адресом отправителя и получателя. При составлении больших фильтров нужно помнить, что фильтр по сути — логическое выражение, и если оно истинно, то пакет отобразится на экране, если ложно — нет.

Достаточно частая ситуация, когда возникают жалобы на медленную работу сети, причин этого может быть множество.
Попробуем разобраться, в чем может быть причина, и рассмотрим два способа.
Первый состоит в добавлении колонки TCP delta.
Открываем пакет, находим поле Time since previous frame in this TCP frame, правый клик и выбираем Apply as Column. Появится новая колонка.
На ней можно кликнуть правой кнопкой мыши и выбрать режим сортировки, например, Sort Descending.


И сразу же рассмотрим второй способ.
Относительно недавно (в версии 1.10.0) появился фильтр tcp.time_delta, который, собственно, учитывает время с момента последнего запроса.


Если клиент делает запрос и получает ответ через 10 миллисекунд, и клиент говорит, что у него все медленно работает, то, возможно, проблема у самого клиента.
Если же клиент делает запрос и получает ответ через 2-3 секунды, тут уже, возможно, проблема кроется в сети.

Если посмотреть в TCP пакет (или сегмент если быть точным), то можно увидеть там Stream index, который начинается обычно с нуля.
Само поле будет называться tcp.stream.


По нему можно сделать правый клик и создать фильтр.


Таким образом можно фильтровать нужные соединения.

Еще один способ – сделать правый клик на самом пакете, выбрать Conversation Filter и создать фильтр для l2 l3 l4 уровня соответственно.


В итоге мы опять увидим взаимодействие двух хостов.

И третий вариант — это одна из самых интересных фич — Follow TCP Stream.
Для того чтобы его задействовать, нужно опять таки кликнуть правой кнопкой мыши на пакете и выбрать “Follow TCP Stream”. Появится окно, где будет наглядно продемонстрирован весь обмен между двумя узлами.


Если же зайти в меню Statistics – Conversations, то, выбирая закладки, можно увидеть статистику по таким “разговорам” и различные сессии, при этом можно отсортировать их по различным колонкам, например, по количеству переданных данных.


И прямо в этом окне можно правой кнопкой взывать контекстное меню и опять же применить как фильтр.

После некоторого времени, проведенного за захватом разнообразного трафика, можно заметить какую-то шарообразную кнопку в нижнем левом углу, которая еще иногда меняет цвет.


Нажатие на эту кнопку приведет к открытию окна Expert Infos.
Того же результата можно добиться, пройдя в меню Analyze – Expert Info.


В этом окне будет содержаться информация по найденным пакетам, разбитая на группы Errors, Warnings, Notes и Chats.
Цветовая раскраска для этих групп выглядит следующим образом:
Ошибки — красный цвет
Предупреждения — желтый
Примечания — сине-зелёный (cyan)
Чат — серый

Wireshark содержит в себе мощный анализатор и умеет автоматически обнаруживать большое количество проблем, возникающих в сети.
Как вы уже могли заметить, буквально везде можно использовать фильтры и Expert Info не является исключением.
Для того чтобы создать такой фильтр, нужно использовать конструкцию expert.severity.
Например, expert.severity==error.


Как можно заметить, рисунок был извлечен без каких-либо проблем.


Таким же способом, можно извлекать и потоковое видео/аудио.


Но на этом возможности Wireshark не заканчиваются!
Он умеет вытаскивать файлы и с протокола FTP.
Для этого можно использовать знакомый уже Follow TCP Stream.
В итоге отобразится только обмен по протоколу FTP, в котором нужно будет найти строку RETR, что собственно и будет означать передачу файла.


Затем опускаемся дальше, находим пакеты уже непосредственно с файлом (FTP-DATA) и опять выбираем Follow TCP Stream, видим содержимое файла, жмем Save As и сохраняем.


Wireshark имеет несколько встроенных функций для работы с этой технологией.
Он поддерживает массу голосовых протоколов — SIP, SDP, RTSP, H.323, RTCP, SRTP и другие.
И, конечно же, умеет перехватывать и сохранять голосовой трафик для дальнейшего прослушивания.
Этот функционал как нельзя лучше подойдет для траблшутинга в сетях Voice over IP.
Меню Statistics — Flow Graph покажет наглядную картину, как происходил весь обмен пакетами.


А вообще целое меню Telephony отведено для работы с голосовым трафиком.
Например, Telephony – RTP – Show All Streams покажет подробно, что происходило с RTP, в частности jitter (параметр, который, вероятно, самый важный в голосе), что иногда сразу скажет о наличии проблем.


Нажав на кнопку “Analyze”, можно открыть окно RTP stream Analysis – и, выбрав там поток, можно его даже проиграть, используя кнопку player.
Сначала отроется окно проигрывателя, в котором вначале нужно установить подходящее значение jitter и использовать кнопку decode.


Появится нечто похожее на анализатор спектра, в котором можно отметить требуемый разговор, и после этого кнопка Play станет активной.


Так же существует еще один способ прослушивания голосовых звонков — можно зайти в меню Telephony – VoIP Calls.


Откроется окно со списком совершенных звонков, где опять же можно нажать кнопку player, отменить нужные разговоры флажками и нажать play.
Для того чтобы добиться приемлемого качества звучания, потребуется проиграться со значением поля jitter buffer, меняя его значение.


Это тот самый сниффер Wireshark, но реализованный в виде онлайн-сервиса. Очевидно, что с его помощью не удастся захватывать сетевой трафик, но выполнять анализ дампа трафика – вполне. Загрузив туда через форму PCAP-файл на анализ, можно будет получить четкую последовательность пакетов, в которой всё данные будут разбиты на понятные поля в зависимости от протокола. В общем, тот же Wireshark, но немного облегченный и доступный из любого браузера.

Напоследок рассмотрим как выглядит сканирование портов.
Смотрим на дамп и видим, что вначале происходит ARP запрос и затем непосредственно начинается сканирование. Адрес нашего маршрутизатора 192.168.10.11, сканирование идет с адреса 192.168.10.101


Это, так называемое, SYN сканирование, когда идут SYN-пакеты на указанный диапазон портов. Так как большинство портов закрыто, маршрутизатор отвечает пакетами RST, ACK.
Пролистав чуть ниже видим, что открыт telnet (tcp 23).

Читайте также: