wireshark:捕获实时网络数据

引言

捕获实时网络数据是wireshark的主要功能之一。

wireshark捕获引擎提供如下功能:

  • 从不同类型的网络硬件(比如以太网)捕获
  • 同时从多个网络接口捕获
  • 在不同的触发器上停止捕获,例如捕获的数据量、运行时间或数据包数量。
  • 在wireshark捕获时同时显示解码包
  • 过滤数据包、减少要捕获的数据量
  • 在进行长期捕获时将包保存在多个文件中,可以选择在固定数量的文件中进行旋转(一个“ringbuffer”)。

欢迎屏幕的“捕获”部分

当您打开Wireshark而没有开始捕获或打开捕获文件时,它将显示“欢迎屏幕”,其中列出了最近打开的捕获文件和可用的捕获接口。每个接口的网络活动将显示在接口名称旁边的闪烁线中。可以选择多个接口并同时从中进行捕获。

在这里插入图片描述
(1)某些接口允许或要求在捕获前进行配置,这个时候可以显示下面这个图表。
在这里插入图片描述
(2)将鼠标悬停在接口上会显示任何相关的IPv4和IPv6地址以及捕获筛选器

在这里插入图片描述
(3)wireshark不仅限于网络接口:在大多数系统上,你还可以捕获USB、蓝牙和其他类型的数据包

“捕获选项”对话框

选择【捕获–》选项】
在这里插入图片描述
将会跳出一个“捕获选项”对话\

输入页面

在这里插入图片描述

  • 接口:接口名称
  • Traffic(交通):显示网络活动随时间变化的迷你图
  • Link-layer Header(链接层头):
    • 此接口捕获的数据包类型
    • 在某些情况下,可以更改此类型
  • 混杂:
    • 允许在捕获时将此接口置于混杂模式
    • 注意,另一个应用程序可能会覆盖此设置
  • 捕获长度(B):
    • 快照长度,或每个包要捕获的字节数。
    • 如果需要(例如出于性能或隐私考虑),可以设置显式长度。
  • 缓冲区(MB):
    • 为捕获数据包而保留的内核缓冲区的大小
    • 你可以根据需要增加或者减少此值,但是默认值通常就足够了
  • 监控模式:
    • 此时,可以捕获完整的原始802.11报头(是否支持取决于接口类型、硬件、驱动程序和操作系统)
    • 请注意,启用此功能可能会断开您与无线网络的连接。
  • 捕获过滤器:
    • 应用于此界面的捕获过滤器
    • 你可以通过双击该过滤器来编辑它

将鼠标悬停在某个接口上或将其展开将显示任何关联的IPv4和IPv6地址。

如果“Enable promiscuous mode on all interfaces”(在所有接口上启用混杂模式),则上述各个混杂模式设置将被覆盖

“Capture filter for selected interfaces”(为所选接口捕获过滤器)可以用于同时为多个接口设置过滤器

“Manage Interface”(管理接口):这里可以定义管道、扫描或者隐藏本地接口,或者添加远程接口
在这里插入图片描述
“Compile BPFs”(编译选定的BPF):

  • 显示为捕获过滤器编译的字节码。这有助于更好的理解你创建的捕获过滤器
  • 在Linux上,通过执行以下操作打开BPF即时编译,可以加快BPF的执行速度:echo 1 >/proc/sys/net/core/bpf_jit_enable

输出页面

在这里插入图片描述

  • Capture to a permanent file(捕获到永久文件):
    • 文件 :
      • 用于指定捕获文件的文件名
      • 默认情况下,此字段为空。如果为空,则捕获数据将存储在临时文件中
    • 输出格式:
      • 设置捕获文件的格式。pcapng是默认值
  • Create a new file automatically…​(自动创建新文件…)
    • 设置切换新捕获文件的条件。可以根据以下条件创建新的捕获文件:
      • 捕获文件中的数据包数。
      • 捕获文件的大小
      • 捕获文件的持续时间
      • 墙上的时钟时间
  • Use a ring buffer with(使用环形缓冲区)
    • 仅限于多个文件
    • 用给定数量的文件组成捕获文件的环形缓冲区

选项页面

