zoukankan      html  css  js  c++  java
  • 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.显示具体时间

      视图-时间显示格式-

      

      

      

      

      

      

      

      

      

      

      

  • 相关阅读:
    【模板小程序】链表排序(qsort/insert_sort/merge_sort)
    链表回文判断(C++)
    【模板小程序】十进制大数除法(输出商和余数)
    【模板小程序】字符串截取
    【模板小程序】翻转一个句子中的单词
    web前端基础背景
    MongoDB基本知识(补充)
    Python-ORM
    Python-元编程
    ElementUI 中 el-table 获取当前选中行的index
  • 原文地址:https://www.cnblogs.com/xinghen1216/p/10287614.html
Copyright © 2011-2022 走看看