Суперподробное руководство по использованию Wireshark
Суперподробное руководство по использованию Wireshark
1. Что такое Wireshark?

Wireshark — очень популярное программное обеспечение для анализа сетевых пакетов, называемое Little Shark, и очень мощное. Может перехватывать различные сетевые пакеты и отображать подробную информацию о сетевых пакетах.

Wireshark — это программное обеспечение с открытым исходным кодом, и его можно использовать с уверенностью. Может работать на Windows и Mac OS. Соответственно, инструментом перехвата пакетов в Linux является tcpdump. Люди, использующие Wireshark, должны понимать сетевой протокол, иначе они не поймут Wireshark.

2. Распространенные сценарии применения Wireshark

  • Сетевые администраторы используют Wireshark для проверки сетевых проблем.
  • Инженеры по тестированию программного обеспечения используют Wireshark для захвата пакетов и анализа тестируемого программного обеспечения.
  • Инженеры, занимающиеся программированием сокетов, будут использовать Wireshark для отладки
  • Эксплуатационный и обслуживающий персонал используется для повседневной работы, реагирования на чрезвычайные ситуации и т. д.

Короче говоря, Wireshark можно использовать для всего, что связано с сетью.

3. Принцип захвата пакетов Wireshark

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

Среды, используемые Wireshark, грубо делятся на два типа: одна — это автономная среда, в которой компьютер напрямую подключен к сети, а другая — сетевая среда, в которой имеется множество приложений, то есть когда подключен коммутатор. .

В «автономной ситуации» Wireshark напрямую захватывает сетевой трафик локальной сетевой карты;

В «ситуации переключения» Wireshark получает сетевой трафик в локальной сети посредством зеркалирования портов, подмены ARP и т. д.

Зеркалирование портов: используйте интерфейс коммутатора для перенаправления сетевого трафика локальной сети на сетевую карту назначенного компьютера.

Подмена ARP: коммутатор пересылает данные на основе MAC-адреса и маскирует MAC-адреса других терминалов для получения сетевого трафика в локальной сети.

4. Установка программного обеспечения Wireshark

Путь загрузки программного обеспечения:

https://www.wireshark.org/

Выберите загрузку в соответствии с версией системы. После завершения загрузки следуйте инструкциям программного обеспечения и нажмите «Далее» для установки.

5. Пример перехвата пакетов Wireshark

Во-первых, давайте представим пример использования инструмента Wireshark для захвата операции команды ping. Вы можете начать работу и испытать конкретный процесс захвата пакетов.

1. Откройте Wireshark. Основной интерфейс выглядит следующим образом:

2. Выберите в строке меню захватывать -> Опции, проверьте сетевую карту WLAN. Здесь вам нужно выбрать в зависимости от использования сетевой карты каждого компьютера. Простой способ — посмотреть сетевую карту, соответствующую используемому IP. Нажмите «Пуск», чтобы начать захват пакетов.

3. После запуска Wireshark Wireshark находится в состоянии захвата пакетов.

4. Выполните операции, требующие перехвата пакетов, например проверку связи с www.baidu.com в окне cmd.

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

6. Чтобы другие бесполезные пакеты данных не влияли на анализ, вы можете отфильтровать список пакетов данных, установив условия фильтрации в столбце фильтра. Результаты следующие. Примечание: ip.addr == 183.232.231.172 и icmp означает, что отображаются только пакеты данных протокола ICPM и IP-адрес хоста 183.232.231.172. Примечание. Имя протокола icmp должно быть написано строчными буквами.

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

6. Знакомство с интерфейсом захвата пакетов Wireshark

Основной интерфейс Wireshark состоит из 6 частей:

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

Примечание. Для различения разные протоколы в области списка пакетов данных используют разные цвета. Цветовая идентификация протокола расположена в строке меню. вид --> Правила окраски. Как показано ниже

WireShark в основном разделен на эти интерфейсы.

  1. Фильтр отображения

Используется для установки условий фильтрации списка пакетов. Путь меню: Анализ --> Display Filters。

  1. Панель списка пакетов (список пакетов)

Отображать пакеты, полученные захватывать,Каждый пакет содержит номер,Временная метка,Исходный адрес,адрес назначения,протокол,длина,и информация о пакете。другойпротокол Пакет данных используетдругойцветной дисплей。

  1. Панель сведений о пакете (сведения о пакете)

Выберите указанный пакет данных в списке пакетов данных, и вся подробная информация о пакете данных будет отображена в сведениях о пакете данных. Панель «Сведения о пакете» является наиболее важной и используется для просмотра каждого поля протокола. Информация для каждой строки

(1) Кадр: обзор кадров данных на физическом уровне.

(2) Ethernet II: информация заголовка кадра Ethernet уровня канала передачи данных.

(3) Интернет-протокол версии 4: информация заголовка IP-пакета уровня Интернета.

(4) Протокол управления передачей: информация заголовка сегмента данных транспортного уровня T, здесь TCP.

(5) Протокол передачи гипертекста: информация прикладного уровня, вот протокол HTTP.

Конкретное содержимое TCP-пакета

На рисунке ниже вы можете увидеть каждое поле в TCP-пакете, полученном Wireshark.

  1. Панель диссектора (область байтов пакета данных)

Исходное содержание сообщения.

7. Настройки фильтра Wireshark

Когда новички используют Wireshark, они получают большое количество избыточных списков пакетов, что затрудняет поиск той части пакетов, которую им необходимо перехватить. Инструмент Wireshark поставляется с двумя типами фильтров. Научившись использовать эти два фильтра, мы сможем быстро находить нужную информацию в большом объеме данных.

1. Фильтр захвата пакетов

Путь в строке меню для фильтра захватывать: захватывать --> захватывающий фильтр. Используется для настройки перед захватом пакетов.

Как его использовать? Настройки следующие.

ip хоста 183.232.231.172 означает только пакеты данных с IP хоста 183.232.231.172. Полученные результаты следующие:

  1. Показать фильтры

Фильтр отображения используется для установки условий фильтрации для фильтрации пакетов данных после захвата пакетов данных.

Обычно при захвате пакетов данных заданные условия являются относительно широкими или настройки отсутствуют, что приводит к большому количеству захваченных пакетов данных. Фильтры отображения используются для установки условной фильтрации для облегчения анализа.

В том же сценарии, что и выше, в режиме «Захватывать» не устанавливаются правила фильтрации захвата пакетов для непосредственного захвата всех пакетов данных через сетевую карту.

Список пакетов данных, полученных при выполнении команды ping www.baidu.com, выглядит следующим образом:

Судя по полученному выше списку пакетов данных, он содержит большое количество недопустимых данных. В это время вы можете извлечь аналитическую информацию, установив условия фильтра отображения. ip.addr == 183.232.231.172 и отфильтровать.

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

8. Правила для выражений фильтра Wireshark

  1. Синтаксис и примеры фильтров захвата пакетов

Тип фильтра захвата пакетов Тип (хост、net、port)、НаправлениеDir(src、dst)、протоколProto(ether、ip、tcp、udp、http、icmp、фтп и др.)、Логические операторы(&&и、|| или,! Нет)

(1) Фильтрация протоколов

Это относительно просто: просто введите имя протокола непосредственно в поле фильтра захвата пакетов.

tcp, отображает только список пакетов протокола TCP.

http, просматривать только список пакетов протокола HTTP

icmp, отображает только список пакетов протокола ICMP.

(2) IP-фильтрация

host 192.168.1.104

src host 192.168.1.104

dst host 192.168.1.104

(3) Фильтрация портов

port 80

src port 80

dst port 80

(4)Логические операторы&&и、|| или,! Нет

src host 192.168.1.104 &&dst port 80 Захват пакетов данных с адресом хоста 192.168.1.80 и портом назначения 80.

хост 192.168.1.104 || хост 192.168.1.102 перехватывает пакеты данных с хостом 192.168.1.104 или 192.168.1.102

! Broadcast не захватывает широковещательные пакеты

  1. Показать фильтры Грамматика и примеры

(1) Оператор сравнения

Операторы сравнения:

== равный,! = не равно、> больше, чем、< меньше, чем、>= больше, чемравный、<=меньше, чемравный

(2) Фильтрация протоколов

Это относительно просто: просто введите имя протокола прямо в поле «Фильтр». Примечание. Имя протокола необходимо вводить строчными буквами.

tcp, отображает только список пакетов протокола TCP.

http, просматривать только список пакетов протокола HTTP

icmp, отображает только список пакетов протокола ICMP.

(3) IP-фильтрация

ip.src ==112.53.42.42 отображает список пакетов с адресом источника 112.53.42.42.

ip.dst==112.53.42.42, отображает список пакетов с адресом назначения 112.53.42.42.

ip.addr == 112.53.42.42 Отображает список пакетов с IP-адресом источника или IP-адресом назначения 112.53.42.42.

(4) Фильтрация портов

tcp.port ==80 отображает список пакетов с портом исходного хоста или хоста назначения 80.

tcp.srcport == 80, отображает только список пакетов, у которых исходный порт хоста протокола TCP равен 80.

tcp.dstport == 80, отображает только список пакетов, порт назначения хоста протокола TCP которых равен 80.

(5) фильтрация режима http

http.request.method=="GET" отображает только метод HTTP GET.

(6) Логический оператор: и/или/нет.

При фильтрации нескольких комбинаций условий используйте и/или. Например, выражение для получения пакета ICMP с IP-адресом 192.168.0.104 имеет вид ip.addr == 192.168.0.104 и icmp

(7) Фильтрация по содержимому пакета данных.

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

После щелчка правой кнопкой мыши для выбора появится следующий интерфейс.

После выбора он отобразится в фильтре следующим образом

Последующие условные выражения вам необходимо заполнить самостоятельно. Таким образом, я хочу отфильтровать поток данных, содержащий содержимое «abcd» в пакете данных. Ключевое слово содержит, а полное условное выражение — данные, содержащие «abcd».

Видя это, у меня есть предварительное представление о Wireshak.

  1. Часто используемые требования к фильтрации отображения и соответствующие им выражения.

Уровень канала передачи данных:

Фильтровать пакеты с MAC-адресом 04:f9:38:ad:13:26

eth.src == 04:f9:38:ad:13:26

Фильтровать пакеты с исходным MAC-адресом 04:f9:38:ad:13:26----

eth.src == 04:f9:38:ad:13:26

Сетевой уровень:

Фильтровать пакеты с IP-адресом 192.168.1.1

ip.addr == 192.168.1.1

Фильтрация данных в сегменте сети 192.168.1.0

ip contains "192.168.1"

Транспортный уровень:

Фильтровать пакеты для порта 80

tcp.port == 80

Фильтровать пакеты между портом 12345 и портом 80.

tcp.port == 12345 &&tcp.port == 80

Фильтровать пакеты с порта 12345 на порт 80

tcp.srcport == 12345 &&tcp.dstport == 80

Прикладной уровень:

Особое примечание: http.request в http представляет первую строку в заголовке запроса (например, GET index.jsp HTTP/1.1), http.response представляет первую строку в заголовке ответа (например, HTTP/1.1 200 OK) и другие заголовки: используйте формат http.header_name.

Фильтровать http-пакеты, содержащие .php в URL-адресе

http.request.uri contains ".php"

Фильтровать http-пакеты, содержащие имя пользователя

http contains "username"

9. Захват пакетов Wireshark и анализ трехэтапного рукопожатия TCP

  1. Процесс установления TCP-соединения с трехсторонним рукопожатием

Шаг 1: Клиент отправляет пакет данных с флагами SYN=1 и ACK=0 на сервер, запрашивая соединение. Это первое рукопожатие;

Шаг 2. Если сервер получает запрос и разрешает соединение, он отправит пакет данных с флагами SYN=1 и ACK=1 на отправляющую сторону, сообщая ей, что связь возможна, и просит клиента отправить пакет подтверждения. . Это второе рукопожатие;

Шаг 3: Сервер отправляет пакет данных с SYN=0 и ACK=1 клиенту, чтобы сообщить ему, что соединение подтверждено. Это третье рукопожатие. TCP-соединение устанавливается и начинается связь.

  1. Захват пакетов Wireshark для получения доступа к указанным пакетам данных сервера

Шаг 1. Запустите Wireshark для перехвата пакетов, откройте браузер и введите www.baidu.com.

Шаг 2. Используйте команду ping www.baidu.com, чтобы получить IP-адрес.

Шаг 3. Введите условия фильтрации, чтобы получить список пакетов для анализа. ip.addr == 183.232.231.172.

На картинке видно, что Wireshark перехватил три пакета данных трехстороннего рукопожатия. Четвертый пакет предназначен для HTTPS и показывает, что HTTPS использует TCP для установления соединения.

Первый пакет рукопожатия

Клиент отправляет TCP с битом флага SYN и порядковым номером 0, который представляет запрос клиента на установление соединения.

Ключевые атрибуты пакета данных следующие:

SYN: бит флага, указывающий на запрос на установление соединения.

Seq = 0: начальное значение соединения равно 0, а относительный порядковый номер пакета данных начинается с 0, что указывает на то, что данные еще не были отправлены.

Ack =0: начальное значение установления соединения равно 0, и количество полученных пакетов указывает на то, что в данный момент данные не получены.

Второй пакет рукопожатия

Сервер отправляет обратно пакет подтверждения с битами флага SYN, ACK. Добавьте в поле «Номер подтверждения» значение 1, то есть 0+1=1.

Ключевые атрибуты пакета данных следующие:

Seq = 0: начальное значение установления равно 0, что указывает на то, что данные еще не были отправлены.

Ack = 1: указывает количество битов данных, успешно полученных текущей стороной. Хотя клиент не отправляет действительных данных, номер подтверждения все равно увеличивается на 1, поскольку он содержит флаг SYN или FIN. (Это не повлияет на количество действительных данных, поскольку пакеты, содержащие флаг SYN или FIN, не несут действительных данных)

Третий пакет рукопожатия

Клиент снова отправляет пакет подтверждения (ACK) с флагом SYN, установленным в 0, и флагом ACK, установленным в 1. Добавьте 1 в поле порядкового номера ACK, отправленного сервером, поместите его в поле подтверждения и отправьте другой стороне, а в поле Флага напишите ACK +1:

Ключевые атрибуты пакета данных следующие:

ACK: бит флага, указывающий, что запись получена.

Seq = 1: указывает, что в данный момент отправлено 1 данные.

Ack = 1: указывает количество битов данных, успешно полученных текущей стороной. Хотя сервер не отправляет действительных данных, номер подтверждения все равно увеличивается на 1, поскольку он содержит флаг SYN или FIN (это не влияет на счетчик). действительных данных, поскольку пакеты, содержащие флаг SYN или FIN, не несут действительных данных).

Таким образом, передается трехстороннее рукопожатие TCP и устанавливается соединение. Начать взаимодействие с данными

10. Общие операции анализа Wireshark

Настройте формат отображения временной метки в списке пакетов. Метод регулировки такой. вид -->Формат отображения времени --> Дата и время. Скорректированный формат выглядит следующим образом:

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

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose