概述

Wireshark能获取HTTP,也能获取HTTPS,但是不能解密HTTPS,所以wireshark看不懂HTTPS中的内容。
总结:如果处理HTTP,HTTPS还是用Fiddler,其他协议比如TCP、UDP就用wireshark。

选择网卡

wireshark是捕获机器上的某一块网卡的网络包,当你的机器上有多块网卡的时候,你需要选择一块网卡。
wireshark过滤颜色 wireshark导入颜色过滤器_TCP

窗口介绍

wireshark过滤颜色 wireshark导入颜色过滤器_客户端_02

过滤器

使用过滤器是非常重要的,初学者使用wireshark时,将会得到大量的冗余信息,在几千甚至几万条记录中,很难找到自己需要的数据。搞得的晕头转向,过滤器会帮助我们在大量的数据中迅速找到我们需要的信息。

过滤器分两种

  • 一种是显示过滤器:就是主界面上那种,用于在捕获的记录中找到所需要的记录;
  • 一种是捕获过滤器:用来过滤捕获的封包,以免捕获太多的记录。在捕获->捕获过滤器中设置,保存过滤器。
    wireshark过滤颜色 wireshark导入颜色过滤器_TCP_03
    可以对接口设置混杂模式。设置混杂模式的作用是将网卡设置到混杂模式,如果不设置混杂模式,你的计算机只能获取数据包发往的目标是你计算机或者从你计算机发出去的数据包。如果设置了混杂模式,你就可以捕获局域网中所有的数据包。
    wireshark过滤颜色 wireshark导入颜色过滤器_客户端_04

新建过滤器

在下面的Filter栏上,填好Filter的表达式后,取个名字,保存即可。
wireshark过滤颜色 wireshark导入颜色过滤器_客户端_05

过滤器表达式规则

协议过滤

比如tcp,只显示tcp协议的数据包。

IP过滤器

比如
ip.src == 192.168.0.107,显示源地址为192.168.0.107;
ip.dst == 192.168.0.108,目标地址为192.168.0.108;

端口过滤

tcp.port == 80,端口为80;
tcp.srcport==80 ,只显示TCP协议的原端口为80的数据包。

http模式过滤

http.request.method==“GET”(或者http.request.method==GET,可以不加双引号),只显示HTTP GET方法的协议包。

逻辑运算符

可以使用and/or(或者&&/||)运算符
http.request.method==“GET” && tcp.srcport55539
或者
http.request.method
"GET" && tcp.srcport==55539
wireshark过滤颜色 wireshark导入颜色过滤器_服务端_06

捕获结构分析

着色规则

在菜单“视图->着色规则”下查看
wireshark过滤颜色 wireshark导入颜色过滤器_服务端_07

数据包结构

第一行:数据包整体概述;
第二行:链路层详细信息,主要的是双方的mac地址;
第三行:网络层详细信息,主要是双方的IP地址;
第四行:传输层的详细信息,主要的是双方的端口号。
wireshark过滤颜色 wireshark导入颜色过滤器_TCP_08
数据包对应的7层网络模型:
wireshark过滤颜色 wireshark导入颜色过滤器_TCP_09

tcp数据包

标志为对应的功能:
URG:紧急指针(urgent pointer)有效。
ACK:确认序号有效。
PSH:接收方应该尽快将这个报文段交给应用层。
RST:重建连接。
SYN:同步序号用来发起一个连接。
FIN:发端完成发送任务。
窗口大小:用于流量控制。
校验和:校验和覆盖了整个的TCP报文段(TCP首部和TCP数据),与UDP相似需要计算伪首部。
wireshark过滤颜色 wireshark导入颜色过滤器_客户端_10
tcp数据包结构及在wireshark中的位置
wireshark过滤颜色 wireshark导入颜色过滤器_客户端_11

TCP三次握手分析

wireshark过滤颜色 wireshark导入颜色过滤器_客户端_12

  1. 客户端->服务器:发送标识SYN=1,随机产生的客户端序号seq(发送序号);
  2. 服务器->客户端:发送标识SYN=1、ACK=1,第一步客户端序号+1(确认序号),随机产生的服务端序号seq;
  3. 客户端->服务端:第一步产生的客户端序号seq+1(发送序号)、第二步产生的服务端序号seq+1(确认序号)、ACK=1。

跟踪tcp、http流

Wireshark分析功能中最好用的一个功能是他能够将TCP流重组。重组后的数据格式更容易阅读。跟踪TCP流这个功能可以将接收到的数据排好顺序使之容易查看,而不需要一小块一小块的看。这在查看HTTP、FTP等纯文本应用层协议时非常有用。
下面展示一个示例,选择http显示过滤器,右键点击一条http流,选择追踪http流。这时候就会在一个单独的窗口中显示出整个客户端和服务端的http流交换过程,如下图:
wireshark过滤颜色 wireshark导入颜色过滤器_服务端_13
我们可以看到这个窗口中的文字有两种颜色:
红色表示源地址到目的地址的流量(客户端到服务端的流量);
蓝色表示目的地址到源地址的流量(服务器端到客户端的流量)。
在这个窗口中除了可以看到这些原始数据,还可以在文本间进行搜索,将其保存成一个文件。

参考

wireshark网络抓包详解
wireshark详细图文入门教程
Wireshark使用教程