在这里插入图片描述

  • Display Options(显示选项)

    • Update list of packets in real-time(实时更新数据包列表)
      • 如果不启动此功能,则wireshark在停止捕获前不会显示任何数据包
      • 选择此选项后,wireshark将在单独的进程中不会并将捕获提供给显示进程
    • Automatically scroll during live capture(实时捕获期间自动滚动)
      • 当新的数据包进来时,滚动数据包列表窗格,这样你就可以一直看到最近的数据包
      • 如果不选择,wireshark会将新的数据包添加到数据包列表中,但不滚动数据包列表窗格
      • 如果“实时更新数据包列表”被禁用,此选项将灰显。
    • Show capture information during capture(捕获期间显示捕获信息)
      • 这个还没有用过,不理解
  • Name Resolution(名称解析)

    • Resolve MAC addresses(解析MAC名称):将MAC地址转换为名称
    • Resolve network names(解析网络名称):将网络地址转换为名称
    • Resolve transport names(解析传输名称):解析传输名称(端口号)
  • Stop capture automatically after…​(在以下情况下可以停止捕获:)

    • 捕获文件中的数据包数。
    • 捕获文件的数目
    • 捕获文件大小
    • 捕获文件持续时间

“管理接口”对话框

本地接口页面

在这里插入图片描述

  • 显示:是否在欢迎页面和“捕获选项”对话框中显示或者影藏此接口
  • 易记名称:用户可读的接口名称
  • 接口名称:接口的设备名称
  • 注释:可用于为接口添加描述性注释

管道页面

  • “管道”选项卡允许您从命名管道进行捕获。
  • 要成功添加管道,必须已创建其关联的命名管道。
  • 单击+并键入管道的名称,包括其路径。或者,【浏览】可用于定位管道
  • 要从接口列表中删除管道,请选择该管道并按 - .

在这里插入图片描述

远程接口页面

在Microsoft Windows上,“远程接口”选项卡允许你从另一台计算机上的接口进行捕获。在wireshark连接到目标平台之前,远程数据包捕获协议服务必须首先在目标平台上运行

在Linux或Unix上,您可以通过SSH隧道进行捕获(而且这样做更安全)。
在这里插入图片描述
要添加新的远程捕获接口,请单击+并指定以下内容:

  • 主机:
    • 远程数据包捕获协议服务正在侦听的目标平台的IP地址或主机名。
    • 下拉列表包含以前成功联系过的主机。
    • 可以通过从下拉列表中选择“清除列表”清空该列表。
  • 端口:
    • 设置远程数据包捕获协议服务正在侦听的端口号。
    • 保留为空将使用默认端口(2002)
    • 注意:确保您可以从外部访问目标平台上的端口2002。这是远程数据包捕获协议服务使用的默认端口。
  • 认证:
    • 无认证:如果启动远程捕获不需要进行身份验证,请选择此选项
    • 用于指定连接到远程数据包捕获协议服务所需的用户名和密码。
      在这里插入图片描述
      要从列表中删除主机(包括其所有接口),请选择它并单击-按钮

“Compile BPFs”(编译选定的BPF)对话框

在这里插入图片描述
在左侧的列表中列出了接口名称。右侧显示了为所选接口编译筛选器的结果。

捕获文件和文件格式

在捕获底层libpcap时,捕获引擎将从网卡获取包,并将包数据保存在内存缓冲区中。这些数据由wireshark读取并保存到一个捕获文件中

默认情况下,wireshark会将数据报保存在一个临时文件中。你可以告诉wireshark保存到一个永久的文件中,并在给定的时间或者捕获了给定数量的包后切换到另一个不同的文件。这些选项在“捕获选项”对话框的“输出”选项卡中控制
在这里插入图片描述
注意:处理大文件(几百MB)可能相当慢。如果你想长期捕获或者从高流量捕获,请考虑使用“多个文件”选项。这将把捕获的数据包分散到几个更小的文件上,这样可以使得工作更愉快。

使用“多个文件”选项可能会剪切上下文相关的信息。wireshark保留已经加载报数据的上下文信息,因此它可以报告上下文相关的问题(比如流错误),并保留有关上下文相关协议的信息(比如,在建立阶段交换数据,仅在以后的数据包中引用)。由于它只为加载的文件保留此信息,因此使用多个文件模式之一可能会切断这些上下文

文件“Create a new file…​”“Use a ring buffer…​”模式使用的结果文件名
---单个临时文件wiresharkXXXXXX(其中XXXXXX是唯一的编号)
foo.cap--单个命名文件foo.cap
foo.capx-多个文件,持续foo.capfoo_00001_20210714110102.cap,foo_00002_20210714110318.cap, …​
foo.capxx多个文件,环形缓冲区foo_00001_20210714110102.cap,foo_00002_20210714110318.cap…​
  • 单个临时文件:将创建并使用一个临时文件(这是默认设置)。停止捕获后,此文件可以稍后以用户指定的名称保存。
  • 单个命名文件:将使用单个捕获文件。如果要将新捕获文件放入特定文件夹,请选择此模式。
  • 多个文件,持续:与“单个命名文件”模式类似,但在达到多个文件切换条件之一(“Next file every…”值之一)后,将创建并使用一个新文件。
  • 多个文件,环形缓冲区:
    • 很像“多个文件连续”,达到多个文件切换条件之一(其中一个“下一个文件每…​” values)将切换到下一个文件。如果未达到“Ring buffer with n files”的值,这将是一个新创建的文件,否则它将替换以前使用的最旧的文件(从而形成“Ring”)。
    • 此模式将限制磁盘的最大使用量,即使对于无限量的捕获输入数据,也只保留最新捕获的数据。

链路层头文件类型(Link-layer header type)

在大多数情况下,你不需要修改链路层头类型,一些例外情况如下:

  • 如果在以太网设备上进行捕获,可能会提供“Ethernet”或“DOCSIS”的选择。如果您正在从思科有线调制解调器终端系统捕获流量,该系统将DOCSIS流量放到以太网上进行捕获,请选择“DOCSIS”,否则选择“以太网”
  • 如果您在某些版本的BSD的802.11设备上进行捕获,您可能可以选择“Ethernet”或“802.11”。“以太网”将导致捕获的数据包有假的(“煮熟的”)以太网头。“802.11”将使它们具有完整的IEEE 802.11报头。除非捕获需要被不支持802.11报头的应用程序读取,否则你应该选择“802.11”。
  • 如果你是在一个Endace DAG卡连接到一个同步串行线,你可能会提供一个选择“PPP over serial”或“Cisco HDLC”。如果串行线路上的协议是PPP,选择“PPP over serial”,如果串行线路上的协议是Cisco HDLC,选择“Cisco HDLC”。
  • 如果您在连接到ATM网络的Endace DAG卡上进行捕获,您可能会得到“RFC 1483 IP-over-ATM”或“Sun raw ATM”的选择。如果唯一被捕获的流量是RFC 1483 llc封装的IP,或者如果捕获需要被不支持SunATM报头的应用程序读取,选择“RFC 1483 IP- on -ATM”,否则选择“Sun raw ATM”。

捕获时过滤

Wireshark支持对匹配捕获过滤器的报文进行抓包限制。Wireshark捕获过滤器是用libpcap语言编写的。下面是对libpcap过滤器语言语法的简要概述。完整的文档可以在pcap-filter手册页找到。您可以在https://gitlab.com/wireshark/wireshark/wikis/CaptureFilters上找到许多CaptureFilter示例。

在Wireshark的“capture Options”对话框的“filter”字段中输入capture filter,下图
在这里插入图片描述

捕获过滤器采用一系列基本表达式的形式,由连词(and/or)连接,后面可选加not:

[not] primitive [and|or [not] primitive ...]

看几个示例:
(1)比如下面是用于telnet的捕获过滤器,捕获与特定主机之间的通信

tcp port 23 and host 10.0.0.5

这个示例捕获了往返于主机10.0.0.5的telnet通信,

(2)比如下面是“捕获10.0.0.5以外的所有telnet流量”

tcp port 23 and not src host 10.0.0.5

看几个语法:
(1)[src|dst] host <host>: 过滤IP地址或者名称
(2)ether [src|dst] host <ehost>:过滤以太网地址
(3)[tcp|udp] [src|dst] port <port>:过滤TCP和UDP端口号
(4)less|greater <length>:筛选长度分别小于或等于指定长度或大于或等于指定长度的数据包。
(5)ip|ether proto <protocol>:在以太网层或IP层过滤指定的协议

自动远程过滤(没用过)

如果Wireshark是远程运行的(例如使用SSH,一个导出的X11窗口,一个终端服务器,…),远程内容必须通过网络传输,在真正感兴趣的通信中添加许多(通常不重要)包。

为了避免这种情况,Wireshark试图确定它是否远程连接(通过查看一些特定的环境变量),并自动创建一个匹配连接各方面的捕获过滤器。

当正在进行捕获时

运行捕获时,你可能会看到一个“捕获”对话框
在这里插入图片描述

这个对话框显示协议以及其随时间变化的活动的列表。可以在“高级”首选项中的“捕获.显示信息”设置启用

停止捕获

有下面几种方法:

  • “捕获信息对话框”中“Stop Capture”按钮
  • Capture → Stop
  • 工具栏的Stop按钮
  • 快捷键“Ctrl+E”
  • 如果满足其中一个停止条件,捕获将自动停止,例如捕获的最大数据量。

在这里插入图片描述

重启捕获

一个正在运行的捕获会话可以用与上次相同的捕获选项重新启动,这将删除之前捕获的所有数据包。如果捕获了一些无趣的包,并且不需要保留它们,那么这可能很有用。

Restart是一个方便的函数,相当于在捕获停止之后立即开始捕获。重启有以下几种触发方式:

  • 菜单栏: Capture → Restart
  • 工具栏:Restart
    在这里插入图片描述
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值