wireshark

1.Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。

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

2.窗口介绍

    

  1)DISPLAY FILTER(显示过滤器)

  显示过滤器用于查找捕捉记录中的内容。

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

  过滤器有两种,一种是显示过滤器,就是主界面上那个,用来在捕获的记录中找到所需要的记录一种是捕获过滤器,用来过滤捕获的封包,以免捕获太多的记录。

  在Capture -> Capture Filters 中设置保存过滤在Filter栏上,填好Filter的表达式后,点击Save按钮, 取个名字。比如"Filter 102",Filter栏上就多了个"Filter 102" 的按钮。

  2)PACKET LIST PANE(封包列表)

    封包列表中显示所有已经捕获的封包。在这里您可以看到发送或接收方的MAC/IP地址,TCP/UDP端口号,协议或者封包的内容。

  如果捕获的是一个OSI layer 2的封包,您在Source(来源)和Destination(目的地)列中看到的将是MAC地址,当然,此时Port(端口)列将会为空。

  如果捕获的是一个OSI layer 3或者更高层的封包,您在Source(来源)和Destination(目的地)列中看到的将是IP地址。Port(端口)列仅会在这个封包属于第4或者更高层时才会显示。

  3)Packet Details Pane(封包详细信息)

  

  

  这个面板是我们最重要的,用来查看协议中的每一个字段。各行信息分别为

    1. Frame:   物理层的数据帧概况

    2. Ethernet II: 数据链路层以太网帧头部信息

    3. Internet Protocol Version 4: 互联网层IP包头部信息

    4. Transmission Control Protocol:  传输层T的数据段头部信息,此处是TCP

    5. TCPHypertext Transfer Protocol:  应用层的信息,此处是HTTP协议

 4)TCP包的具体内容

 

3.实例分析TCP三次握手过程

     

  实例分析

    打开wireshark, 打开浏览器输入 http://www.9upk.com在wireshark中输入http过滤, 然后选中GET /tankxiao HTTP/1.1的那条记录,右键然后点击"Follow TCP Stream",这样做的目的是为了得到与浏览器打开网站相关的数据包,将得到如下

 

  图中可以看到wireshark截获到了三次握手的三个数据包。第四个包才是HTTP的, 这说明HTTP的确是使用TCP建立连接的。

  1)第一次握手的数据包

  客户端发送一个TCP,标志位为SYN,序列号为0, 代表客户端请求建立连接。 如下图

  

  2)第二次握手的数据包

  服务器发回确认包, 标志位为 SYN,ACK. 将确认序号(Acknowledgement Number)设置为客户的I S N加1以.即0+1=1, 如下图

  

  就这样通过了TCP三次握手,建立了连接

4.过滤

  less than 小于 < lt

  小于等于 le

  等于 eq

  大于 gt

  大于等于 ge

  不等 ne

  1)过滤源ip、目的ip。在wireshark的过滤规则框Filter中输入过滤条件。如查找目的地址为192.168.101.8的包,ip.dst==192.168.101.8;查找源地址为1.1.1.1的包,ip.src==1.1.1.1;查找源或目的是192.168.55.100的包,ip.addr == 192.168.55.100

  2)端口过滤。如过滤80端口,在Filter中输入,tcp.port==80,这条规则是把源端口和目的端口为80的都过滤出来。使用tcp.dstport==80只过滤目的端口为80的,tcp.srcport==80只过滤源端口为80的包;过滤端口范围tcp.port >= 1 and tcp.port <= 80

  3)协议过滤比较简单,直接在Filter框中直接输入协议名即可。排除arp包,如!arp或者not arp

  4)http模式过滤。如过滤get包,http.request.method=="GET",过滤post包,http.request.method=="POST";

  http.request.method == “GET”

  http.request.method == “POST”

  http.request.uri == “/img/logo-edu.gif”

  http contains “GET”

  http contains “HTTP/1.”

  // GET包

  http.request.method == “GET” && http contains “Host: “

  http.request.method == “GET” && http contains “User-Agent: “

  // POST包

  http.request.method == “POST” && http contains “Host: “

  http.request.method == “POST” && http contains “User-Agent: “

  // 响应包

  http contains “HTTP/1.1 200 OK” && http contains “Content-Type: “

  http contains “HTTP/1.0 200 OK” && http contains “Content-Type: “

  一定包含如下

  Content-Type:

  5)连接符and的使用。过滤两种“并且”条件时,使用and连接,如过滤ip为192.168.101.8并且为http协议的,ip.src==192.168.101.8 and http。

  6)连接符 or 的使用。过滤两种“或者”条件时。使用 or 连接,如过滤ip为192.168.101.8或者为http协议的,ip.src==192.168.101.8 or http。

  7)包长度过滤

  udp.length == 26 这个长度是指udp本身固定长度8加上udp下面那块数据包之和

  tcp.len >= 7   指的是ip数据包(tcp下面那块数据),不包括tcp本身

  ip.len == 94 除了以太网头固定长度14,其它都算是ip.len,即从ip本身到最后

  frame.len == 119 整个数据包长度,从eth开始到最后

  eth —> ip or arp —> tcp or udp —> data

5.过滤内容

  http contains "200"

6.显示具体时间

  视图-时间显示格式-

  

  

  

  

  

  

  

  

  

  

  

原文地址:https://www.cnblogs.com/xinghen1216/p/10287614.html