「NETWORK」- Wireshark 网络协议分析工具

认识

Wireshark 是一款开源的网络协议分析工具,广泛用于网络故障排查、协议开发和教育等领域。它能够捕获并详细分析网络流量,帮助用户深入了解网络通信的细节。

官网:https://www.wireshark.org/
文档:https://www.wireshark.org/docs/wsug_html_chunked/
仓库:https://gitlab.com/wireshark/wireshark

组成

WIP

性质

  • 实时捕获:支持从多种网络接口实时捕获数据包。
  • 深度分析:提供对数百种协议的解码和分析,包括常见的 TCP/IP、HTTP、DNS 等。
  • 过滤功能:强大的显示和捕获过滤器,便于用户快速定位特定流量。
  • 图形化界面:直观的界面展示捕获的数据包,支持多种视图和统计信息。
  • 跨平台支持:兼容 Windows、macOS、Linux 等多种操作系统。

编写表达式

6.4. Building Display Filter Expressions

not ospf 排除

构建

安装 Wireshark 工具

How to set up wireshark to run without root on Debian? – Super User

在 Ubuntu 21.04 中,按照如下方法安装:

# apt-get install -y wireshark

# dpkg-reconfigure wireshark-common
...
Should non-superusers be able to capture packets?
                               <Yes>
...

# adduser <your username> wireshark

# reboot // 或者,退出重新登录当前帐号

Flatpak

No capture support · Issue #4 · flathub/org.wireshark.Wireshark

Couldn’t run /usr/bin/dumpcap in child process: Permission denied

How to fix Wireshark &quot;Couldn’t run /usr/bin/dumpcap in child process: Permission denied
networking – How to enable Wireshark without running as root in Trusty 14.04

1)配置 wireshark 以允许非 ROOT 用户抓包:sudo dpkg-reconfigure wireshark-common
2)将用户添加到 wireshark 组:sudo usermod -a -G wireshark $USER

应用

  • 网络故障排查:识别和解决网络连接问题。
  • 安全分析:检测和分析潜在的网络攻击或异常行为。
  • 协议开发:调试和验证新协议或应用程序的网络通信。
  • 教育学习:用于网络协议和通信的教学与学习。

通过 tcpdump 抓包,然后通过 Wireshark 分析

https://www.wireshark.org/
https://www.wireshark.org/docs/wsug_html_chunked/

我们能够使用 tcpdump 保存数据包信息,将数据包信息导入 wireshark 中分析:
1)不仅以更规整的格式,展示各个网络包的头部信息;
2)还用不同颜色展示 DNS 和 ICMP 这两种不同的协议;
3)选择某一个网络包后,在其下方的网络包详情中,可以看到这个包在协议栈各层的详细信息

我们将要访问的是 http://example.com/ 站点,并分析流量:

# tcpdump -i any -nn host example.com -w web.pcap

# curl http://example.com

// 按下 Ctrl+C 停止 tcpdump 命令

# wireshark

远程主机抓包

How can I sniff the traffic of remote machine with wireshark? – Server Fault
[OpenWrt Wiki] How to capture, filter and inspect packets using tcpdump or wireshark tools

ssh root@<SERVER> tcpdump -U -s0 -i <INTERFACE> -w - "<EXPRESSION>" | wireshark -k -i -

# tcpdump
# -U:配合 -w 选项,将数据包立即写入文件,而不是当缓冲写满后再写入文件;
# -s0:使被捕获的数据包完全发送到标准输出,而非截断,以使 Wireshark 获取完整的数据包;

# wireshark
# -k:使用 -i 指定的接口立即开始捕获

协议无法被展示

Wireshark Q&A/Monitoring FTP on a different port number

问题描述:在 TCP 的 FTP 中,协议内容无法被展示,而是直接以 Data: xxx 形式显示。

原因分析:我们的 FTP 服务未使用默认的 21 端口,并且上层 TCP 也不包含内部协议类型,所以 Wireshark 无法识别。

解决方案
1)右键 ⇒ Decode As…
2)Value 设置为特殊的端口号;Current 设置为协议类型;
3)OK,然后便能显示协议数据内容;

增加显示信息(增加列)

Malware-Traffic-Analysis.net – Changing the column display in Wireshark

Edit ⇒ Preferences ⇒ User Interface ⇒ Columns

调整时间

Wireshark/Doc/7.6. Time Stamps

View ⇒ Time Display Format ⇒ XXXXXXX

清空已捕获数据包

https://stackoverflow.com/questions/19366795/how-do-i-clear-the-capture-window-in-wireshark

Clicking on the green shark-fin to the right of the red Stop button
Clicking on Capture > Restart
Hitting Ctrl-R.

我们暂未找到相关方法,现(03/20/2025)除了 Restart 别无它法。

常用协议的过滤信息

DHCP ⇒ bootp
CAPWAP ⇒ capwap

参考

Wireshark – Wikipedia
DeepSeek / 介绍 Wireshark