Файл pcap чем открыть
Файл PCAPNG содержит пакеты данных, захваченные по сети. Файл сохраняется в формате PCAP Next Generation (PCAPNG). Пакеты данных, хранящиеся в файле PCAPNG, используются приложениями анализа сетевых протоколов, такими как Wireshark, для мониторинга и администрирования сетевых данных. Пакеты данных в файле PCAPNG собирают информацию различных типов в нескольких блоках и сохраняют пакеты данных в структурированном формате. Информация, сохраненная в нескольких блоках, таких как блок заголовка раздела, блок описания интерфейса, расширенный блок пакета, блок разрешения имени и т. Д., Может использоваться для восстановления захваченных данных.
Программы, которые поддерживают PCAPNG расширение файла
В следующем списке перечислены программы, совместимые с файлами PCAPNG, которые разделены на категории 3 в зависимости от операционной системы, в которой они доступны. Файлы с расширением PCAPNG, как и любые другие форматы файлов, можно найти в любой операционной системе. Указанные файлы могут быть переданы на другие устройства, будь то мобильные или стационарные, но не все системы могут быть способны правильно обрабатывать такие файлы.
Поиск пакетов
Wireshark поддерживает мощный язык запросов. Это значительно упрощает поиск конкретных пакетов в списках. Обычно я, при работе с программой, использую очень простые запросы. Вот несколько примеров:
- Запрос frame contains "mozilla" позволяет выполнить поиск строки mozilla в любом месте пакета и вывести список найденных пакетов.
- Запрос tcp.port == 443 выводит пакеты, использующие TCP-порт 443.
- Запрос dns.resp.len > 0 выводит все DNS-ответы
- Запрос ip.addr == 52.7.23.87 выводит пакеты, IP-адрес источника или получателя которых равен 52.7.23.87.
Реальный сниффинг
На текущем этапе мы узнали как определить устройство, приготовить его для захвата трафика, и применить фильтры. Теперь время захватить несколько пакетов. Есть два основных способа захватывать пакеты. Мы можем просто захватить один пакет, или мы можем войти в цикл, который выполняется пока не будет захвачено n пакетов. Мы начнем с того, что покажем, как можно захватить один пакет, и после рассмотрим методы использования циклов. Взглянем на прототип pcap_next() :
Первый аргумент — дескриптор сессии. Второй — указатель на структуру которая содержит общую информацию о пакете, конкретно — время в которое он был захвачен, длина пакета, и длина его определенной части (например, если он фрагментированный). pcap_next() возвращает u_char указатель на пакет, который описан в структуре. Мы поговорим о чтении пакетов позже.
Это демонстрация использования pcap_next() для захвата пакетов:
Приложение захватывает трафик любого устройства, полученное через pcap_loockupdev() , помещая его в неразборчивый режим. Оно обнаруживает что пакет попадает в порт 23 (telnet) и сообщает пользователю размер пакета (в байтах). Опять же, программа включает в себя вызов pcap_close() , который мы обсудим позже (хотя он вполне понятен).
Второй способ захвата трафика — использование pcap_loop() или pcap_dispatch() (который в свою очередь сам использует pcap_loop() ). Что бы понять использование этих двух функций, нам нужно понять идею функции обратного вызова.
Функция обратного вызова (callback function) не является чем то новым, это обычная вещь в большом количестве API. Концепция, которая стоит за функцией обратного вызова очень проста. Предположим, что у есть программа которая ждет события определенного рода. Просто для примера, предположим что программа ждет нажатие клавиши. Каждый раз, когда пользователь нажимает клавишу, моя программа вызовет функцию, что бы обработать это нажатие клавиши. Это и есть функция обратного вызова. Эти функции используются в PCAP, но вместо вызова их в момент нажатия клавиши, они вызываются тогда, когда PCAP захватывает пакет. Использовать функции обратного вызова можно только в pcap_loop() и pcap_dispatch() которые очень похожи в этом плане. Каждая из них вызывает функцию обратного вызова каждый раз, когда попадется пакет который проходит сквозь фильтр (если конечно фильтр есть. Если нет, то все пакеты, которые были захвачены вызовут функцию обратного вызова).
Прототип pcap_loop() приведен ниже:
Первый аргумент — дескриптор сессии. Дальше идет целое число, которое сообщает pcap_loop() количество пакетов, которые нужно захватить (отрицательное значение говорит о том, что цикл должен выполняться до возникновения ошибки). Третий аргумент — имя функции обратного вызова (только идентификатор, без параметров). Последний аргумент полезен в некоторых приложениях, но в большинстве случаев он просто устанавливается NULL. Предположим, что у нас есть аргументы, которые мы хотим передать функции обратного вызова, в дополнение к тем, которые передает ей pcap_loop() . Последний аргумент как раз то место, где мы это сделаем. Очевидно, вы должны привести их к u_char * типу, что бы убедится что вы получите верные результаты. Как мы увидим позже, PCAP использует некоторые интересные способы передачи информации в виде u_char * . После того, как мы покажем пример того, как PCAP делает это, будет очевидно как сделать это и в этом моменте. Если нет — обратитесь к справочному тексту по С, так как объяснения указателей находятся за рамками темы этого документа. pcap_dispatch() почти идентична в использовании. Единственное различие между pcap_dispatch() и pcap_loop() это то, что pcap_dispatch() будет обрабатывать только первую серию пакетов полученных из системы, тогда как pcap_loop() будет продолжать обработку пакетов или партий пакетов до тех пор пока счетчик не закончится. Для более глубокого обсуждения различий, смотрите официальную документацию PCAP.
Прежде чем мы приведем пример использования pcap_loop() , мы должны проверить формат нашей функции обратного вызова. Мы не можем самостоятельно определить прототип функции обратного вызова, иначе pcap_loop() не будет знать, как использовать ее. Так что мы должны использовать этот формат в качестве прототипа нашей функции обратного вызова:
Давайте разберем его более детально. Первое — функция должна иметь void тип. Это логично, потому что pcap_loop() в любом случае не знал бы, что делать с возвращаемым значением. Первый аргумент соответствует последнему аргументу pcap_loop() . Независимо от того, какое значение передается последним аргументом pcap_loop() , оно передается первому аргументу нашей функции обратного вызова. Второй аргумент — это PCAP заголовок, который содержит информацию о том, когда пакет был захвачен, насколько он большой, и так далее. Структура pcap_pkthdr определена в файле pcap.h как:
Эти значения должны быть достаточно понятными. Последний аргумент — самый интересный из всех, и самый сложный для понимания начинающему программисту. Это другой указатель на u_char , и он указывает на первый байт раздела данных содержащихся в пакете, который был захвачен pcap_loop() .
Но как можно использовать эту переменную (названную packet) в прототипе? Пакет содержит много атрибутов, так что, как можно предположить, это не строка, а набор структур (для примера, пакет TCP/IP содержит в себе Ethernet заголовок, IP заголовок, TCP заголовок, и наконец, данные). Этот u_char указатель указывает на сериализованную версию этих структур. Что бы начать использовать какую нибудь из них необходимо произвести некоторые интересные преобразования типов.
Первое, мы должны определить сами структуры, прежде чем мы сможем привести данные к ним. Следующая структура используется мной для чтения TCP/IP пакета из Ethernet.
Так как в итоге это все относится к PCAP и нашему загадочному u_char указателю? Эти структуры определяют заголовки, которые предшествуют данным пакета. И как мы в итоге можем разбить пакет? Приготовьтесь увидеть одно из самых практичных использований указателей (для всех новичков в С которые думают что указатели бесполезны говорю: это не так).
Опять же, мы будем предполагать, что мы имеем дело с TCP/IP пакетом Ethernet. Этот же метод применяется к любому пакету. Единственное различие — это тип структуры, которые вы фактически используете. Итак, давайте начнем с определения переменных и определения времени компиляции. Нам нужно будет деконструировать данные пакета.
И теперь мы делаем наше магическое преобразование типов:
Как это работает? Рассмотрим структуру пакета в памяти. u_char указатель — просто переменная содержащая адрес в памяти.
Ради простоты, давайте скажем, что адрес на который указывает этот указатель это Х . Тогда, если наши структуры просто находятся в линии, то первая из них — sniff_ethernet , будет расположена в памяти по адресу Х , так же мы можем легко найти адрес структуры после нее. Этот адрес — это Х плюс длина Ethernet заголовка, которая равна 14, или SIZE_ETHERNET .
Аналогично, если у нас есть адрес этого заголовка, то адрес структуры после него — это сам адрес плюс длина этого заголовка. Заголовок IP, в отличие от заголовка Ethernet, не имеет фиксированной длины. Его длина указывается как количество 4-байтовых слов по полю заголовка IP. Поскольку это количество 4-байтных слов, оно должно быть умножено на 4, что бы указать размер в байтах. Минимальная длина этого заголовка составляет 20 байтов.
TCP заголовок так же имеет вариативную длину, эта длина указывается как число 4-байтных слов, в поле "смещения данных" заголовка TCP, и его минимальная длина так же равна 20 байтам.
Итак, давайте сделаем диаграмму:
VARIABLE | LOCATION(in bytes) |
---|---|
sniff_ethernet | X |
sniff_ip | X + SIZE_ETHERNET |
sniff_tcp | X + SIZE_ETHERNET + |
payload | X + SIZE_ETHERNET + + |
sniff_ethernet структура, находясь в первой линии, просто находится по адресу Х . sniff_ip , которая следует прямо за sniff_ethernet , это адрес Х плюс такое количество байтов, которое занимает структура sniff_ethernet (14 байтов или SIZE_ETHERNET ). sniff_tcp находится прямо после двух предыдущих структур, так что его локация это — X плюс размер Ethernet, и IP заголовок. (14 байтов, и 4 раза длина заголовка IP). Наконец, данные (для которых не существует определенной структуры) расположены после них всех.
Итак, на данном этапе мы знаем, как использовать функцию обратного вызова, вызвать ее и получить данные из полученного пакета. Здесь я приложу исходный код готового сниффера. Просто скачайте sniffer.c и попробуйте сами.
Использование Wireshark для изучения сетевых протоколов
В этом материале встречаются некоторые термины, которые можно отнести к чему-то вроде жаргона сетевых специалистов. Например — кадр (frame), TCP-порт (TCP port), DNS-ответ (DNS response), IP-адрес источника (source IP address), пакет client hello SSL-соединения (SSL client hello). Одной из причин их использования является тот факт, что Wireshark, определённо, не пытается оградить пользователя от тонкостей внутреннего устройства сетевых технологий. Новичка такое положение дел может, поначалу, заставить задуматься о том, что Wireshark — это программа не для него, а лишь для опытных сетевых специалистов.
У такой ориентированности Wireshark на низкоуровневые сетевые механизмы, однако, есть серьёзный плюс. Дело в том, что работая с этой программой, можно узнать что-то новое о сетевых протоколах. Например, я не особенно много знаю о внутренних механизмах протокола TLS/SSL. Однако, анализируя трафик в Wireshark, я обратила внимание на то, что первые два пакета SSL-соединения — это client hello и server hello . В результате протокол, который, если не вникать в детали его работы, кажется чем-то таинственным и недоступным для понимания, начинает обретать более понятную форму, превращается в нечто такое, что можно понять и проанализировать.
Обновление Wireshark
Просмотр содержимого пакетов
Wireshark даёт сетевому администратору два невероятно полезных инструмента для исследования содержимого пакетов. Первый — это режим просмотра, в котором можно раскрывать заголовки, имеющиеся у пакета (например — Ethernet-заголовок, IP-заголовок, TCP-заголовок) и просматривать их содержимое.
Анализ заголовков пакета
Анализ необработанных данных пакета
Программы, обслуживающие файл PCAPNG
Windows
MAC OS
Linux
Updated: 01/28/2022
Итоги
Wireshark имеет огромнейшие возможности. Здесь мы рассказали лишь о некоторых из них. Однако, те приёмы работы, которые здесь рассмотрены, по словам автора материала, используются примерно в 95% ситуаций, когда возникает необходимость в Wireshark. Поэтому мы надеемся, что даже то немногое, о чём вы сегодня узнали, вам пригодится.
Данный текст является переводом статьи Тима Карстенса Programming with pcap 2002 года. В русскоязычном интернете не так много информации по PCAP. Перевод сделан в первую очередь для людей, которым интересна тема захвата трафика, но при этом они плохо владеют английским языком. Под катом, собственно, сам перевод.
Как открыть файл PCAPNG?
Проблемы с доступом к PCAPNG могут быть вызваны разными причинами. К счастью, наиболее распространенные проблемы с файлами PCAPNG могут быть решены без глубоких знаний в области ИТ, а главное, за считанные минуты. Ниже приведен список рекомендаций, которые помогут вам выявить и решить проблемы, связанные с файлами.
Шаг 1. Скачайте и установите Wireshark
Проблемы с открытием и работой с файлами PCAPNG, скорее всего, связаны с отсутствием надлежащего программного обеспечения, совместимого с файлами PCAPNG на вашем компьютере. Этот легкий. Выберите Wireshark или одну из рекомендованных программ (например, CapLoader) и загрузите ее из соответствующего источника и установите в своей системе. В верхней части страницы находится список всех программ, сгруппированных по поддерживаемым операционным системам. Если вы хотите загрузить установщик Wireshark наиболее безопасным способом, мы рекомендуем вам посетить сайт Gerald Combs и загрузить его из официальных репозиториев.
Шаг 2. Проверьте версию Wireshark и обновите при необходимости
Вы по-прежнему не можете получить доступ к файлам PCAPNG, хотя Wireshark установлен в вашей системе? Убедитесь, что программное обеспечение обновлено. Разработчики программного обеспечения могут реализовать поддержку более современных форматов файлов в обновленных версиях своих продуктов. Если у вас установлена более старая версия Wireshark, она может не поддерживать формат PCAPNG. Все форматы файлов, которые прекрасно обрабатывались предыдущими версиями данной программы, также должны быть открыты с помощью Wireshark.
Шаг 3. Назначьте Wireshark для PCAPNG файлов
После установки Wireshark (самой последней версии) убедитесь, что он установлен в качестве приложения по умолчанию для открытия PCAPNG файлов. Метод довольно прост и мало меняется в разных операционных системах.
Процедура изменения программы по умолчанию в Windows
- Щелкните правой кнопкой мыши на файле PCAPNG и выберите « Открыть с помощью опцией».
- Далее выберите опцию Выбрать другое приложение а затем с помощью Еще приложения откройте список доступных приложений.
- Чтобы завершить процесс, выберите Найти другое приложение на этом. и с помощью проводника выберите папку Wireshark. Подтвердите, Всегда использовать это приложение для открытия PCAPNG файлы и нажав кнопку OK .
Процедура изменения программы по умолчанию в Mac OS
Шаг 4. Убедитесь, что файл PCAPNG заполнен и не содержит ошибок
Если проблема по-прежнему возникает после выполнения шагов 1-3, проверьте, является ли файл PCAPNG действительным. Отсутствие доступа к файлу может быть связано с различными проблемами.
1. Проверьте PCAPNG файл на наличие вирусов или вредоносных программ.
Если случится так, что PCAPNG инфицирован вирусом, это может быть причиной, которая мешает вам получить к нему доступ. Рекомендуется как можно скорее сканировать систему на наличие вирусов и вредоносных программ или использовать онлайн-антивирусный сканер. PCAPNG файл инфицирован вредоносным ПО? Следуйте инструкциям антивирусного программного обеспечения.
2. Убедитесь, что структура файла PCAPNG не повреждена
3. Проверьте, есть ли у пользователя, вошедшего в систему, права администратора.
Существует вероятность того, что данный файл может быть доступен только пользователям с достаточными системными привилегиями. Переключитесь на учетную запись с необходимыми привилегиями и попробуйте снова открыть файл Pcap-NG Packet Capture Format.
4. Убедитесь, что в системе достаточно ресурсов для запуска Wireshark
Если в системе недостаточно ресурсов для открытия файлов PCAPNG, попробуйте закрыть все запущенные в данный момент приложения и повторите попытку.
5. Проверьте, есть ли у вас последние обновления операционной системы и драйверов
Регулярно обновляемая система, драйверы и программы обеспечивают безопасность вашего компьютера. Это также может предотвратить проблемы с файлами Pcap-NG Packet Capture Format. Возможно, файлы PCAPNG работают правильно с обновленным программным обеспечением, которое устраняет некоторые системные ошибки.
Вы хотите помочь?
Если у Вас есть дополнительная информация о расширение файла PCAPNG мы будем признательны, если Вы поделитесь ею с пользователями нашего сайта. Воспользуйтесь формуляром, находящимся здесь и отправьте нам свою информацию о файле PCAPNG.
Файл содержит сетевые пакеты, перехваченные программой-сниффером, которая используется для отслеживания и анализа трафика. Файлы CAP также известны как «файлы трассировки» и хранят необработанные данные, полученные в результате прослушивания трафика.
Как, чем открыть файл .cap?
Инструкция - как выбрать программу из списка, скачать и использовать ее для открытия файла
Подробное описание
Файл содержит обновление прошивки BIOS для моделей компьютеров ASUS, работающих под управлением ОС Microsoft Windows. Файл CAP содержит настройки и инструкции для обновления версии BIOS на материнской плате. Установка обновления осуществляется с помощью стандартной встроенной утилиты ASUS EZ Flash.
Как, чем открыть файл .cap?
Инструкция - как выбрать программу из списка, скачать и использовать ее для открытия файла
Подробное описание
Файл представляет собой файл проекта компьютерной игры, разработанной на движке Construct, конструкторе двухмерных видеоигр. Файл CAP включает игровую графику, модели и звуки, а также обработчики событий, определяющие выполнение тех или иных действий в игре.
Как, чем открыть файл .cap?
Инструкция - как выбрать программу из списка, скачать и использовать ее для открытия файла
Подробное описание
Файл данных эксперимента, созданного с использованием программного обеспечения PASCO Capstone для сбора, анализа и визуализации данных в научных, инженерных и физических лабораториях. Файл CAP содержит анализы, графики, расчеты, собранные данные и параметры эксперимента в собственном формате PASCO Capstone и может быть открыт только в этой программе.
Как, чем открыть файл .cap?
Инструкция - как выбрать программу из списка, скачать и использовать ее для открытия файла
Для более точного определения формата и программ для открытия файла используйте функцию определения формата файла по расширению и по данным (заголовку) файла.
Джулия Эванс, автор материала, перевод которого мы сегодня публикуем, решила рассказать об одном из своих любимых сетевых инструментов, который называется Wireshark. Это — мощная и сложная программа, оснащённая графическим интерфейсом, предназначенная для анализа трафика в компьютерных сетях. Джулия говорит, что на практике пользуется лишь немногими возможностями Wireshark, но они обычно оказываются очень кстати. Здесь она хочет поделиться со всеми желающими рассказом о самых полезных приёмах работы с программой и надеется, что они пригодятся не только ей, но и всем, кому приходится решать сетевые проблемы.
Завершение
На данном этапе вы должны быть способны написать сниффер используя PCAP. Вы изучили базовые концепты которые стоят за открытием PCAP сессии, узнали главные детали о сниффиге пакетов, применении фильтров, и использования функций обратного вызова. Теперь пришло время выйти и самостоятельно захватить трафик.
Тим Карстенс 2002. Все права защищены. Распространение и использование, с модификацией и без нее разрешены при соблюдении следующих условий:
Копия должна содержать вышеупомянутое уведомление об авторских правах и этот список условий:
Имя Тима Карстенса не может использоваться для одобрения или продвижения продуктов, полученных из этого документа, без специального предварительного письменного разрешения.
This document is Copyright 2002 Tim Carstens. All rights reserved. Redistribution and use, with or without modification, are permitted provided that the following conditions are met:
Redistribution must retain the above copyright notice and this list of conditions.
The name of Tim Carstens may not be used to endorse or promote products derived from this document without specific prior written permission.
/ Insert 'wh00t' for the BSD license here /
PCAP - это формат файла, используемый приложениями для мониторинга сетевого трафика. Sniffer (например, Wireshark), как обычно упоминаются такие инструменты, регистрирует пакетные данные и сохраняет их в файл PCAP. Файлы PCAP позволяют пользователям проверять сетевой трафик для данного сеанса захвата (в автономном режиме, а не в режиме реального времени). Анализ и аудит сетевого трафика является важной практикой, которая способствует оптимизации производительности сети и предотвращению кибератак.
Что такое сниффер?
Sniffer - тип программного инструмента, который может захватывать и анализировать сетевой трафик. Инструмент «прослушивает» сетевой трафик в данной сети, переключая сетевой интерфейс, который он прослушивает, в беспорядочный режим, чтобы он мог видеть весь трафик в данной сети, включая данные, не адресованные этому конкретному интерфейсу. Запуск анализатора на маршрутизаторе на компьютере, подключенном к сети, не требует беспорядочного использования. Sniffer также может относиться к электронному устройству для мониторинга сетевого трафика.
Программное приложение Wireshark
Wireshark - это бесплатный инструмент анализатора, доступный для систем Windows, Linux и Mac. Этот инструмент предлагает множество функций и функций, которые сделали его самым популярным инструментом анализа сетевого трафика. Wireshark используется как профессиональными лабораториями или ИТ-компаниями, так и отдельными пользователями для личного пользования. Ethereal был первоначальным названием этого инструмента до мая 2006 года, когда он был переименован в Wireshark. Ethereal использовал формат файла PCAP для хранения данных сетевого трафика.
Программы, которые поддерживают PCAP расширение файла
Ниже вы найдете указатель программ, которые можно использовать для открытия файлов PCAP, разделенных на категории 2 в соответствии с поддерживаемой системной платформой. Файлы с суффиксом PCAP могут быть скопированы на любое мобильное устройство или системную платформу, но может быть невозможно открыть их должным образом в целевой системе.
Просмотр сведений о продолжительности TCP-соединений
Иногда мне нужно обратить особое внимание на исследование медленных TCP-соединений. Как это сделать, при условии, что в имеющемся у меня файле есть записи о тысячах пакетов? Как найти медленные TCP-соединения?
Если выбрать в главном меню программы пункт Statistics , а в нём — команду Conversations , Wireshark предоставит нам замечательный набор статистических сведений.
Статистические сведения
В частности здесь, в колонке Duration , можно увидеть длительность TCP-соединений, выявить самые длительные из них и внимательно их изучить. Это весьма полезная возможность.
Как открыть файл PCAP?
Причин, по которым у вас возникают проблемы с открытием файлов PCAP в данной системе, может быть несколько. Что важно, все распространенные проблемы, связанные с файлами с расширением PCAP, могут решать сами пользователи. Процесс быстрый и не требует участия ИТ-специалиста. Приведенный ниже список проведет вас через процесс решения возникшей проблемы.
Шаг 1. Получить Wireshark
Шаг 2. Обновите Wireshark до последней версии
Если у вас уже установлен Wireshark в ваших системах и файлы PCAP по-прежнему не открываются должным образом, проверьте, установлена ли у вас последняя версия программного обеспечения. Разработчики программного обеспечения могут реализовать поддержку более современных форматов файлов в обновленных версиях своих продуктов. Причиной того, что Wireshark не может обрабатывать файлы с PCAP, может быть то, что программное обеспечение устарело. Все форматы файлов, которые прекрасно обрабатывались предыдущими версиями данной программы, также должны быть открыты с помощью Wireshark.
Шаг 3. Свяжите файлы Packet Capture Data с Wireshark
Если у вас установлена последняя версия Wireshark и проблема сохраняется, выберите ее в качестве программы по умолчанию, которая будет использоваться для управления PCAP на вашем устройстве. Метод довольно прост и мало меняется в разных операционных системах.
Выбор приложения первого выбора в Windows
- Нажатие правой кнопки мыши на PCAP откроет меню, из которого вы должны выбрать опцию Открыть с помощью
- Далее выберите опцию Выбрать другое приложение а затем с помощью Еще приложения откройте список доступных приложений.
- Наконец, выберите Найти другое приложение на этом. , укажите папку, в которой установлен Wireshark, установите флажок Всегда использовать это приложение для открытия PCAP файлы свой выбор, нажав кнопку ОК
Выбор приложения первого выбора в Mac OS
Шаг 4. Проверьте PCAP на наличие ошибок
Вы внимательно следили за шагами, перечисленными в пунктах 1-3, но проблема все еще присутствует? Вы должны проверить, является ли файл правильным PCAP файлом. Вероятно, файл поврежден и, следовательно, недоступен.
1. Проверьте PCAP файл на наличие вирусов или вредоносных программ.
Если файл заражен, вредоносная программа, находящаяся в файле PCAP, препятствует попыткам открыть его. Рекомендуется как можно скорее сканировать систему на наличие вирусов и вредоносных программ или использовать онлайн-антивирусный сканер. Если сканер обнаружил, что файл PCAP небезопасен, действуйте в соответствии с инструкциями антивирусной программы для нейтрализации угрозы.
2. Убедитесь, что структура файла PCAP не повреждена
3. Проверьте, есть ли у пользователя, вошедшего в систему, права администратора.
Существует вероятность того, что данный файл может быть доступен только пользователям с достаточными системными привилегиями. Выйдите из своей текущей учетной записи и войдите в учетную запись с достаточными правами доступа. Затем откройте файл Packet Capture Data.
4. Убедитесь, что ваше устройство соответствует требованиям для возможности открытия Wireshark
Операционные системы могут иметь достаточно свободных ресурсов для запуска приложения, поддерживающего файлы PCAP. Закройте все работающие программы и попробуйте открыть файл PCAP.
5. Проверьте, есть ли у вас последние обновления операционной системы и драйверов
Современная система и драйверы не только делают ваш компьютер более безопасным, но также могут решить проблемы с файлом Packet Capture Data. Возможно, что одно из доступных обновлений системы или драйверов может решить проблемы с файлами PCAP, влияющими на более старые версии данного программного обеспечения.
Вы хотите помочь?
Если у Вас есть дополнительная информация о расширение файла PCAP мы будем признательны, если Вы поделитесь ею с пользователями нашего сайта. Воспользуйтесь формуляром, находящимся здесь и отправьте нам свою информацию о файле PCAP.
Команда Decode as
Программы, обслуживающие файл PCAPNG
Windows
MAC OS
Linux
Updated: 01/28/2022
Программы, обслуживающие файл PCAP
Windows
Linux
Updated: 11/28/2021
Анализ pcap-файлов
Обычно я использую Wireshark для выяснения причин сетевых неполадок. Последовательность действий, выполняемая в ходе решения подобных задач, выглядит так:
- Захват пакетов с помощью tcpdump (обычно — с помощью команды наподобие sudo tcpdump port 443 -w output.pcap ).
- Копирование pcap-файла на рабочий ноутбук ( scp host:~/output.pcap . ).
- Открытие pcap-файла с помощью Wireshark ( wireshark output.pcap ).
Установка Wireshark
Дистрибутивы Wireshark для различных операционных систем можно найти здесь. Для инсталляции программы можно скачать и установить соответствующий файл. Кроме того, если вы пользуетесь дистрибутивами Linux, основанными на Debian, можете воспользоваться командой sudo apt install wireshark . При желании, для того, чтобы найти самую свежую версию программы, вы можете обратиться к персональному архиву пакетов wireshark-dev.
Вот как выглядит интерфейс программы.
Интерфейс Wireshark
На первый взгляд всё это может показаться слишком сложным: длинный список пакетов, таинственное поле для ввода каких-то запросов… Как же работать с Wireshark?
Начало работы: Общая форма приложения PCAP
Первая вещь которую необходимо понять — общая структура PCAP сниффера. Она может выглядеть следующим образом:
- Начнем с определения идентификатора интерфейса, трафик с которого мы хотим получить. В Linux это может быть что нибудь вроде eth0 , в BSD это может быть xl1 , и тому подобное. Мы можем либо указать этот идентификатор в строке, либо попросить PCAP предоставить его нам.
- Далее необходимо инициализировать PCAP. На данном этапе нам нужно передать PCAP имя устройства, с которым мы будем работать. При необходимости мы можем захватить трафик с нескольких устройств. Для их различия мы будем использовать дескрипторы сеансов. Так же, как и во время работы с файлами, нам нужно назвать наш сеанс захвата трафика, что бы мы могли отличить его от других подобных сеансов.
- В случае, если мы хотим получить какой то определенный трафик (например, только TCP/IP пакеты, или пакеты только с порта 23 и так далее) мы должны создать набор правил, "скомпилировать" их, и применить их к конкретному сеансу. Это трехфазный, тесно связанный процесс. Набор правил изначально находится в строке, а после компилируется в понятный PCAP формат. Компиляция производится вызовом функции внутри нашей программы, она не связана с использованием какого либо внешнего приложения. Далее мы говорим PCAP применить этот фильтр к необходимой нам сессии.
- Наконец, мы говорим PCAP начать захват трафика. В случае использования pcap_loop , PCAP будет работать до тех пор, пока не получит столько пакетов, сколько мы ему указали. Каждый раз, когда он получает новый пакет, он вызывает определенную нами функцию. Эта функция может делать все что мы хотим. Она может прочитать пакет, и передать информацию пользователю, она может сохранить его в файл, или вовсе не делать ничего.
- После того, как мы закончим работу по захвату, сессию можно закрыть.
На самом деле это очень простой процесс. Всего пять шагов, один из которых не обязательный (шаг 3). Давайте рассмотрим каждый шаг, и их реализации.
Определение устройства
Это ужасно просто. Есть два способа определить устройство, которое мы хотим прослушивать.
Первый — просто позволить пользователю сказать программе имя того устройства с которого он хочет захватывать трафик. Рассмотрим этот код:
Пользователь определяет устройство указывая его имя в качестве первого аргумента программы. Теперь, строка dev содержит имя интерфейса который мы будем прослушивать в формате понятном PCAP (конечно, при условии, что пользователь дал нам реальное имя интерфейса)
Второй способ также очень прост. Давайте взглянем на программу:
Настройка устройства для сниффинга
Задача создания сессии захвата трафика так же очень проста. Для этого мы будем использовать функцию pcap_open_live() . Прототип этой функции:
Для демонстрации, рассмотрим этот фрагмент кода:
Замечания по поводу разборчивого/неразборчивого режимов сниффинга: два способа очень различны по стилю. Обычно, интерфейс находится в разборчивом режиме, захватывая только тот трафик, который отправлен именно ему. Только трафик направленный от него, к нему, или маршрутизированный через него будет захвачен сниффером. Неразборчивый режим, наоборот, захватывает весь трафик который проходит через кабель. В среде без коммутации это может быть весь сетевой трафик. Очевидным преимуществом этого способа является то, возможно захватить большее количество пакетов, что может быть полезным, или нет, в зависимости от цели захвата трафика. Однако существуют и недостатки. Неразборчивый режим легко детектируется, один узел может четко определить, находится ли другой в неразборчивом режиме или нет. Так же, он работает только в не коммутируемой среде (например хаб, или маршрутизатор использующий APR). Еще одним недостатком является то, что в сетях с большим количеством трафика может не хватить системных ресурсов для захвата и анализа всех пакетов.
Не все устройства предоставляют одни и те же заголовки канального уровня в прочитанных вами пакетах. Ethernet устройства, и некоторые не-Ethernet устройства, могут предоставить Ethernet заголовки, но другие типы устройств, например такие как замыкающие устройства в BSD и OS X, PPP-интерфейсы, и Wi-Fi-интерфейсы в режиме мониторинга — нет.
Вам нужно определить тип заголовков канального уровня, которые предоставляет устройство, и использовать для анализа содержимого пакетов. pcap_datalink() возвращает тип заголовков канального уровня. (Cм. список значений заголовков канального уровня. Возвращаемые значения — значения DHT_ в этом списке)
Если ваша программа не поддерживает заголовки канального уровня предоставляемые устройством, то она должна будет прекратить работу, с помощью подобного кода:
который сработает если устройство не поддерживает Ethernet — заголовки. Это может сработать для кода приведенного ниже, который использует заголовки Ethernet.
Фильтрация трафика
Часто мы заинтересованы в захвате только определенного типа трафика. Для примера — бывает такое, что единственное что мы хотим — это захватить трафик с порта 23(telnet) для поиска паролей. Или возможно мы хотим перехватить файл который был отправлен через порт 21(FTP). Может быть мы хотим захватить только DNS трафик (порт 53 UDP). Однако, бывают редкие случаи, когда мы просто хотим слепо захватывать весь интернет трафик. Давайте рассмотрим функции pcap_compile() и pcap_setfilter() .
Процесс очень простой. После того, как мы вызвали pcap_open_live() и имеем работающую сессию сниффинга, мы можем применить наш фильтр. Вы спросите, почему просто не использовать обычные if / else if выражения? Две причины: первая — фильтр PCAP эффективнее, потому что он фильтрует непосредственно через BPF; соответственно нам нужно куда меньшее количество ресурсов, ведь драйвер BPF делает это напрямую. Вторая — это то, что фильтры PCAP просто проще.
Что бы скомпилировать фильтр мы вызываем функцию pcap_compile() . Прототип определяет эту функцию как:
Первый аргумент — это наш дескриптор сессии ( pcap_t* handle в нашем предыдущем примере). Следующий — это указатель на место, где мы будем хранить скомпилированную версию фильтра. Далее идет само выражение, в обычном строковом формате. После идет целое число, которое определяет, нужно ли оптимизировать выражения фильтра, или нет (0 — нет, 1 — да). Наконец, мы должны определить сетевую маску той сети, к которой мы применяем фильтр. Функция возвращает -1 при ошибке; все остальные значения означают успех.
После компиляции фильтра, время применить его. Вызовем pcap_setfilter() . Следуя нашему формату объяснения PCAP, мы должны рассмотреть прототип этой функции:
Это очень прямолинейно и просто. Первый аргумент — наш дескриптор сессии, второй — указатель на скомпилированную версию нашего фильтра (это должна быть та же переменная, что и в предыдущей функции pcap_compile() ).
Возможно этот пример поможет вам понять лучше:
Эта программа настроена на сниффинг трафика который проходит через порт 23, в неразборчивом режиме, на устройстве rl0 .
Мы можете заметить, что предыдущий пример содержит функцию, о которой мы еще не говорили. pcap_lookupnet() — это функция которая, получая имя устройства возвращает IPv4 сетевой номер и соответствующую сетевую маску (сетевой номер — это адрес IPv4 ANDed с сетевой маской, поэтому он содержит только сетевую часть адреса). Это существенно, потому что нам нужно знать сетевую маску для применения фильтра.
По моему опыту, этот фильтр не работает в некоторых ОС. В моей тестовой среде я обнаружил, что OpenBSD 2.9 c ядром по умолчанию поддерживает этот тип фильтра, но FreeBSD 4.3 с ядром по умолчанию — нет. Ваш опыт может отличаться.
Анализ TCP-соединений
Часто, когда я анализирую в Wireshark некую ситуацию, мне нужно проверить какое-то конкретное TCP-соединение, с которым, по какой-то причине, что-то не так. Благодаря Wireshark можно проанализировать весь жизненный цикл отдельного TCP-соединения и выяснить причины неправильного поведения системы.
Сделать это можно, щёлкнув правой кнопкой мыши по интересующему вас пакету и выбрав в контекстном меню команду Conversation filter > TCP .
Начало анализа TCP-соединения
После этого Wireshark покажет другие пакеты из того же TCP-соединения, к которому принадлежит тот пакет, по которому вы щёлкнули. На рисунке ниже можно видеть пример успешного SSL-соединения — тут присутствуют пакеты client hello , service hello , certificate , server key exchange , которые используются для установления SSL-соединений.
Анализ TCP-соединения
Рассматриваемую здесь методику анализа TCP-пакетов мне пришлось использовать в день написания этой статьи, на работе. Некоторые соединения сбрасывались, и я заметила, что после отправки пакета client hello клиент отправлял пакет FIN ACK , который завершал TLS-соединение. То, что мне удалось выяснить, оказалось полезным, так как стало ясно, что соединения завершает клиент, а не сервер. В результате я тут же узнала, что проблема кроется на клиенте, и мне нужно обратить внимание именно на него.
Выше описана весьма типичная для меня схема работы с Wireshark. Обычно в соединении участвуют клиент и сервер, и что-то идёт не так либо на клиенте, либо на сервере. Это может быть, например, какой-нибудь сбой или ошибка в настройках системы. В результате Wireshark оказывает мне просто бесценную помощь в деле определения виновника проблем, помогая выяснить — клиент это или сервер.
Вступление
Давайте начнем с того, что определим, для кого написана эта статья. Очевидно, что некоторое базовое знание C необходимо (если, конечно, вы не хотите просто понять теорию), для понимания кода приведенного в статье, но вам не нужно быть ниндзя программирования: в тех моментах, которые могут быть понятны только более опытными программистам я постараюсь подробно объяснить все концепции. Так же, пониманию может помочь некоторое базовое знание работы сетей, учитывая что PCAP — это библиотека для реализации сниффинга (Прим. переводчика: Сниффинг — процесс захвата сетевого трафика, своего, или чужого). Все представленные здесь примеры кода были протестированы на FreeBSD 4.3 с ядром по умолчанию.
Читайте также: