Wireshark网络抓包分析使用详解

序言

之前学计网还有前几天备考华为 ICT 网络赛道时都有了解认识 Wireshark,但一直没怎么专门去用过,也没去系统学习过,就想趁着备考的网络相关知识还没忘光,先来系统学下整理点笔记~

什么是抓包?抓包就是将网络传输发送与接收的数据包进行截获、分析、重发、编辑、转存等操作,也用来检查网络安全。在我们做接口测试的时候,经常需要验证发送的消息是否正确,或者在出现问题的时候,查看手机客户端发送给 server 端的包内容是否正确,就需要用到抓包工具。而工程师和程序常用的抓包工具有哪些呢?

Sniffmaster 是在 Windows ,mac和linux上运行的程序,专门用来捕获 HTTP , HTTPS和tcp,udp 的;Wireshark 能获取各类网络协议包,但是不能解密所以 Wireshark 看不懂 HTTPS 中的内容,可以运行在 Windows、Linux 和 Mac OS 上;Linux 还有个轻量级的命令行抓包工具是 tcpdump 。本人学过一点 Linux 但没了解 mac OS 这边,因此本文是主要重点分析 Wireshark,然后简单介绍 Fiddler 和 tcpdump 的使用。

学习之前最好先了解计网的网络协议和分包 等核心知识,便于理解:

一、Wireshark

1、Wireshark 认识

(1)基本信息

Wireshark 是目前最流行、功能强大的网络协议图形化分析工具 ,用于捕获和分析网络数据包,以深入了解网络流量,广泛应用于网络故障诊断、安全分析、软件开发和学习网络协议等场景。

  • 开发者 :由 Gerald Combs 开发,现由社区和 Wireshark 基金会维护。
  • 开源 :Wireshark 是免费且开源的软件,支持多种平台(Windows、macOS、Linux 等)。
  • 官网 :https://www.wireshark.org/
  • 支持的协议 :Wireshark 支持数百种网络协议(如 HTTP、TCP、UDP、DNS、SSL/TLS 等),并不断更新支持新协议。

(2)Wireshark 的功能

  • 数据包捕获 :捕获通过网络接口传输的数据包或实时流量,支持有线、无线、蓝牙等多种类型的网络。
  • 协议解码 :提供对网络协议的解码和详细分析。
  • 数据包分析 :允许查看数据包的各层内容(链路层、网络层、传输层和应用层)并支持检测和分析网络异常。
  • 数据过滤 :在捕获数据时仅抓取特定条件的流量;在已捕获的数据中筛选感兴趣的内容。
  • 图形化展示 :提供网络流量统计图、I/O 图、协议分布图等,帮助用户直观分析流量。
  • 数据导出与共享 :数据捕获可以保存为多种格式,如 .pcap、.csv 等,可以被其他网络分析工具读取。

(3)Wireshark 抓包捕获原理

Wireshark 的抓包功能依赖底层的数据链路层 访问权限,使用WinPCAP/Npcap 作为接口直接与网卡进行数据报文交换**。使用的环境大致分为两种,一种是电脑直连网络的单机环境,另外一种就是应用比较多的即连接交换机的网络环境。

单机情况 :Wireshark 直接抓取本机网卡的网络流量,默认正常工作模式,适用于分析本地通信;

交换机情况 :Wireshark 通过端口镜像ARP 欺骗 等方式获取局域网中的网络流量。

  • 端口镜像:利用交换机的接口作为镜像端口 SPAN,将局域网指定接口或 VLAN 的流量复制到镜像端口,Wireshark 运行在连接镜像端口的电脑上,从而可以捕获这里的数据流量(无法抓取加密流量)。
  • ARP 欺骗:使用工具(如 EttercapArpspoof )发送伪造的 ARP 响应,欺骗局域网中的目标设备将其流量发送到攻击者的设备,Wireshark 伪装成中间人(MITM)捕获流量后再将数据转发给真正的网关。

Wireshark 的捕获机制是监听并复制数据包流经指定接口的数据 供分析使用。

  • 监听指定接口的数据流 :Wireshark 会监控用户选择的网络接口(以太网、Wi-Fi 等)上的数据流。
  • 复制数据包到本地分析 :Wireshark 不会对网络上的实际数据包产生影响,而是将通过接口捕获到的数据包复制到本地内存中,并将其按照时间顺序记录。捕获到的数据包会被存储在内存或临时文件中,并可保存为 .pcap 文件供后续分析,若选不保存则是删除本地复制的数据包无法恢复。

(4)Wireshark 捕获主要模式(决定网卡能够接收到的数据包范围

正常模式 (Normal Mode):网卡只会捕获发送给自身的特定数据包如单播、广播和多播数据包,适合抓取与主机直接相关的流量排查本地问题

混杂模式 (Promiscuous Mode):网卡会捕获经过网络接口的所有数据包 ,可用于分析局域网内的整体通信流量 ,能查看其他主机的通信。

监视模式 (Monitor Mode):主要用于无线网络分析 802.11 协议,能够截获未与网卡关联的所有无线数据帧 (包括管理帧、控制帧和数据帧),用于调试 Wi-Fi 网络问题并测试无线网络的安全性。

(5)Wireshark 的特点

  • 跨平台支持 :支持 Windows、macOS、Linux 等操作系统。
  • 协议支持广泛 :Wireshark 支持从常见的 HTTP、DNS 到专有的工业协议。
  • 用户友好界面 :提供直观的 GUI 和强大的过滤器系统。
  • 可扩展性 :支持通过 Lua 编写插件,扩展 Wireshark 的功能。
  • 实时捕获与离线分析 :既可实时捕获流量,也可分析离线的捕获文件。

(6)安装下载

官网下载地址:Wireshark · Go Deep

下载安装 Windows x64 版本

下载完成后接着一路按照软件提示 Next 安装即可。

2、Wireshark 界面详解(Windows)

(1)Wireshark 界面认识

打开 Wireshark,主界面如下:

(2)接口列表详细分析

选择菜单栏上的“捕获”点击“选项”可以查看所有可用接口详细配置信息选项:

Wireshark 显示的捕获接口信息主要包括以下列

  • 接口名称 :每个网络接口的名称(如“本地连接 *数字”)。
  • 流量 :实时显示当前接口上的流量活动(波动的流量曲线)。
  • 链路层 :接口使用的链路层协议类型(如 Ethernet)。
  • 混杂模式 :是否启用混杂模式以捕获接口上所有的网络流量。
  • 捕获长度缓冲区监控模式 :Wireshark 捕获的相关设置和当前状态。

Wireshark 显示的各类接口的详细介绍

本地连接 数字* ”接口通常是 Windows 系统中虚拟接口或未激活的网络接口 ,可以通过设备管理器禁用。

vEthernet (WSL) ”是 WSL 创建的虚拟网络接口,用于连接 WSL 环境与主机网络并监控 WSL 应用产生的流量,IP 地址为 172.17.128.1,这通常是 WSL 的虚拟网络子网范围。

WLAN ”接口是无线网络适配器(Wi-Fi 网卡),IP 地址 192.168.2.103,用于捕获 Wi-Fi 网络中的流量。

以太网2 ”可能是本机的物理有线网卡(Ethernet),IP 地址 192.168.56.1,这通常是虚拟化软件(如 VirtualBox、VMware)创建的虚拟网络适配器,常用于虚拟机通信。

vEthernet (Default Switch) ”是 Hyper-V 虚拟化环境创建的默认交换机接口,IP 地址 172.19.176.1,通常是 Hyper-V 虚拟网络的默认子网,用于捕获 Hyper-V 虚拟机与主机或网络之间的通信流量。

Adapter for loopback traffic capture ”是环回接口,IP 地址 127.0.0.1,用于捕获本地通信流量。

Raw IP ”表示直接捕获 IP 层流量,而不依赖具体的链路层协议。

这些接口主要用于远程捕获或特定环境下的网络数据分析:

Cisco Remote Capture ”接口用于与 Cisco 设备(如路由器或交换机) 建立远程连接,从设备中抓取网络数据包,可以分析其流量或调试网络配置问题。要求有管理员权限配置 Cisco 设备并启用远程数据捕获功能。

Event Tracing for Windows (ETW) Reader ”接口可以捕获与 Windows 内核相关的网络流量或事件信息 ,利用 Windows 系统的事件跟踪机制提供对系统内部网络事件的捕获能力。

Random Packet Generator ”是一个模拟接口,用于生成随机的网络数据包,不涉及实际的网络通信 ,仅用于测试或验证数据包解码功能,常用于开发者或协议分析。

SSH Remote Capture ”通过 SSH 协议 连接远程设备,从中捕获数据包。

UDP Listener Remote Capture ”接口用于监听来自远程设备通过 UDP 协议发送的流量

Wi-Fi Remote Capture ”接口用于远程捕获 Wi-Fi 网络 流量,用于无线网络性能分析或调试。

(3)双击“WLAN”后进入如下页面开始抓包:

图示以 WLAN 抓 TCP 数据包为例

左上角红框点击即停止抓包,最左上角“文件”选择“保存”即可以保存抓包的数据,这是最基础的抓包。

从上图可知 Wireshark 操作的主界面包含 6 个部分:

  • 菜单栏:用于调试、配置
  • 工具栏:常用功能的快捷方式
  • 过滤栏:指定过滤条件过滤数据包,如上图过滤位置选了 tcp 筛选数据包
  • 数据包列表:核心区域,每一行就是一个数据包
  • 数据包详情:数据包的详细数据
  • 数据包字节:数据包对应的十六进制字节流和 ASCII 码

(4)菜单栏与工具栏与过滤栏

菜单栏位于主界面的顶部,提供全面的调试和配置选项 ,包括捕获、分析、统计和导出。

  • File(文件): 打开/保存捕获文件、导出数据包或退出程序。
  • Edit(编辑): 配置首选项、搜索数据包或清除屏幕。
  • View(视图): 定制界面布局,例如显示/隐藏工具栏、过滤栏等。
  • Capture(捕获): 设置捕获参数(选择网络接口、过滤规则等),并启动/停止捕获。
  • Analyze(分析): 应用显示过滤器、启用协议解析器或重新组装流。
  • Statistics(统计): 查看网络统计(如 IO 图表、协议层统计、端点分析等)。
  • Telephony(电话): 分析 VoIP 和 SIP 协议的流量(如 RTP 流、呼叫分析)。
  • Help(帮助): 查看帮助文档、协议参考以及关于 Wireshark 的信息。

工具栏位于菜单栏下方,提供一些常用功能的快捷方式 ,方便用户快速操作。

  • Start(开始捕获): 开始实时捕获网络流量。
  • Stop(停止捕获): 停止当前捕获。
  • Open(打开): 加载保存的捕获文件。
  • Save(保存): 将当前捕获会话保存为 .pcap 或其他格式。
  • 捕获接口选择: 选择要监控的网络接口。
  • 过滤: 应用过滤条件快速缩小分析范围。
  • 流重组: 快速查看 TCP 或 UDP 的上下文流量。
  • 其他: 包括统计功能、清除显示、显示或隐藏面板等。

过滤栏位于工具栏下方,用于设置过滤条件进行数据包列表过滤 ,支持多种形式过滤并实时显示过滤器是否有效(输入框变为绿色表示有效,红色表示无效)。

  • 基础协议 : 如 tcp、udp、icmp。
  • 条件组合 : 使用逻辑运算符如 and、or、not。
  • 字段过滤 : 如 ip.src == 192.168.1.1(过滤源 IP 是 192.168.1.1 的数据包)。

(5)数据包列表 Packet List Pane

按时间顺序排列显示捕获到的数据包 ,每一行代表一个数据包,每个数据包包含编号、时间戳、源地址、目标地址、协议、长度以及数据包信息。不同协议的数据包使用了不同的颜色区分显示,可以在菜单栏“视图”的“着色规则”里查看。

  • 编号(No.): 数据包的序号,从 1 开始。
  • 时间(Time): 数据包捕获的时间戳(相对时间或绝对时间,用户可配置)。
  • 源地址(Source): 数据包的源 IP 地址或主机名。
  • 目的地址(Destination): 数据包的目的 IP 地址或主机名。
  • 协议(Protocol): 数据包使用的协议(如 TCP、UDP、HTTP)。
  • 长度(Length): 数据包的大小(以字节为单位)。
  • 信息(Info): 数据包的简要信息(如 HTTP 请求类型、TCP 标志等)。

(6)数据包详情 Packet Details Pane

位于数据包列表下方,用于显示当前选中的数据包的详细协议层次结构解析信息

此过滤的是 tcp 所以最高到传输层

  • Frame(帧): 显示数据包的物理层基本信息(捕获时间、长度等)。
  • Ethernet(以太网): 解析数据链路层以太网帧头部信息(MAC 地址、帧类型)。
  • IP(网络层): 显示 IP 地址、TTL、标志位等。
  • TCP/UDP(传输层): 显示端口号、序列号等。
  • 应用层协议: 如 HTTP、DNS、TLS 的具体内容。

(7)数据包字节 Dissector Pane

位于界面的最下方或侧右边,显示当前选中数据包的原始数据字节流 ,可以检查协议字段的实际值。

字节流点击十六进制部分会和对应的ASCII部分的内容高亮

  • 十六进制视图: 显示数据包的二进制内容,每个字节以十六进制表示。
  • ASCII 视图: 显示数据包内容的 ASCII 表示(若不可见则显示 .)。
  • 实时定位: 点击数据包详情中的某字段,字节流中会高亮对应的内容。

3、常用基础界面操作

(1)设置显示列

数据包列表中有一些默认显示的列,我们可以添加、删除、修改显示的列。

想要在数据包列表中显示某一个字段,可以在数据包详情右键选中这个数据字段“添加为列”即可。

按 Ctrl + Shift + I 也可以实现同样的效果

  • 隐藏字段列 :在显示列的任意位置右键取消列的高亮勾选即可。
  • 删除字段列 :在指定的列名位置右键点击最下方的“Remove this Column”。

(2)设置时间

默认精确到微秒,打开工具栏的“视图”选“时间显示格式”即可设置不同格式

(3)标记和导出数据包

对于某些比较重要的数据包,可以选中右键选择最上面的“标记/取消标记”设置成高亮显示。

按 Ctrl + M 也可以实现同样的效果,按两次可以取消标记

保存全部数据包:菜单栏的“文件”和工具栏的“保存捕获文件”都可以默认保存所有已经抓取的数据包。

导出一或多个数据包:菜单栏的“文件”选择“导出特定分组”,仅选中分组是只保存选中的数据包;仅已标记分组是在当前捕获数据包中有标记时可用与多个选择,范围则也是可以多个选择。

(4)进一步分析数据包

除了单机数据包列表在数据包详情查看完整信息外,我们还可以右键列表对应的数据包选择“追踪流”查看该数据流的详细内容

一组完整的请求-响应对的数据包信息

4、过滤操作详解

Wireshark 提供了两个过滤器:抓包过滤器和显示过滤器,两者过滤思路不同。

(1)抓包过滤器(Capture Filter)

通过设置抓包过滤器,Wireshark 仅抓取符合条件的数据包 ,其他的会被直接丢弃,常用于高负载网络流量场景下减少数据存储压力和后续分析时间。

  • 作用时间 :在数据包进入捕获阶段时过滤。
  • 性能优势 :通过减少需要捕获的数据包数量,降低了存储和处理的负担。
  • 基于BPF 语法:简单但功能有限。

BPF 有四个元素可以自由组合:

  • 类型 Type:host、net、port、portrange、ether 等。
  • 方向 Dir:src、dst、src and dst、src or dst。
  • 协议 Proto:tcp、udp、http、icmp、arp、broadcast 和 multicast 等。
  • 逻辑运算符:and、or、not、!=、>、<、= 等。

BPF 语法的过滤器表达式:

[protocol] [direction] [host/port/net] [value]host 192.168.1.1         // 只抓取与 IP 地址 192.168.1.1 相关的所有数据包(包括源和目标)
tcp dst port 80          // 只抓取目标端口是 TCP 端口 80(HTTP)的数据包
!port 80               // 不抓取端口为 80 的数据包
!brocast               // 不抓取广播包
net 192.168.0.0/16       // 只抓取属于 192.168.0.0/16 子网的所有流量
tcp port 443 and src net 10.1.0.0/24  // 只抓取源网络为 10.1.0.0/24 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/39382.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安装和部署Tomcat并在idea创建web文件

一、背景 实验任务为安装Tomcat并创建web文件 为提高安装效率并且通俗易懂&#xff0c;免得大量文字浪费时间&#xff0c;这里我们采用图片加文字的方式来给大家讲解这个安装教程。 二、安装过程 首先第一步一定要注意你是否下载了JDK&#xff0c;如果你是像我一样下载一个…

一站式电脑工具箱,功能全面且实用

小明工具箱是一款集成了系统设置、维护工具、实用工具、图像处理等四大类工具的电脑工具箱&#xff0c;涵盖了上百种实用工具&#xff0c;能够满足用户在文件管理、文本处理、系统优化、图像处理等多方面的需求。 初次使用&#xff0c;需双击软件&#xff0c;便会自动将工具解压…

NO.55十六届蓝桥杯备战|排序|插入|选择|冒泡|堆|快速|归并(C++)

插⼊排序 插⼊排序(Insertion Sort)类似于玩扑克牌插牌过程&#xff0c;每次将⼀个待排序的元素按照其关键字⼤⼩插⼊到前⾯已排好序的序列中&#xff0c;按照该种⽅式将所有元素全部插⼊完成即可 #include <iostream> using namespace std; const int N 1e5 10; …

OpenGL入门

一、环境搭建 ‌库依赖安装‌ 需要安装GLFW&#xff08;窗口管理&#xff09;和GLAD&#xff08;函数指针加载库&#xff09;。在Windows下推荐使用Visual Studio的vcpkg包管理工具进行安装&#xff0c;Linux下通过apt-get安装相关依赖‌。 ‌窗口初始化‌ 使用GLFW创建窗口并…

JVM(基础篇)

一.初识JVM 1.什么是JVM JVM全称Java Virtyal Machine&#xff0c;中文译名 Java虚拟机 。JVM本质上是一个运行在计算机上的程序&#xff0c;他的职责是运行Java字节码文件(将字节码解释成机器码)。 2.JVM的功能 解释和运行&#xff1a;对字节码文件中的指令号&#xff0c;实时…

VMware安装ubuntu22.04.5 server

下载Ubuntu镜像 https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/22.04.5/ 安装系统 打开vmware 点击创建新的虚拟机 选择自定义 点击下一步 选择稍后安装操作系统&#xff0c;点击下一步 选择Linux系统&#xff0c;选择ubuntu64&#xff0c;点击下一步 选择安装位置&…

Docker容器之Dockerfile

用来构建镜像的文件。是指就是命令&#xff0c;参数&#xff0c;脚本。 指令合集以及说明 构建镜像图解: 实战测试&#xff1a; 构建自己的ubuntu&#xff1a; FROM ubuntu MAINTAINER liux ENV MYPATH /usr/local WORKDIR $MYPATH RUN apt-get update RUN apt install net-…

STM32G030移植RT-Thread

移植流程 移植前需要安装Keil.STM32G0xx_DFP.1.2.0.pack组件&#xff0c;大致的移植过程&#xff1a; CubeMX配置RT-Thread组件配置工程模板配置 参考例程配置&#xff1a;拷贝仓库原有的stm32g070-st-nucleo工程&#xff0c;然后另起一个名字&#xff0c;目录结构如下 完整…

【网络】网关

【网络】网关 网关 是计算机网络中用于连接两个不同网络的设备或服务器&#xff0c;它充当着“翻译器”和“转发器”的角色&#xff0c;将数据包从一个网络传递到另一个网络&#xff0c;并在必要时进行协议转换和数据重包装。 主要功能 数据转发&#xff1a;当本地网络设备发…

用JS+Promise实现简单消息队列

一、什么是消息队列 消息队列是一种用于在软件系统之间传递消息的技术。它常被用于解耦不同组件或模块之间的通信&#xff0c;减少系统中各个部分之间的直接依赖关系。消息队列可以实现异步通信&#xff0c;发送方将消息发送到队列中&#xff0c;接收方从队列中获取消息并进行处…

【Python爬虫】使用python脚本拉取汽车网站品牌数据

示例代码说明&#xff1a; 在汽车之家网站拉取当月排行榜中汽车品牌、销量和价格信息&#xff0c;存为csv文档输出&#xff0c;使用正则表达式获取网页内容 import re import pandas as pd import requests# 汽车之家车型列表页URL url https://cars.app.autohome.com.cn/ca…

批量修改 PPT 文档中主题、编辑时长、来源等元数据信息

每一个 PPT 文档被创建之后&#xff0c;都会包含一些元数据信息。这些元数据信息记录着文件的作者、创建时间、修改时间、打印时间等信息。这些信息默认都是自动生成的&#xff0c;如果我们想要对这些元数据进行修改&#xff0c;当然也是可以的。今天就给大家介绍一下如何批量修…

丐版插入selectdb模拟

为了模拟不断插入数据到库里&#xff0c;写个简单的循环脚本 #!/bin/bash #计算时差 function getTiming(){start$1end$2start_secho $start | cut -d . -f 1start_nsecho $start | cut -d . -f 2end_secho $end | cut -d . -f 1end_nsecho $end | cut -d . -f 2time_micro$((…

Off-Road-Freespace-Detection配置pytorch2.0.0

一、概述 在github上进行开源代码搜索&#xff0c;发现了Off-Road-Freespace-Detection&#xff08;链接如下所示&#xff09;。这是对越野环境可通行区域的检测&#xff0c;在经过测试之后&#xff0c;发现对自己有益。 GitHub - chaytonmin/Off-Road-Freespace-Detection: O…

常见中间件漏洞之四:Apache

1. CVE-2021-41773 Apache HTTP Server 路径穿越漏洞 漏洞简介 该漏洞是由于Apache HTTP Server 2.4.49版本存在⽬录穿越漏洞,在路径穿越⽬录<Directory/>Require all granted</Directory>允许被访问的的情况下&#xff08;默认开启&#xff09;&#xff0c;攻击…

Pytorch中Tensorboard的学习

1、Tensorboard介绍 TensorBoard 是 TensorFlow 开发的一个可视化工具&#xff0c;用于帮助用户理解和调试机器学习模型的训练过程。尽管它最初是为 TensorFlow 设计的&#xff0c;但通过 PyTorch 的 torch.utils.tensorboard 模块&#xff0c;PyTorch 用户也可以方便地使用 Te…

刷机维修进阶教程-----adb禁用错了系统app导致无法开机 如何保数据无损恢复机型

在刷机维修过程中 。我们会遇到一些由于客户使用adb指令来禁用手机app而导致手机无法开机进入系统的故障机型。通常此类问题机型有好几种解决方法。但如果客户需要保数据来恢复机型。其实操作也是很简单的.还有类似误删除应用导致不开机等等如何保数据。 通过博文了解💝💝�…

哪吒汽车:一边熬夜蹦迪,一边找药投医

两年前&#xff0c;威马CEO沈晖发了个短视频&#xff0c;内容是“活下去&#xff0c;像牲口一样活下去”。 如今最能体会沈晖当时心情的&#xff0c;估计就是方运舟了。 作为哪吒汽车创始人兼董事长&#xff0c;他连续多次被限高&#xff0c;为了让哪吒汽车活下去&#xff0c…

2025 cs144 Lab Checkpoint 1小白超详细版

cs144官网&#xff1a;https://cs144.github.io/ 我的github&#xff1a;https://github.com/Albert-tru/cs144-2025 文章目录 1 手动发送internet数据报协议号5、7&#xff1f;思路&#xff1f; 2 实现一个Reassembler类2.1 几个帮助理解代码的Q&AQ1&#xff1a;insert的参…

使用 OpenCV 拼接进行图像处理对比:以形态学操作为例

图像处理在计算机视觉中起着至关重要的作用&#xff0c;而 OpenCV 作为一个强大的图像处理库&#xff0c;提供了丰富的函数来实现各类图像处理任务。形态学操作&#xff08;Morphological Operations&#xff09;是其中常用的技术&#xff0c;尤其适用于二值图像的处理。常见的…