Wireshark使用指南

一、Wireshark简介

Wireshark是一种用于剖析网络流量和分析数据包的开源工具。

二、如何捕获报文

  • 点击 捕获->选项,打开捕获窗口
    • 网卡设备/流量/捕获过滤器,点击“开始”按钮开始抓包
    • 输出(指定缓存文件)/选项(显示、名称解析、自动停止抓包条件) 面板
  • 点击捕获->停止,停止抓包

Input

Wireshark使用指南_第1张图片

输出

Wireshark使用指南_第2张图片

选项

Wireshark使用指南_第3张图片

Wireshark面板

Wireshark使用指南_第4张图片 快捷工具栏

Wireshark使用指南_第5张图片

 数据包的颜色

Wireshark使用指南_第6张图片

设置时间格式

Wireshark使用指南_第7张图片

数据包列表面板的标记符号

Wireshark使用指南_第8张图片

四种流跟踪

  • TCP
  • UDP
  • SSL
  • HTTP

文件操作

  • 标记报文 Ctrl+M
  • 导出标记报文(文件->导出特定分组),亦可按过滤器导出报文
  • 合并读入多个报文(文件->合并)

如何快速抓取移动设备的报文

1. 在操作系统上打开 wifi 热点
2. 手机连接 wifi 热点
3. 用 Wireshark 打开捕获->选项面板,选择 wifi 热点对应的接口设备抓
Wireshark 过滤器
  • 捕获过滤器
    • 用于减少抓取的报文体积
    • 使用 BPF 语法,功能相对有限
  • 显示过滤器
    • 对已经抓取到的报文过滤显示
    • 功能强大

BPF 过滤器:Wireshark 捕获过滤器
  • Berkeley Packet Filter,在设备驱动级别提供抓包过滤接口,多数抓包工具都支持此语法
  • expression 表达式:由多个原语组成
Expression 表达式
  • primitives 原语:由名称或数字,以及描述它的多个限定词组成
    • qualifiers 限定词
    • Type:设置数字或者名称所指示类型,例如 host www.baidu.com
    • Dir:设置网络出入方向,例如 dst port 80
    • Proto:指定协议类型,例如 udp
    • 其他
  • 原语运算符
    • 与:&& 或者 and
    • 或:|| 或者 or
    • 非:! 或者 not
  • 例如:src or dst portrange 6000-8000 && tcp or ip6
限定词
Type:设置数字或者名称所指示类型
  • host、port
  • net ,设定子网,net 192.168.0.0 mask 255.255.255.0 等价于 net 192.168.0.0/24
  • portrange,设置端口范围,例如 portrange 6000-8000
Dir:设置网络出入方向
  • src、dst、src or dst、src and dst
  • ra、ta、addr1、addr2、addr3、addr4(仅对 IEEE 802.11 Wireless LAN 有效)

Proto:指定协议类型
  • ether、fddi、tr、 wlan、 ip、 ip6、 arp、 rarp、 decnet、 tcp、udp、icmp、igmp、icmp、igrp、pim、ah、esp、vrrp
其他
  • gateway:指明网关 IP 地址,等价于 ether host ehost and not host host
  • broadcast:广播报文,例如 ether broadcast 或者 ip broadcast
  • multicast:多播报文,例如 ip multicast 或者 ip6 multicast
  • less, greater:小于或者大于
基于协议域过滤
  • 捕获所有 TCP 中的 RST 报文
    • tcp[13]&4==4
  • 抓取 HTTP GET 报文
    • port 80 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420
      • 注意:47455420 是 ASCII 码的 16 进制,表示”GET ”
      • TCP 报头可能不只 20 字节,data offset 提示了承载数据的偏移,但它以 4 字节为单位

Wireshark使用指南_第9张图片

显示过滤器的过滤属性
  • 任何在报文细节面板中解析出的字段名,都可以作为过滤属性
    • 在视图->内部->支持的协议面板里,可以看到各字段名对应的属性名
    • 例如,在报文细节面板中 TCP 协议头中的 Source Port,对应着过滤属性为 tcp.srcport

Wireshark使用指南_第10张图片

过滤值比较符号
英文            符号                     描述及示例
eq                ==                       等于. ip.src==10.0.0.5
ne                !=                        不等于. ip.src!=10.0.0.5
gt                 >                         大于. frame.len > 10
lt                 <                          小于. frame.len < 128
ge                 >=                         大于等于. frame.len ge 0x100
le                 <=                         小于等于. frame.len ⇐ 0x20
contains                                   包含. sip.To contains "a1762"
matches         ~                         正则匹配.host matches "acme\.(org|com|net)"
bitwise_and    &                         位与操作. tcp.flags & 0x02
过滤值类型
  • Unsigned integer:无符号整型,例如 ip.len le 1500
  • Signed integer:有符号整型
  • Boolean:布尔值,例如 tcp.flags.syn
  • Ethernet address:以:、-或者.分隔的 6 字节地址,例如 eth.dst == ff:ff:ff:ff:ff:ff
  • IPv4 address:例如 ip.addr == 192.168.0.1
  • IPv6 address:例如 ipv6.addr == ::1
  • Text string:例如 http.request.uri == "https://www.wireshark.org/"
