🦈 Wireshark完全指南:网络侦探养成记

77 阅读23分钟

副标题:从"这是啥玩意儿"到"我是抓包大神"的奇妙之旅 🚀


📖 目录


第一章:开场白 - 网络世界的X光机

🎭 先来个生活化的比喻

想象一下,你家楼下有条繁华的街道(这就是你的网络),每天有成千上万的快递小哥(数据包)在这条街上飞奔。

  • 有的快递送的是外卖(HTTP请求)🍕
  • 有的送的是情书(邮件)💌
  • 有的送的是快递盒子(文件下载)📦
  • 还有的......可能是间谍传递的情报(黑客攻击)🕵️

问题来了:你怎么知道这些快递小哥到底送的是啥?谁寄的?寄给谁的?

这时候,Wireshark 就闪亮登场了!它就像一台超级X光机,可以看穿每一个快递包裹的内容,甚至连快递单上的字都能看得一清二楚!😎

💡 为什么要学Wireshark?

  1. 网络故障排查:网速慢?连不上?看看是哪个"快递员"在偷懒
  2. 安全检测:发现有没有"间谍"在偷偷摸摸传递数据
  3. 学习网络协议:比看教科书有趣一万倍!
  4. 装X必备:在公司电脑上打开Wireshark,瞬间高大上 ✨
  5. 抓包调试:开发必备技能,找bug再也不用猜了

第二章:Wireshark是个啥?

🔍 官方定义(装模作样版)

Wireshark是一款开源的网络协议分析器,能够实时捕获网络接口上的数据包并提供详细的协议解析功能。

🍕 人话翻译(接地气版)

Wireshark就是一个免费的网络监听工具,能够:

  • 📡 监听你的网卡
  • 👀 看到所有经过的数据
  • 🔬 分析这些数据是什么协议
  • 📝 告诉你里面装的是啥

🎨 形象化理解

        互联网
           ↓
    ┌──────────────┐
    │   路由器     │
    └──────┬───────┘
           ↓
    ┌──────────────┐
    │  你的电脑    │
    │              │
    │  ┌────────┐  │
    │  │网卡    │←─┼── Wireshark在这里监听!
    │  └────────┘  │
    └──────────────┘

比喻:就像在邮局当监控员,所有进出的信件你都能看到,甚至能拆开看里面写的啥(当然,现实中这是违法的,但在你自己的网络里这是合法的!)📮


第三章:安装教程 - 比装QQ还简单

💻 Windows系统

Step 1:下载

  1. 打开浏览器,访问:www.wireshark.org
  2. 点击超大的 "Download" 按钮
  3. 选择 Windows Installer (64-bit) (除非你的电脑是古董)

Step 2:安装

双击安装包 → 一路点"Next" → 喝口水 → 完成!

重点提示:⚠️

  • 安装时会提示安装 NpcapWinPcap(这是抓包的核心组件)
  • 必须勾选并安装! 不装这个就像买了车但没装发动机
  • 可能需要重启电脑(虽然很烦但建议重启)

Step 3:验证

桌面出现一个蓝色鲨鱼🦈图标 = 成功!

🐧 Linux系统

# Ubuntu/Debian
sudo apt-get update
sudo apt-get install wireshark

# CentOS/RHEL
sudo yum install wireshark

# Arch(你用Arch你就不用看这个教程了😂)
sudo pacman -S wireshark-qt

🍎 macOS系统

  1. 去官网下载 .dmg 文件
  2. 拖到应用程序文件夹
  3. 打开时如果提示"无法验证开发者",去"系统偏好设置 > 安全性"允许一下

第四章:界面导览 - 别被这些按钮吓跑

🖼️ 主界面布局

第一次打开Wireshark,你可能会想:"卧槽这么多东西!"😱 别慌,我们一个个来。

┌─────────────────────────────────────────────────────┐
│  菜单栏:File Edit View Go Capture Analyze...      │
├─────────────────────────────────────────────────────┤
│  工具栏:🦈 📂 💾 ⏹️ 🔄 ⏪ ⏩                      │
├─────────────────────────────────────────────────────┤
│  过滤器栏:[http.request.method == "GET"    ] 🔍  │
├─────────────────────────────────────────────────────┤
│  ┌───────────────────────────────────────────────┐ │
│  │     数据包列表区(Packet List)              │ │
│  │  No. Time     Source      Dest      Protocol  │ │
│  │  1   0.000    192.168.1.1 8.8.8.8   DNS       │ │
│  │  2   0.123    192.168.1.1 1.1.1.1   HTTP      │ │
│  └───────────────────────────────────────────────┘ │
│  ┌───────────────────────────────────────────────┐ │
│  │     数据包详情区(Packet Details)            │ │
│  │  ▼ Frame 1: 74 bytes on wire                 │ │
│  │  ▼ Ethernet II                               │ │
│  │  ▼ Internet Protocol Version 4               │ │
│  │  ▼ Transmission Control Protocol             │ │
│  └───────────────────────────────────────────────┘ │
│  ┌───────────────────────────────────────────────┐ │
│  │     数据包字节流区(Packet Bytes)            │ │
│  │  0000  ff ff ff ff ff ff 00 0c 29 3e 18 f3   │ │
│  └───────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────┘

🎯 各区域功能详解

1️⃣ 菜单栏(顶部)

就像餐厅的菜单,各种功能都藏在这里:

  • File:打开/保存抓包文件
  • Capture:开始/停止抓包
  • Analyze:分析数据包

2️⃣ 工具栏(图标按钮)

快捷键天堂!最常用的几个:

  • 🦈 鲨鱼鳍:开始抓包
  • ⏹️ 红色方块:停止抓包
  • 🔄 重启:重新开始抓包
  • 💾 软盘:保存抓包文件

3️⃣ 过滤器栏(重中之重!)

这是你的搜索框,输入过滤条件,比如:

http              ← 只看HTTP流量
ip.addr == 192.168.1.1   ← 只看这个IP
tcp.port == 443   ← 只看HTTPS流量

颜色提示

  • 🟢 绿色:语法正确
  • 🔴 红色:语法错误(检查拼写!)
  • 🟡 黄色:警告(可能有问题)

4️⃣ 数据包列表区

所有抓到的包都在这里排队,像快递站的包裹清单:

  • No.:编号(第几个包)
  • Time:时间戳
  • Source:源IP地址(谁发的)
  • Destination:目标IP(发给谁)
  • Protocol:协议类型(HTTP、DNS、TCP...)
  • Length:包大小
  • Info:简要信息

颜色编码(默认配色):

  • 🟪 紫色:TCP流量
  • 🟦 浅蓝:UDP流量
  • 黑色:错误包
  • 🟩 浅绿:HTTP流量

5️⃣ 数据包详情区

点击一个包,这里会显示它的"X光片",层层展开:

▼ Frame(物理层)
  ▼ Ethernet II(数据链路层)
    ▼ Internet Protocol(网络层)
      ▼ TCP(传输层)
        ▼ HTTP(应用层)

生活比喻:就像拆快递

  1. 最外面的纸箱(Frame)
  2. 里面的泡沫(Ethernet)
  3. 再里面的包装盒(IP)
  4. 盒子里的塑料袋(TCP)
  5. 最里面的商品(HTTP)🎁

6️⃣ 数据包字节流区

这是最原始的数据,16进制显示,右边是ASCII码翻译。

高手玩法:在这里能看到明文密码、Cookie等敏感信息(所以HTTPS很重要!)


第五章:核心原理 - 它是如何窃听网络的

🔬 工作原理详解

1. 网卡的"混杂模式"(Promiscuous Mode)

正常模式

网卡:这个包不是发给我的?丢掉!

混杂模式

网卡:管他发给谁的,先全部收下!

比喻

  • 正常模式 = 只拿自己的快递
  • 混杂模式 = 快递站老板,所有快递都能看 📬

2. 抓包流程

┌─────────────────────────────────────────┐
│  1. 网卡接收所有数据包                  │
│     ↓                                   │
│  2. Npcap/WinPcap驱动拦截              │
│     ↓                                   │
│  3. 复制一份给Wireshark                │
│     ↓                                   │
│  4. Wireshark解析协议                  │
│     ↓                                   │
│  5. 显示在界面上                        │
└─────────────────────────────────────────┘

关键点

  • ✅ 不会影响正常网络流量
  • ✅ 只是"复制"一份,不是"劫持"
  • ✅ 对方完全感觉不到

3. OSI七层模型与Wireshark

Wireshark能看到的层次:

┌────────────────┬──────────────────┬─────────────────┐
│  OSI层         │  协议示例        │  Wireshark显示  │
├────────────────┼──────────────────┼─────────────────┤
│ 7.应用层       │ HTTP, FTP, DNS   │ ✅ 能看到内容   │
│ 6.表示层       │ SSL, TLS         │ ✅ 能看到握手   │
│ 5.会话层       │ NetBIOS          │ ✅ 能看到会话   │
│ 4.传输层       │ TCP, UDP         │ ✅ 能看到端口   │
│ 3.网络层       │ IP, ICMP         │ ✅ 能看到IP     │
│ 2.数据链路层   │ Ethernet, Wi-Fi  │ ✅ 能看到MAC    │
│ 1.物理层       │ 电信号           │ ❌ 看不到       │
└────────────────┴──────────────────┴─────────────────┘

比喻:Wireshark就像一个透视眼镜,能看穿1-7层,但看不到最底层的电信号(那需要示波器)🔭


第六章:开始抓包 - 你的第一次"偷窥"

🎬 实战演练:抓取一次百度访问

Step 1:选择网卡

  1. 打开Wireshark
  2. 主界面会显示所有网卡:
    以太网 (Ethernet)          📶 ████████ 活动中
    本地连接 (Local Area)     📶 ▁ 无流量
    Wi-Fi                     📶 ████████ 活动中
    
  3. 双击你正在使用的网卡(有流量波动的那个)

提示:不确定选哪个?随便选一个,没流量就换下一个 😅

Step 2:开始抓包

双击后,Wireshark会立即开始抓包! 你会看到数据包疯狂涌入,像瀑布一样 🌊

1  0.000000  192.168.1.100  8.8.8.8       DNS   72   Standard query A baidu.com
2  0.023451  8.8.8.8        192.168.1.100 DNS   88   Standard query response
3  0.045632  192.168.1.100  180.97.33.108 TCP   74   49152443 [SYN]
4  0.067821  180.97.33.108  192.168.1.100 TCP   74   44349152 [SYN,ACK]
...

Step 3:生成流量

  1. 打开浏览器
  2. 访问:http://www.baidu.com(注意是http不是https,这样能看到明文)
  3. 等待页面加载完毕

Step 4:停止抓包

点击红色方块按钮 ⏹️ 停止

Step 5:过滤百度流量

在过滤器栏输入:

http.host == "www.baidu.com"

按回车,现在只显示访问百度的HTTP流量了!

Step 6:查看请求详情

  1. 找到一个 GET 请求(Info列显示 GET / HTTP/1.1
  2. 点击它
  3. 在详情区展开 HTTP
  4. 你能看到:
     Hypertext Transfer Protocol
       GET / HTTP/1.1\r\n
        Request Method: GET
        Request URI: /
         Request Headers:
          Host: www.baidu.com
          User-Agent: Mozilla/5.0...
          Accept: text/html...
          Cookie: BAIDUID=xxxxx
    

恭喜! 🎉 你已经完成了第一次抓包!


第七章:过滤器大全 - 指令终极宝典

这是全文最干货的部分!建议收藏!🔖

📚 过滤器类型

Wireshark有两种过滤器:

类型使用时机特点
捕获过滤器抓包之前语法简单,类似tcpdump
显示过滤器抓包之后语法强大,支持复杂逻辑

比喻

  • 捕获过滤器 = 门口保安,只让特定人进
  • 显示过滤器 = 监控室搜索,从录像里找特定人

🎯 显示过滤器(最常用!)

1. 基础协议过滤

http           # 只显示HTTP流量
https          # 只显示HTTPS流量(加密的,看不到内容)
dns            # 只显示DNS查询
tcp            # 只显示TCP流量
udp            # 只显示UDP流量
icmp           # 只显示ICMP流量(ping命令用的)
arp            # 只显示ARP流量
ftp            # 只显示FTP流量
ssh            # 只显示SSH流量

实战例子

dns             # 看看你的电脑在查询哪些域名
icmp            # 看看ping命令的流量

2. IP地址过滤

# 只看特定IP
ip.addr == 192.168.1.1           # 这个IP的所有流量(收发)
ip.src == 192.168.1.1            # 从这个IP发出的
ip.dst == 192.168.1.1            # 发到这个IP的

# 只看特定IP段
ip.addr == 192.168.1.0/24        # 192.168.1.0-255网段

# 排除某个IP
!ip.addr == 192.168.1.1          # 不看这个IP的流量
!(ip.addr == 192.168.1.1)        # 同上(推荐这种写法)

生活案例

ip.src == 192.168.1.100          # 看看我的电脑发了啥
ip.dst == 180.97.33.108          # 看看发到百度服务器的流量

3. 端口过滤

# TCP端口
tcp.port == 80                   # HTTP流量(80端口)
tcp.port == 443                  # HTTPS流量(443端口)
tcp.port == 22                   # SSH流量
tcp.port == 3389                 # Windows远程桌面
tcp.srcport == 80                # 源端口是80
tcp.dstport == 443               # 目标端口是443

# UDP端口
udp.port == 53                   # DNS查询
udp.port == 137                  # NetBIOS名称服务

# 端口范围
tcp.port >= 1000 && tcp.port <= 2000   # 1000-2000端口

常用端口速查

20/21   - FTP
22      - SSH
23      - Telnet
25      - SMTP(邮件发送)
53      - DNS
80      - HTTP
110     - POP3(邮件接收)
143     - IMAP(邮件)
443     - HTTPS
3306    - MySQL
3389    - 远程桌面
8080    - 备用HTTP

4. HTTP专用过滤

# 请求方法
http.request.method == "GET"     # 只看GET请求
http.request.method == "POST"    # 只看POST请求
http.request.method == "PUT"     # 只看PUT请求

# 请求的网站
http.host == "www.baidu.com"     # 只看访问百度的
http.host contains "google"      # 网站包含google

# URL路径
http.request.uri == "/index.html"          # 请求特定页面
http.request.uri contains "login"          # URL包含login

# 状态码
http.response.code == 200        # 成功响应
http.response.code == 404        # 找不到页面
http.response.code == 500        # 服务器错误
http.response.code >= 400        # 所有错误

# Cookie和内容
http.cookie contains "session"   # Cookie中包含session
http.request.uri contains "password"  # URL中包含password(危险!)

实战案例

# 找出所有失败的HTTP请求
http.response.code >= 400

# 找登录请求
http.request.method == "POST" && http.request.uri contains "login"

# 找可疑的明文密码传输
http.request.uri contains "password" || http.request.uri contains "pwd"

5. TCP标志位过滤

# 三次握手
tcp.flags.syn == 1 && tcp.flags.ack == 0    # SYN包(第一次握手)
tcp.flags.syn == 1 && tcp.flags.ack == 1    # SYN-ACK包(第二次握手)
tcp.flags.ack == 1                          # ACK包

# 四次挥手
tcp.flags.fin == 1                          # FIN包(开始挥手)

# 重置连接
tcp.flags.reset == 1                        # RST包(强制断开)

# 紧急数据
tcp.flags.push == 1                         # PSH包(立即推送)

比喻

  • SYN = "你好,能聊天吗?"
  • SYN-ACK = "可以啊,你也好!"
  • ACK = "好的,那咱们开始吧!"
  • FIN = "我要挂了,拜拜"
  • RST = "直接挂断!"😤

6. DNS过滤

dns.qry.name == "www.baidu.com"   # 查询特定域名
dns.qry.name contains "google"    # 域名包含google
dns.flags.response == 1           # 只看DNS响应
dns.flags.rcode != 0              # DNS查询失败

实战

# 看看电脑访问了哪些网站
dns.flags.response == 0

# 看看哪些域名解析失败了
dns.flags.rcode != 0

7. 逻辑运算符

# AND(且)
ip.src == 192.168.1.1 && tcp.port == 80
ip.src == 192.168.1.1 and tcp.port == 80    # 同上

# OR(或)
tcp.port == 80 || tcp.port == 443
tcp.port == 80 or tcp.port == 443           # 同上

# NOT(非)
!http
not http                                    # 同上

# 组合使用(注意括号!)
(ip.src == 192.168.1.1 || ip.src == 192.168.1.2) && tcp.port == 80

# 排除本地流量
!(ip.src == 127.0.0.1 || ip.dst == 127.0.0.1)

8. 字符串匹配

# 包含
http.host contains "baidu"
frame contains "password"          # 整个包中包含password(危险!)

# 正则表达式
http.host matches ".*\\.com"       # 所有.com域名
http.request.uri matches ".*\\.(jpg|png|gif)"   # 所有图片请求

9. 时间过滤

# 相对时间
frame.time_relative >= 10          # 抓包开始后10秒之后的
frame.time_relative <= 60          # 前60秒的

# 包间隔时间
frame.time_delta > 1               # 间隔超过1秒的包

10. 包大小过滤

frame.len > 1000                   # 大于1000字节的包
frame.len < 64                     # 小于64字节的包(可能是异常包)
tcp.len == 0                       # 没有数据的TCP包(纯ACK)

🚀 捕获过滤器(Capture Filter)

使用场景:抓包前设置,减少抓包文件大小

设置位置:Capture → Options → Capture Filter

语法(类似tcpdump)

# 协议
tcp
udp
icmp

# 主机
host 192.168.1.1
src host 192.168.1.1
dst host 192.168.1.1

# 网段
net 192.168.1.0/24

# 端口
port 80
src port 80
dst port 443
portrange 1000-2000

# 组合
tcp and port 80
host 192.168.1.1 and tcp
not broadcast and not multicast    # 排除广播和组播

# 常用组合
tcp port 80 or tcp port 443        # 只抓HTTP和HTTPS
not port 53                        # 不抓DNS
host 192.168.1.1 and port 22      # 只抓SSH连接

注意:⚠️

  • 捕获过滤器语法更简单但功能较弱
  • 显示过滤器更强大但只能用于已抓到的包
  • 一般推荐:不设捕获过滤器,全抓下来,用显示过滤器筛选

🎨 过滤器实战速查表

需求过滤器
只看访问某网站的流量http.host == "www.example.com"
只看某个IP的流量ip.addr == 192.168.1.1
只看TCP三次握手tcp.flags.syn == 1
只看HTTP错误http.response.code >= 400
找明文密码(危险!)frame contains "password"
排除本机流量!(ip.addr == 127.0.0.1)
只看DNS查询dns.flags.response == 0
只看大包frame.len > 1000
找慢响应http.time > 1
只看某段时间的流量frame.time >= "2024-01-01 10:00:00"

第八章:实战案例 - 真刀真枪来一把

🎯 案例1:分析网站加载慢的原因

场景

老板抱怨:"这网站怎么这么慢!给我查查!"

操作步骤

Step 1:开始抓包

1. 打开Wireshark,选择网卡
2. 清空浏览器缓存
3. 开始抓包
4. 访问慢网站
5. 等待加载完成
6. 停止抓包

Step 2:过滤HTTP流量

过滤器输入:http

Step 3:分析

右键某个HTTP请求 → Follow → HTTP Stream

查看:

  1. DNS解析时间dns.time > 0.1(超过100ms说明DNS慢)
  2. TCP建立时间:看三次握手耗时
  3. 服务器响应时间http.time > 1(超过1秒说明服务器慢)
  4. 大文件下载frame.len > 100000(超过100KB的包)

诊断结果

┌─────────────────────────────────────────────┐
│  慢的原因                可能性              │
├─────────────────────────────────────────────┤
│  DNS解析慢              👉 换DNS服务器      │
│  服务器响应慢          👉 优化后端代码      │
│  大图片未压缩          👉 压缩图片          │
│  没有启用CDN           👉 使用CDN加速       │
│  太多HTTP请求          👉 合并资源文件      │
└─────────────────────────────────────────────┘

🎯 案例2:抓取微信聊天记录(加密的,但能看到元数据)

⚠️ 免责声明

仅用于学习!监听他人通信是违法的!

操作

Step 1:开始抓包 + 发微信

1. 开始抓包
2. 发几条微信消息
3. 停止抓包

Step 2:找微信服务器

过滤器:tcp && ip.dst != 192.168.0.0/16

你会看到微信连接到腾讯服务器(例如 183.3.226.35

Step 3:分析连接

右键 → Follow → TCP Stream

结果

  • ❌ 看不到聊天内容(因为加密了)
  • ✅ 能看到连接时间、数据包大小
  • ✅ 能看到连接频率(推测聊天频繁程度)

教训加密很重要! 所以微信、WhatsApp都用了端到端加密 🔒


🎯 案例3:检测局域网ARP攻击

背景知识

ARP攻击 = 有人在局域网里假扮路由器,劫持你的流量

检测方法

Step 1:抓取ARP流量

过滤器:arp

Step 2:看看有没有异常

正常情况:

192.168.1.1 (路由器) is at MAC: aa:bb:cc:dd:ee:ff

被攻击时:

192.168.1.1 is at MAC: aa:bb:cc:dd:ee:ff
192.168.1.1 is at MAC: 11:22:33:44:55:66  ← 咦?怎么变了?
192.168.1.1 is at MAC: aa:bb:cc:dd:ee:ff  ← 又变回来了?

看到频繁变化 = 有人在搞事情! 🚨

解决办法

  1. 绑定路由器MAC地址(在电脑里设置静态ARP)
  2. 找到攻击者的MAC地址,踢出去
  3. 启用交换机的ARP防护

🎯 案例4:抓取HTTP明文密码(教育目的)

⚠️ 警告

  • 只能在自己的网络环境测试
  • 不要用于非法目的
  • 现在大部分网站都用HTTPS了

操作

Step 1:找一个HTTP网站 (现在很少了,可以自己搭建一个测试)

Step 2:开始抓包 + 登录

Step 3:过滤POST请求

过滤器:http.request.method == "POST"

Step 4:查看表单数据

右键 → Follow → HTTP Stream

你会看到:

POST /login HTTP/1.1
Host: example.com
...

username=admin&password=123456  ← 明文密码!

教训

  1. 永远使用HTTPS(地址栏有🔒图标)
  2. 不要在公共Wi-Fi登录重要账号
  3. HTTP = 裸奔 🏃

🎯 案例5:分析TCP重传问题

场景

网络卡顿,视频缓冲,游戏延迟

诊断

Step 1:过滤重传包

tcp.analysis.retransmission

Step 2:统计重传率

Statistics → Capture File Properties
看 "Packets with retransmission" 占比

正常:< 1% 有问题:> 5% 严重问题:> 10%

原因分析

┌──────────────────────────────────────┐
│  重传多的原因         解决方法        │
├──────────────────────────────────────┤
│  Wi-Fi信号差         换网线/靠近路由  │
│  网络拥堵           限速/QoS          │
│  网线有问题         换网线            │
│  服务器问题         联系运营商        │
└──────────────────────────────────────┘

第九章:高级技巧 - 从青铜到王者

🏆 技巧1:追踪TCP流

功能:重组完整的会话内容

操作

  1. 右键任意TCP包
  2. Follow → TCP Stream
  3. 会弹出新窗口,显示完整对话

显示颜色

  • 🔴 红色:客户端发送
  • 🔵 蓝色:服务器响应

用途

  • 看HTTP完整请求/响应
  • 分析FTP命令
  • 查看聊天内容(如果没加密)

🏆 技巧2:专家信息(Expert Information)

位置:Analyze → Expert Information

作用:自动检测网络问题

分类

  • 💬 Chat:普通信息
  • 📝 Note:值得注意的事件
  • ⚠️ Warning:警告
  • 🔴 Error:错误

常见警告

TCP Retransmission       → 网络丢包
TCP Out-of-Order        → 包乱序
TCP Window Full         → 接收窗口满
HTTP 404                → 页面不存在

🏆 技巧3:统计功能

3.1 协议分布

Statistics → Protocol Hierarchy

看各协议占比,例如:

Ethernet: 100%
  IP: 98%
    TCP: 70%
      HTTP: 40%
      HTTPS: 30%
    UDP: 28%
      DNS: 15%
      QUIC: 13%
  ARP: 2%

3.2 对话统计

Statistics → Conversations

看哪些IP之间通信最多

3.3 IO图表

Statistics → I/O Graph

生成流量趋势图,看流量波动 📈


🏆 技巧4:自定义列

需求:想在列表里直接看到"服务器响应时间"

操作

  1. 展开一个HTTP包的详情
  2. 找到 Time since request
  3. 右键 → Apply as Column
  4. 现在列表里就多了这一列!

推荐添加的列

  • TCP Stream Index(流编号)
  • HTTP Response Time(响应时间)
  • TCP Window Size(窗口大小)

🏆 技巧5:保存过滤器

常用过滤器太长记不住?保存它!

操作

  1. 在过滤器栏输入过滤条件
  2. 点击右边的书签图标
  3. 点 "+" 号保存
  4. 下次直接从列表选择!

推荐保存的过滤器

HTTP Errors: http.response.code >= 400
DNS Queries: dns.flags.response == 0
Slow HTTP: http.time > 1
Local Traffic Only: ip.src == 192.168.1.0/24

🏆 技巧6:导出对象

功能:提取HTTP传输的文件

操作

File → Export Objects → HTTP

会列出所有传输的文件:

  • HTML页面
  • 图片
  • JS/CSS文件
  • 下载的文件

点击 "Save" 可以保存到本地!

用途

  • 恢复下载失败的文件
  • 查看网站资源
  • 取证(例如下载了什么文件)

🏆 技巧7:时间显示格式

默认:相对时间(从抓包开始计算)

修改

View → Time Display Format

选项

  • Date and Time of Day:显示实际时间
  • Seconds Since Previous Captured Packet:显示包间隔
  • Seconds Since First Captured Packet:显示相对时间

🏆 技巧8:合并抓包文件

场景:分几次抓的包,想合并分析

操作

File → Merge

选择要合并的 .pcap 文件


🏆 技巧9:命令行版本:tshark

Wireshark的命令行版本,适合服务器使用

安装:安装Wireshark时自动安装

示例

# 抓包并保存
tshark -i eth0 -w capture.pcap

# 抓100个包后停止
tshark -i eth0 -c 100 -w capture.pcap

# 应用过滤器
tshark -i eth0 -f "tcp port 80" -w capture.pcap

# 读取并分析
tshark -r capture.pcap -Y "http.request.method == GET"

第十章:常见问题 - 救命稻草在这里

❓ Q1:为什么我抓不到包?

可能原因

  1. 没有安装Npcap/WinPcap

    • 解决:重新安装Wireshark,勾选安装这个组件
  2. 选错网卡了

    • 解决:换一个网卡试试,选有流量波动的那个
  3. 权限不够(Linux/Mac)

    • 解决:用 sudo wireshark 启动
  4. 网卡不支持混杂模式

    • 解决:换网卡或者用USB网卡
  5. 虚拟机环境

    • 解决:在"网卡设置"里启用"混杂模式"

❓ Q2:为什么看不到HTTPS内容?

答案:因为加密了!

解决办法

  1. 解密HTTPS(需要私钥)

    • Edit → Preferences → Protocols → TLS → RSA keys
    • 导入服务器私钥(只有服务器管理员有)
  2. 浏览器导出密钥(Chrome/Firefox)

    设置环境变量:
    SSLKEYLOGFILE=C:\sslkeys.log
    
    重启浏览器,Wireshark会自动解密!
    

注意:这只能解密你自己浏览器的HTTPS流量


❓ Q3:抓包文件太大怎么办?

解决方案

  1. 使用捕获过滤器(抓包前就过滤)

    只抓HTTP:tcp port 80
    不抓DNS:not port 53
    
  2. 限制文件大小

    Capture → Options → Output
    勾选 "Create a new file automatically"
    设置 "after 100 megabytes"
    
  3. 限制抓包时长

    Capture → Options → Stop Capture
    勾选 "after 60 seconds"
    

❓ Q4:过滤器显示红色怎么办?

原因:语法错误

常见错误

ip.addr = 192.168.1.1    # 应该用 ==ip.addr == 192.168.1.1http.host = "baidu.com"  # 引号要英文http.host == "baidu.com"tcp.port = 80 || 443     # 逻辑错误tcp.port == 80 || tcp.port == 443

提示:输入时Wireshark会自动提示!


❓ Q5:怎么在公司网络抓包?

注意事项:⚠️

  1. 先问老板/IT部门!未经许可抓包可能违反公司规定
  2. 不要抓别人的流量(交换机环境下一般也抓不到)
  3. 只抓自己电脑的流量是安全的

在交换机环境

  • 普通情况下只能抓到自己的流量
  • 如果想抓整个网络,需要:
    • 配置交换机端口镜像(需要管理员权限)
    • 或者用ARP欺骗(违法!不要做!)

❓ Q6:Mac地址和IP地址有什么区别?

比喻

  • MAC地址 = 身份证号(全球唯一,出生就有)
  • IP地址 = 家庭住址(可以换,搬家就变)

详解

MAC地址:
  - 48位(例如:AA:BB:CC:DD:EE:FF)
  - 网卡硬件地址
  - 局域网内通信用
  - 不能跨路由器

IP地址:
  - 32位(IPv4,例如:192.168.1.1)
  - 逻辑地址
  - 互联网通信用
  - 可以跨路由器

❓ Q7:Wireshark合法吗?

答案:工具本身完全合法!

合法使用:✅

  • 自己的网络
  • 自己的电脑
  • 公司授权的网络(有书面许可)
  • 学习和研究

非法使用:❌

  • 公共Wi-Fi偷窥别人流量
  • 未经许可监控公司网络
  • 窃取他人隐私
  • 黑客攻击

原则只抓自己的包!


❓ Q8:如何学习网络协议?

推荐方法

  1. 边抓包边学

    • 访问一个网站,抓包,分析HTTP
    • 发一封邮件,抓包,分析SMTP
    • 打开微信,抓包,分析TCP
  2. 对照协议RFC文档

    • HTTP: RFC 2616
    • TCP: RFC 793
    • DNS: RFC 1035
  3. 看Wireshark的解析

    • Wireshark会详细标注每个字段
    • 比看书直观一万倍!

❓ Q9:Wireshark能防御网络攻击吗?

答案:不能直接防御,但能检测

作用

  • ✅ 发现异常流量
  • ✅ 分析攻击手法
  • ✅ 取证(攻击来自哪里)
  • ❌ 不能自动阻止攻击

防御需要

  • 防火墙
  • IDS/IPS(入侵检测/防御系统)
  • 杀毒软件

比喻: Wireshark = 监控摄像头(能看到小偷,但抓不住) 防火墙 = 保安(能拦住小偷)


❓ Q10:抓包文件能分享吗?

警告:⚠️ 抓包文件可能包含敏感信息!

可能泄露的信息

  • Cookie(可能被盗号)
  • 密码(如果是HTTP明文)
  • 浏览历史
  • 个人信息

分享前务必

  1. 用显示过滤器只导出需要的包
  2. 检查是否包含敏感信息
  3. 删除Cookie等字段
  4. 或者用假数据重新模拟

安全导出

File → Export Specified Packets
应用过滤器,只导出需要的

🎓 总结:从小白到大神的进阶路线

🥉 青铜级(入门)

  • ✅ 安装Wireshark
  • ✅ 能开始抓包、停止抓包
  • ✅ 会用简单过滤器(httpdns
  • ✅ 能看懂数据包列表

时间:1天


🥈 白银级(熟练)

  • ✅ 掌握常用过滤器语法
  • ✅ 能分析HTTP流量
  • ✅ 理解TCP三次握手
  • ✅ 会用Follow TCP Stream
  • ✅ 能保存和加载抓包文件

时间:1周


🥇 黄金级(精通)

  • ✅ 熟练使用复杂过滤器(逻辑运算、正则)
  • ✅ 能分析网络故障(丢包、重传)
  • ✅ 理解大部分常见协议(HTTP、DNS、TCP、UDP)
  • ✅ 会用统计功能和专家信息
  • ✅ 能导出对象和解密HTTPS

时间:1个月


💎 王者级(大师)

  • ✅ 深入理解OSI七层模型
  • ✅ 能分析各种协议(包括冷门协议)
  • ✅ 能进行安全分析和攻击检测
  • ✅ 会用tshark写自动化脚本
  • ✅ 能编写自定义解析器

时间:6个月 - 1年


📚 推荐学习资源

书籍

  1. 《Wireshark网络分析就这么简单》 - 林沛满(中文,适合入门)
  2. 《Wireshark网络分析的艺术》 - 林沛满(进阶)
  3. 《TCP/IP详解 卷1:协议》 - Stevens(经典)

在线资源

  1. Wireshark官方Wiki:wiki.wireshark.org/
  2. Wireshark官方视频教程:www.youtube.com/user/Wiresh…
  3. PacketLife.net:packetlife.net/(抓包文件下载练习)

练习网站

  1. www.malware-traffic-analysis.net/ (恶意流量分析练习)
  2. www.netresec.com/?page=PcapF… (各种抓包文件)

🎉 结语

恭喜你读完了这份超长指南!🎊

现在,你应该已经:

  • ✅ 理解了Wireshark的工作原理
  • ✅ 掌握了基本和高级的使用方法
  • ✅ 知道了大量的过滤器指令
  • ✅ 学会了实战分析技巧

记住

  1. 实践是最好的老师 - 多抓包,多分析
  2. 好奇心驱动学习 - 想知道某个网站怎么工作的?抓包看看!
  3. 合法合规使用 - 只抓自己的包,尊重他人隐私
  4. 持续学习 - 网络协议一直在进化(HTTP/3、QUIC...)

🦈 最后的最后

如果把网络世界比作一片海洋,那么:

  • 🌊 数据包就是游动的鱼群
  • 🦈 Wireshark就是你的鲨鱼侦察器
  • 🎣 过滤器就是你的鱼竿
  • 🎯 分析能力就是你的捕鱼技巧

愿你在网络的海洋里,成为最厉害的捕鱼高手! 🎣


📝 附录:快捷键速查表

快捷键功能
Ctrl + K开始抓包
Ctrl + E停止抓包
Ctrl + W关闭抓包文件
Ctrl + O打开抓包文件
Ctrl + S保存抓包文件
Ctrl + F查找包
Ctrl + G跳转到指定包
Ctrl + ↑/↓上/下一个标记的包
Alt + ←/→后退/前进(浏览历史)
Ctrl + =放大字体
Ctrl + -缩小字体
Ctrl + Shift + P打印
F8下一个包
F7上一个包
Ctrl + R重新加载

文档版本:v1.0
最后更新:2024年1月
作者:一个热爱网络的程序员 🤓

声明:本文档仅供学习和研究使用,请勿用于非法目的。网络安全,人人有责!


🎊 Happy Packet Hunting! 🦈