一、Wireshark简介
Wireshark是一种用于剖析网络流量和分析数据包的开源工具。
二、如何捕获报文
- 点击 捕获->选项,打开捕获窗口
- 网卡设备/流量/捕获过滤器,点击“开始”按钮开始抓包
- 输出(指定缓存文件)/选项(显示、名称解析、自动停止抓包条件) 面板
- 点击捕获->停止,停止抓包
Input
输出
选项
Wireshark面板
快捷工具栏
数据包的颜色
设置时间格式
数据包列表面板的标记符号
四种流跟踪
- TCP
- UDP
- SSL
- HTTP
文件 *** 作
- 标记报文 Ctrl+M
- 导出标记报文(文件->导出特定分组),亦可按过滤器导出报文
- 合并读入多个报文(文件->合并)
如何快速抓取移动设备的报文
1. 在 *** 作系统上打开 wifi 热点 2. 手机连接 wifi 热点 3. 用 Wireshark 打开捕获->选项面板,选择 wifi 热点对应的接口设备抓 包 Wireshark 过滤器- 捕获过滤器
- 用于减少抓取的报文体积
- 使用 BPF 语法,功能相对有限
- 显示过滤器
- 对已经抓取到的报文过滤显示
- 功能强大
- Berkeley Packet Filter,在设备驱动级别提供抓包过滤接口,多数抓包工具都支持此语法
- 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
- host、port
- net ,设定子网,net 192.168.0.0 mask 255.255.255.0 等价于 net 192.168.0.0/24
- portrange,设置端口范围,例如 portrange 6000-8000
- src、dst、src or dst、src and dst
- ra、ta、addr1、addr2、addr3、addr4(仅对 IEEE 802.11 Wireless LAN 有效)
- 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 字节为单位
- port 80 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420
- 任何在报文细节面板中解析出的字段名,都可以作为过滤属性
- 在视图->内部->支持的协议面板里,可以看到各字段名对应的属性名
- 例如,在报文细节面板中 TCP 协议头中的 Source Port,对应着过滤属性为 tcp.srcport
- 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
- [n:m]表示 n 是起始偏移量,m 是切片长度
- 搭配“显示过滤器”使用
- 统计方式
- 报文总体分布:捕获文件属性与数据包长度分布
- 端点统计与会话统计
- 协议分级统计
- HTTP/HTTP2 等应用层协议统计
- TCP 协议连接统计
- IO 流统计与数据流统计
- 捕获文件属性
- when:何时抓包
- where:哪个 IP 接口在抓包
- how:捕获过滤器是什么?
- how much:多少报文?多少字节?多快速率?
- 报文长度分布:信息传输效率
- 各种长度报文的分布
- 分组数量/字节数百分比(同层)
- 绝对分组数量/字节数
- 速率(比特/秒)
- 协议消息统计
- 结束“分组”
- 结束字节
- 结束速率
- OSI 不同层次统计
- 数据链路层(解析名称:MAC/IP/PORT)
- 通讯双方/单端点、分组数、字节数、报文方向、速率、持续时间
- 网络层
- 传输层
- UDP/TCP,端口统计
- 数据链路层(解析名称:MAC/IP/PORT)
- 快速应用过滤器及着色规则
- HTTP
- 分组统计:请求方法与响应码统计
- 请求:基于 Host 和 URI 统计
- 负载均衡:基于 IP 与 Host 统计
- 请求序列:对请求同一 Domain 下的 URI 统计
- HTTP2
- 帧类型统计
- 基于 TCP 连接特性统计,可切换方向
- RTT 时间
- 吞吐量
- 窗口大小
- 序列号
- IO 图表
- 绘制出不同颜色、各类型(折线、直方、点)图
- 以时间作为 X 轴(可选择时间间隔)
- 可设置过滤器下的报文信息为Y轴
- 报文数量、字节数、统计函数
- 数据流
- 可选择基于显示过滤器,显示各端之间的数据流量
- Error:错误信息,包括 Wireshark 解析失败信息
- Warning:异常警告信息
- RST 复位关闭、TCP 窗口关闭、TCP 乱序报文等
- Note:正常通信中的异常通信报文
- TCP 重复 ACK、TCP 重传报文、Keepalive、TLS 复用密钥、零窗口探查等
- Chat:通信的基本信息
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)