多个表达式间的组合

英文                 符号                 意义及示例 
and                  &&                    AND 逻辑与. ip.src==10.0.0.5 and tcp.flags.fin 
or                     ||                      OR 逻辑或. ip.scr==10.0.0.5 or ip.src==192.1.1.1 
xor                   ^^                     XOR 逻辑异或. tr.dst[0:3] == 0.6.29 xor tr.src[0:3] == 0.6.29 
not                   !                       NOT 逻辑非. not llc 
[…]                                          见 Slice 切片操作符. 
in                                             见集合操作符.

其他常用操作符
  • 大括号{}集合操作符
    • 例如 tcp.port in {443 4430..4434} ,实际等价于 tcp.port == 443 || (tcp.port >= 4430 && tcp.port 4434)
  • 中括号[]Slice 切片操作符
    • [n:m]表示 n 是起始偏移量,m 是切片长度
      • eth.src[0:3] == 00:00:83
    • [n-m]表示 n 是起始偏移量,m 是截止偏移量
      • eth.src[1-2] == 00:83
    • [:m]表示从开始处至 m 截止偏移量
      • eth.src[:4] == 00:00:83:00
    • [m:]表示 m 是起始偏移量,至字段结尾
      • eth.src[4:] == 20:20
    • [m]表示取偏移量 m 处的字节
      • eth.src[2] == 83
    • [,]使用逗号分隔时,允许以上方式同时出现
      • eth.src[0:3,1-2,:4,4:,2] ==00:00:83:00:83:00:00:83:00:20:20:83
可用函数
upper                 Converts a string field to uppercase.
lower                  Converts a string field to lowercase.
len                      Returns the byte length of a string or bytes field.
count                  Returns the number of field occurrences in a frame.
string                  Converts a non-string field to a string.
显示过滤器的可视化对话框
Wireshark使用指南_第11张图片

报文统计

  • 搭配“显示过滤器”使用
  • 统计方式
    • 报文总体分布:捕获文件属性与数据包长度分布
    • 端点统计与会话统计
    • 协议分级统计
    • HTTP/HTTP2 等应用层协议统计
    • TCP 协议连接统计
    • IO 流统计与数据流统计

报文总体分布

  • 捕获文件属性
    • when:何时抓包
    • where:哪个 IP 接口在抓包
    • how:捕获过滤器是什么?
    • how much:多少报文?多少字节?多快速率?
  • 报文长度分布:信息传输效率
    • 各种长度报文的分布

协议分级统计(配合显示过滤器)

  • 分组数量/字节数百分比(同层)
  • 绝对分组数量/字节数
  • 速率(比特/秒)
  • 协议消息统计
    • 结束“分组”
    • 结束字节
    • 结束速率

端点统计/会话统计

  • OSI 不同层次统计
    • 数据链路层(解析名称:MAC/IP/PORT)
      • 通讯双方/单端点、分组数、字节数、报文方向、速率、持续时间
    • 网络层
    • 传输层
      • UDP/TCP,端口统计
  • 快速应用过滤器及着色规则

HTTP/HTTP2 统计

  • HTTP
    • 分组统计:请求方法与响应码统计
    • 请求:基于 Host 和 URI 统计
    • 负载均衡:基于 IP 与 Host 统计
    • 请求序列:对请求同一 Domain 下的 URI 统计
  • HTTP2
    • 帧类型统计

TCP 连接信息统计

  • 基于 TCP 连接特性统计,可切换方向
    • RTT 时间
    • 吞吐量
    • 窗口大小
    • 序列号

IO 图表与数据流统计

  • IO 图表
    • 绘制出不同颜色、各类型(折线、直方、点)图
    • 以时间作为 X 轴(可选择时间间隔)
    • 可设置过滤器下的报文信息为Y轴
      • 报文数量、字节数、统计函数
  • 数据流
    • 可选择基于显示过滤器,显示各端之间的数据流量

专家系统

  • Error:错误信息,包括 Wireshark 解析失败信息
  • Warning:异常警告信息
    • RST 复位关闭、TCP 窗口关闭、TCP 乱序报文等
  • Note:正常通信中的异常通信报文
    • TCP 重复 ACK、TCP 重传报文、Keepalive、TLS 复用密钥、零窗口探查等
  • Chat:通信的基本信息

你可能感兴趣的:(Web知识,实验手册,工具类,wireshark,测试工具,网络)