精华内容
下载资源
问答
  • WireShark

    2019-10-01 00:48:53
    Charles是很强大的网络请求抓包工具,常用于抓包HTTP/HTTPS请求。而作者在做IoT项目时,智能硬件配网协议是基于TCP/UDP或者蓝牙的,需要用Wireshark进行抓包调试。Wireshark官网 本文基于作者在项目中抓包iPhone和...
        

    iOS Wireshark抓包

    Charles是很强大的网络请求抓包工具,常用于抓包HTTP/HTTPS请求。而作者在做IoT项目时,智能硬件配网协议是基于TCP/UDP或者蓝牙的,需要用Wireshark进行抓包调试。Wireshark官网

    本文基于作者在项目中抓包iPhone和智能硬件之间TCP/UDP通信数据的经验来介绍Wireshark的使用方式。

    一、启动Wireshark

    Wireshark是免费软件,可以从官网直接下载安装。

    从非官方网站下载资源时要注意甄别安装包来源,谨防木马和病毒。

    安装成功后,启动Wireshark,可看到本地接口列表界面。图示如下:

    5777390-f402bcfe34524805.png

    此时,要选择一个接口,双击后进入抓包界面。Ethernet:en0(以太网卡)和Wi-Fi:en1(无线网卡)是教常用的两个接口。而作者要捕捉的数据(iPhone和智能硬件之间的TCP/UDP通信数据)不经过PC的网卡。所以,在抓包之前,需要先创建出来待捕捉的接口。

    二、创建虚拟网卡

    这里的虚拟网卡就是上述的待捕捉的接口。创建虚拟网卡的过程如下:

    1. 获取iPhone的UDID

    将iPhone通过USB接口连接Mac,然后在终端上使用下述命令获取iPhone的UDID。

    $ system_profiler SPUSBDataType | grep"Serial Number:.*"| sed s#".*Serial Number: "##decb66caf7012a7799c2c3edxxxxxxxx7f5a715e复制代码

    如果Mac上连接了多个iPhone,从Xcode菜单栏 -> Window -> Devices and Simulators可以更方便地获取准确的UDID。图示如下:

    5777390-9e0dae0461ffda47.png

    2. 为iPhone创建虚拟网卡

    1) 查看已有的接口

    $ ifconfig-llo0 gif0 stf0 XHC20 en0 en1 en2 en3 p2p0 awdl0 bridge0 utun0 en27复制代码

    2) 创建虚拟网卡

    $ rvictl-sdecb66caf7012a7799c2c3edxxxxxxxx7f5a715eStarting device decb66caf7012a7799c2c3edxxxxxxxx7f5a715e [SUCCEEDED] with interface rvi0复制代码

    可以使用rvictl -x [UDID]命令在需要的时候去除网卡。

    3) 再次查看已有的接口

    $ ifconfig-llo0 gif0 stf0 XHC20 en0 en1 en2 en3 p2p0 awdl0 bridge0 utun0 en27 rvi0复制代码

    在末尾多出的rvi0就是为iPhone创建出来的虚拟网卡。使用rvi0就可以抓包了。

    三、启动虚拟网卡

    打开Wireshark,本地接口列表界面中出现了rvi0。图示如下:

    5777390-67d26969b1d062cf.png

    双击rvi0即可进入抓包界面。若此时出现如下弹窗,则说明无权限访问该接口。

    5777390-1b2f61418c9557be.png

    这时,退出Wireshark,然后在终端上使用下述命令重新打开Wireshark就可以了。

    $ sudo /Applications/Wireshark.app/Contents/MacOS/Wireshark Password:复制代码

    四、TCP/UDP抓包

    1. 抓包界面

    要对TCP/UDP进行抓包,首先需要了解Charles主界面。图示如下:

    5777390-77260f4baa406654.png

    1) 工具栏

    工具栏中包含一些功能按钮,可以控制开始抓包、停止抓包等。工具栏底部的输入框叫做显示过滤器,可以通过设定一些过滤条件,控制数据包列表栏的显示情况。

    2) 数据包列表栏

    这部分显示抓到的请求列表(包列表),不同类型的请求会以不同的颜色表示。顶部的No.、Time、Source、Destination、Protocol、Length、Info是单条请求的的属性,可以在菜单栏 -> 视图中调整显示效果。

    3) 数据包详情栏

    在数据包列表栏中点击某条数据,可在此区域内查看详情。

    4) 数据包流信息栏

    此区域展示包的原始数据,在数据包详情栏中显示的内容在此区域都能对应到byte级别的数据。

    网络包的分析可参考永旺文章1永旺文章2等文章。

    2. 过滤器

    由于Wireshark捕捉经过网卡的所有数据,在稍复杂的网路环境中,数据包的数量会瞬间增加,达到难以阅读和难以查找目标数据包的状态。此时,使用Wireshark捕获过滤器和显示过滤器会很有帮助。

    1) 捕获过滤器

    启动Wireshark后,在本机接口列表页面可以看到捕获过滤器(Capture Filter)。图示如下:

    5777390-60ce69f21aae0bea.png

    在蓝色框内的过滤器输入框中,可以输入一些规则,来指明Wireshark只捕捉符合该规则的数据包。过滤规则示例如下:

    // 只捕获HTTP/HTTPS数据port 80 or port 443// 只捕获制定host的数据host 192.168.10.1复制代码

    2) 显示过滤器

    显示过滤器(Display Filter)在抓包界面的工具栏底部(上面有介绍)。输入一些规则,可以从数据包列表栏过滤掉不符合该规则的数据包,当去掉规则时,被过滤掉的数据包会重新显示出来。过滤规则示例如下:

    // 只显示TCP/UDP数据

    tcp || udp

    // 只显示HTTP/HTTPS数据

    tcp.port == 80 || tcp.port == 443

    // 只显示指定host的数据

    ip.addr == 192.168.10.1

    // 只显示指定端口的数据

    tcp.port == 52360 || udp.port == 36025

    展开全文
  • Wireshark常用于网络通信的抓包分析,通过抓取通信过程中的数据包,分析其中所携带的信息,进一步了解网络通信的过程。 熟悉Wireshark的用户界面、基本操作以及特殊操作,如信息的过滤与指定条件的抓包等,可以提高...

    一、Wireshark简介

    Wireshark常用于网络通信的抓包分析,通过抓取通信过程中的数据包,分析其中所携带的信息,进一步了解网络通信的过程。
    熟悉Wireshark的用户界面、基本操作以及特殊操作,如信息的过滤与指定条件的抓包等,可以提高我们的工作效率。具体内容可参考Wireshark抓包图文详解

    二、实操内容

    本次实操按照计算机网络的分层结构,对数据链路层、网络层、传输层、应用层进行抓包分析,熟悉每一层数据单元的构成,以及主要协议的实现过程。

    (一)数据链路层

    1、熟悉 Ethernet 帧结构

    • 打开wireshark进行任意抓包,抓到数据中的Ethernet即为我们要查看的数据链路层内容
      在这里插入图片描述
    • 将数据链路层展开,可以看到 Ethernet 帧的内容
      在这里插入图片描述

    至于为什么抓包数据里没有前导码校验字段,是因为这两个字段是给物理链路层中的物理接口用来识别的,当接口识别没有错误时,就会将数据包中这两个字段去掉,然后交给网卡驱动程序,而Wireshark抓包是在驱动程序中进行的,所以抓到的数据包中就不包含这两个字段。


    2、了解子网内/外通信时的 MAC 地址

    • 同一子网内通信
      打开Wireshark抓包,在命令符窗口中使用ping命令,ping与自己在同一子网的主机
      在这里插入图片描述
      目的主机网络地址信息
      在这里插入图片描述
      本机网络地址信息
      在这里插入图片描述发送帧抓包可通过过滤器查看直指定的icmp内容
      在这里插入图片描述返回帧抓包
      在这里插入图片描述可以发现在与同一子网的主机进行通信时,发送帧的源MAC为本机MAC,目的MAC为目的主机MAC。返回帧的源MAC为目的主机MAC,目的MAC为本机MAC。

    • 不同子网间通信
      打开Wireshark抓包,在命令符窗口中使用ping命令,ping百度
      在这里插入图片描述
      发送帧抓包(ping百度)
      在这里插入图片描述
      返回帧抓包(ping百度)
      在这里插入图片描述
      再ping www.csdn.net
      在这里插入图片描述
      发送帧抓包(pingcsdn
      在这里插入图片描述
      返回帧抓包(pingcsdn
      在这里插入图片描述
      使用arp -a命令查看本机网关的物理地址
      在这里插入图片描述
      观察发送帧的目的MAC和返回帧的源MAC,可发现都与本机的网关MAC相同

    通过以上对同一子网内通信和不同子网间通信的抓包分析,可以得出子网内的目的MAC为目的主机MAC,子网间的目的MAC为子网网关MAC。
    这是因为,如果在同一子网内,源主机可以直接通过广播ARP请求与目的主机建立通信。而不在同一子网时,目的主机收不到源主机的广播信息,需要经网关路由转发,而网关路由如果发现数据包的目的MAC不是自己,则会将包丢弃,所以源主机发送的数据包的目的MAC要为网关MAC,ARP请求过程在下面抓包详解。



    3、ARP 解析过程

    • 先在命令符窗口中使用arp -d *将本机的arp缓存清空
      在这里插入图片描述

    • ping 和自己同一子网的主机,同时用 Wireshark 抓包(可用 arp 过滤),查看 ARP 请求的格式以及请求的内容,注意观察该请求的目的 MAC 地址是什么。再查看一下该请求的回应,注意观察该回应的源 MAC 和目的 MAC 地址是什么。
      本机网络配置
      在这里插入图片描述
      目的主机(Apple)网络配置
      在这里插入图片描述
      请求帧
      在这里插入图片描述
      返回帧
      在这里插入图片描述
      在这里插入图片描述

    可以看到,在本机没有ARP缓存时,主机发送的ARP请求将进行广播的操作,然后收到目的主机包含了自己MAC地址的回复帧。
    我这里收到两个回复是因为我的路由器使用的是校园网,连接的校园网路由器,主机发送的ARP广播,校园网网关路由也会收到,但它回复的不是目的主机的MAC而是自己的MAC。

    (二)网络层

    1、熟悉IP包结构

    • 使用 Wireshark 任意进行抓包(可用 ip 过滤),熟悉 IP 包的结构,如:版本、头部长度、总长度、TTL、协议类型等字段。
      在这里插入图片描述
      从上到下的字段为:
      版本(4bit) ip报文中,版本占了4位,用来表示该协议采用的是那一个版本的ip,相同版本的ip才能进行通信。
      首部长度(4bit) 该字段表示整个ip包头的长度,其中数的单位是4字节。即二进制数0000-1111(十进制数0-15),其中一个最小长度为0字节,最大长度为60字节。一般来说此处的值为0101,表示头长度为20字节。
      区分服务(8bit) 该字段用来获得更好的服务,在旧标准中叫做服务类型,但实际上一直未被使用过。1998 年这个字段改名为区分服务。只有在使用区分服(DiffServ)时,这个字段才起作用。在一般的情况下都不使用这个字段。
      总长度(16bit) 该字段指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节。总长度必须不超过最大传送单元 MTU。
      **标识(16bit)**标识(identification)占 16 位,它是一个计数器,用来产生数据报的标识。
      标志(3bit) 标志(flag)占 3 位,目前只有前两位有意义。标志字段的最低位是 MF (More Fragment)。MF=1 表示后面“还有分片”。MF=0 表示最后一个分片。标志字段中间的一位是 DF (Don’t Fragment) 。只有当 DF=0 时才允许分片。
      片偏移(13 bit) 该字段指出较长的分组在分片后某片在原分组中的相对位置。片偏移以 8 个字节为偏移单位。
      生存时间(8 bit) 记为 TTL (Time To Live)数据报在网络中可通过的路由器数的最大值。
      协议(8 bit) 该字段指出此数据报携带的数据使用何种协议以便目的主机的 IP 层将数据部分上交给哪个处理过程。
      首部检验和(16 bit) 该字段只检验数据报的首部不检验数据部分。
      源地址/目的地址(32bit)

    为提高效率,我们应该让 IP 的头部尽可能的精简。但在如此珍贵的 IP 头部你会发现既有头部长度字段,也有总长度字段。这是因为,IP包的最大传输长度有限制,标识了总长度,便于传输时选择处理,超过长度则进行分段。且可用于计算数据区的长度。


    2、IP 包的分段与重组

    • 根据规定,一个 IP 包最大可以有 64K 字节。但由于 Ethernet 帧的限制,当 IP 包的数据超过 1500 字节时就会被发送方的数据链路层分段,然后在接收方的网络层重组。
      缺省的,ping 命令只会向对方发送 32 个字节的数据。我们可以使用 ping 104.18.40.82 -l 1500 命令指定要发送的数据长度。此时使用 Wireshark 抓包(用 ip.addr == 104.18.40.82 进行过滤),了解 IP 包如何进行分段,如:分段标志、偏移量以及每个包的大小等
      在这里插入图片描述
      在这里插入图片描述在这里插入图片描述

    通过以上操作,我们发现在IP包超过最大长度时会被分段传输,偏移量即为相对于用户数据起点,经过多少个字节进行分段,如上图的1480即为用户数据的第1480字节开始分段,且每个分段的大小为8的整数倍。
    相同IP包的分段会拥有相同标识位,便于接收端重组。



    3、考察 TTL 事件

    • 在 IP 包头中有一个 TTL 字段用来限定该包可以在 Internet上传输多少跳(hops),一般该值设置为 64、128等。
      tracert 命令进行路由追踪。其原理是主动设置 IP 包的 TTL 值,从 1 开始逐渐增加,直至到达最终目的主机。
      使用 tracert www.baidu.com 命令进行追踪,此时使用 Wireshark 抓包(用 icmp 过滤),分析每个发送包的 TTL 是如何进行改变的,从而理解路由追踪原理。
      在这里插入图片描述
      第一跳抓包,经网关路由,TTL=1
      在这里插入图片描述
      第二跳抓包,经172.19.2.2路由,TTL=2
      在这里插入图片描述
      第12跳抓包,到达目标子网,TTL=12
      在这里插入图片描述
      在 IPv4 中,TTL 虽然定义为生命期即 Time To Live,但现实中我们都以跳数/节点数进行设置。如果你收到一个包,其 TTL 的值为 50,那么可以推断这个包从源点到你之间至少有50跳。

    (三)传输层

    1、熟悉TCP 和 UDP 段结构

    • 用 Wireshark 任意抓包(可用 tcp 过滤),熟悉 TCP 段的结构,如:源端口、目的端口、序列号、确认号、各种标志位等字段
      在这里插入图片描述
      在这里插入图片描述
      SYN(synchronous建立联机)
      ACK(acknowledgement 确认)
      PSH(push传送)
      FIN(finish结束)
      RST(reset重置)
      URG(urgent紧急)
      Sequence number(顺序号码)
      Acknowledge number(确认号码)

    • 用 Wireshark 任意抓包(可用 udp 过滤),熟悉 UDP 段的结构,如:源端口、目的端口、长度等。
      在这里插入图片描述
      由上大家可以看到 UDP 的头部比 TCP 简单得多,但两者都有源和目的端口号。因为一个设备有许多的应用,每个应用都通过端口号来标识,所以源端口与目的端口是进行通信的应用服务双方建立数据连接的重要标志,只有通过端口号,两个设备上需要通信的应用服务才能建立连接。

    2、分析 TCP 建立和释放连接

    • 打开浏览器访问 www.baidu.com,用 Wireshark 抓包(可用 tcp 过滤后再跟踪tcp流),不要立即停止 Wireshark 捕获,待页面显示完毕后再多等一段时间使得能够捕获释放连接的包。在捕获的包中找到三次握手建立连接的包分析为何它们是用于释放连接的,有什么特征。
      在这里插入图片描述
      ”第一次握手”客户端发送的TCP报文中将[SYN]设为标志位,段序号Seq=0;
      ”第二次握手”服务器返回的TCP报文中将[SYN,ACK]设为标志位;段序号Seq=0;确认号Ack=1(“第一次握手”所发送段序号Seq+1);
      ”第三次握手”客户端向服务器端发送的TCP报文中将[ACK]设为标志位;段序号Seq=1(“第二次握手”中服务器端确认号Ack的值);确认号Ack=1(“第二次握手”中服务器所发送段序号Seq+1)。

    • 在捕获的包中找到四次挥手释放连接的包,分析为何它们是用于释放连接的,有什么特征。
      在这里插入图片描述
      ”第一次挥手”服务器端发送的请求释放连接报文以[FIN,ACK]作为标志位,其中报文序号Seq=904;确认号Ack=7307;
      ”第二次挥手”客户端发送[ACK]作为标志位;其中报文序号Seq=7307;确认号Ack=905;
      ”第三次挥手”客户端发出确认接收和断开连接报文以[FIN,ACK]作为标志位;其中报文序号Seq=7307;确认号Ack=905;

    • 释放连接抓到只有三次挥手,原因是什么
      是因为有两次挥手合并了,FIN报文用在本端没有数据发送给对方时,关闭从本端到对端的连接。但是并不影响从对方到本端的连接,也就是说本端仍然可以接收对方的数据。即发送通道关闭,接收通道正常。
      如果对方收到本端FIN报文时,对方的接收通道就会关闭。此时,如果对方也没有数据发给本端,那么对方也会发送FIN给本端,用于关闭从对方到本端的连接,这时候就可能出现ACK和FIN合在一起的情况。
      当然,如果对方仍然有数据发送,那么就等数据发完,再发FIN来关闭连接,这时候就是四次挥手了。

    (四)应用层

    1、了解 DNS 解析

    • 使用 ipconfig /flushdns (注意空格)命令清除缓存,再使用 nslookup www.baidu.com命令进行解析,同时用 Wireshark 任意抓包(可用 dns 过滤)。
      在这里插入图片描述
      第一次请求
      在这里插入图片描述
      第一次回复
      在这里插入图片描述
      第二次请求
      在这里插入图片描述
      第二次回复
      在这里插入图片描述
      从抓包的数据中可以看到本机向DNS服务器的53号端口发送了DNS请求,服务器通过53号端口回复,且第一次服务器并没有回复域名解析结果,第二次回复了解析结果,且同一个域名解析出了多个目的IP地址。
      而且,对同一域名的解析,发送了多次请求,这是因为每次域名解析请求都会根据对应的负载均衡算法计算出一个不同的IP地址并返回,这样记录中配置多个服务器就可以构成一个集群,并可以实现负载均衡。


    2、了解 HTTP 的请求和应答

    • 打开浏览器访问网站,用 Wireshark 抓包(可用http 过滤再加上 Follow TCP Stream),不要立即停止 Wireshark 捕获,待页面显示完毕后再多等一段时间以将释放连接的包捕获。在捕获的包中找到 HTTP 请求包,查看请求使用的什么命令,如:GET, POST。并仔细了解请求的头部有哪些字段及其意义。
      请求
      在这里插入图片描述回复
      在这里插入图片描述
      请求方法
      GET:获取资源,可理解为读取或下载数据
      HEAD:获取资源的元信息
      POST:向资源提交数据,相当于写入或上传数据
      PUT:类似 POST
      DELETE:删除资源
      CONNECT:建立特殊的连接隧道
      OPTIONS:列出可对资源实行的方法
      TRACE:追踪请求-响应的传输路径
      常用方法说明
      GET方法虽然基本动作比较简单,但搭配URI和其他头字段就能实现对资源更精细操作,例如,在URI后使用“#”,可以在获取页面后直接定位到某个标签所在的位置;使用If-Modified-Since字段就变成了“有条件的请求”,仅当资源被修改时才会执行获取动作;使用Range字段就是“范围请求”,只获取资源的一部分数据
      POST请求,把你的数据放进报文的body里,然后拼好POST请求头,通过TCP协议发给服务器。
    展开全文
  • wireshark 使用

    2019-11-25 20:41:28
    常用于开发测试过程各种问题定位。本文主要内容包括: 1、Wireshark软件下载和安装以及Wireshark主界面介绍。 2、WireShark简单抓包示例。通过该例子学会怎么抓包以及如何简单查看分析数据包内容。 3、...

    wireshark抓包新手使用教程

      Wireshark是非常流行的网络封包分析软件,可以截取各种网络数据包,并显示数据包详细信息。常用于开发测试过程各种问题定位。本文主要内容包括:

      1、Wireshark软件下载和安装以及Wireshark主界面介绍。

      2、WireShark简单抓包示例。通过该例子学会怎么抓包以及如何简单查看分析数据包内容。

      3、Wireshark过滤器使用。过滤器包含两种类型,一种是抓包过滤器,就是抓取前设置过滤规则。另外一种是显示过滤器,就是在数据包分析时进行过滤数据使用。通过过滤器可以筛选出想要分析的内容。包括按照协议过滤、端口和主机名过滤、数据包内容过滤。具体规则和实例可以查看正文。

    Wireshark软件安装

      软件下载路径:wireshark官网。按照系统版本选择下载,下载完成后,按照软件提示一路Next安装。

      说明:如果你是Win10系统,安装完成后,选择抓包但是不显示网卡,下载win10pcap兼容性安装包。下载路径:win10pcap兼容性安装包

    Wireshark 开始抓包示例

       先介绍一个使用wireshark工具抓取ping命令操作的示例,让读者可以先上手操作感受一下抓包的具体过程。

      1、打开wireshark 2.6.5,主界面如下:

      2、选择菜单栏上Capture -> Option,勾选WLAN网卡(这里需要根据各自电脑网卡使用情况选择,简单的办法可以看使用的IP对应的网卡)。点击Start。启动抓包。

      3、wireshark启动后,wireshark处于抓包状态中。

      4、执行需要抓包的操作,如在cmd窗口下执行ping www.baidu.com。

      5、操作完成后相关数据包就抓取到了。为避免其他无用的数据包影响分析,可以通过在过滤栏设置过滤条件进行数据包列表过滤,获取结果如下。说明:ip.addr == 119.75.217.26 and icmp 表示只显示ICPM协议且源主机IP或者目的主机IP为119.75.217.26的数据包。说明:协议名称icmp要小写。

      5、wireshark抓包完成,就这么简单。关于wireshark显示过滤条件、抓包过滤条件、以及如何查看数据包中的详细内容在后面介绍。

    Wireshakr抓包界面介绍

      说明:数据包列表区中不同的协议使用了不同的颜色区分。协议颜色标识定位在菜单栏View --> Coloring Rules。如下所示

    WireShark 主要分为这几个界面

      1. Display Filter(显示过滤器),  用于设置过滤条件进行数据包列表过滤。菜单路径:Analyze --> Display Filters。

      2. Packet List Pane(数据包列表), 显示捕获到的数据包,每个数据包包含编号,时间戳,源地址,目标地址,协议,长度,以及数据包信息。 不同协议的数据包使用了不同的颜色区分显示。

      3. Packet Details Pane(数据包详细信息), 在数据包列表中选择指定数据包,在数据包详细信息中会显示数据包的所有详细信息内容。数据包详细信息面板是最重要的,用来查看协议中的每一个字段。各行信息分别为

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

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

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

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

      (5)Hypertext Transfer Protocol:  应用层的信息,此处是HTTP协议

    TCP包的具体内容

     从下图可以看到wireshark捕获到的TCP包中的每个字段。

      4. Dissector Pane(数据包字节区)。

    Wireshark过滤器设置

       初学者使用wireshark时,将会得到大量的冗余数据包列表,以至于很难找到自己需要抓取的数据包部分。wireshark工具中自带了两种类型的过滤器,学会使用这两种过滤器会帮助我们在大量的数据中迅速找到我们需要的信息。

    (1)抓包过滤器

        捕获过滤器的菜单栏路径为Capture --> Capture Filters。用于在抓取数据包前设置。

     如何使用?可以在抓取数据包前设置如下。

    ip host 60.207.246.216 and icmp表示只捕获主机IP为60.207.246.216的ICMP数据包。获取结果如下:

    (2)显示过滤器

      显示过滤器是用于在抓取数据包后设置过滤条件进行过滤数据包。通常是在抓取数据包时设置条件相对宽泛或者没有设置导致抓取的数据包内容较多时使用显示过滤器设置条件过滤以方便分析。同样上述场景,在捕获时未设置抓包过滤规则直接通过网卡进行抓取所有数据包,如下

    执行ping www.huawei.com获取的数据包列表如下

    观察上述获取的数据包列表,含有大量的无效数据。这时可以通过设置显示器过滤条件进行提取分析信息。ip.addr == 211.162.2.183 and icmp。并进行过滤。

      上述介绍了抓包过滤器和显示过滤器的基本使用方法。在组网不复杂或者流量不大情况下,使用显示器过滤器进行抓包后处理就可以满足我们使用。下面介绍一下两者间的语法以及它们的区别。

    wireshark过滤器表达式的规则

    1、抓包过滤器语法和实例

       抓包过滤器类型Type(host、net、port)、方向Dir(src、dst)、协议Proto(ether、ip、tcp、udp、http、icmp、ftp等)、逻辑运算符(&& 与、|| 或、!非)

    (1)协议过滤

      比较简单,直接在抓包过滤框中直接输入协议名即可。

      tcp,只显示TCP协议的数据包列表

      http,只查看HTTP协议的数据包列表

      icmp,只显示ICMP协议的数据包列表

    (2)IP过滤

      host 192.168.1.104

      src host 192.168.1.104

      dst host 192.168.1.104

    (3)端口过滤

      port 80

      src port 80

      dst port 80

    (4)逻辑运算符&& 与、|| 或、!非

      src host 192.168.1.104 && dst port 80 抓取主机地址为192.168.1.80、目的端口为80的数据包

      host 192.168.1.104 || host 192.168.1.102 抓取主机为192.168.1.104或者192.168.1.102的数据包

      !broadcast 不抓取广播数据包

    2、显示过滤器语法和实例

    (1)比较操作符

      比较操作符有== 等于、!= 不等于、> 大于、< 小于、>= 大于等于、<=小于等于。

    (2)协议过滤

      比较简单,直接在Filter框中直接输入协议名即可。注意:协议名称需要输入小写。

      tcp,只显示TCP协议的数据包列表

      http,只查看HTTP协议的数据包列表

      icmp,只显示ICMP协议的数据包列表

    (3) ip过滤

       ip.src ==192.168.1.104 显示源地址为192.168.1.104的数据包列表

       ip.dst==192.168.1.104, 显示目标地址为192.168.1.104的数据包列表

       ip.addr == 192.168.1.104 显示源IP地址或目标IP地址为192.168.1.104的数据包列表

    (4)端口过滤

      tcp.port ==80,  显示源主机或者目的主机端口为80的数据包列表。

      tcp.srcport == 80,  只显示TCP协议的源主机端口为80的数据包列表。

      tcp.dstport == 80,只显示TCP协议的目的主机端口为80的数据包列表。

    (5) Http模式过滤

      http.request.method=="GET",   只显示HTTP GET方法的。

    (6)逻辑运算符为 and/or/not

      过滤多个条件组合时,使用and/or。比如获取IP地址为192.168.1.104的ICMP数据包表达式为ip.addr == 192.168.1.104 and icmp

    (7)按照数据包内容过滤。假设我要以IMCP层中的内容进行过滤,可以单击选中界面中的码流,在下方进行选中数据。如下

    右键单击选中后出现如下界面

    选中Select后在过滤器中显示如下

    后面条件表达式就需要自己填写。如下我想过滤出data数据包中包含"abcd"内容的数据流。包含的关键词是contains 后面跟上内容。

    看到这, 基本上对wireshak有了初步了解。

    Wireshark抓包分析TCP三次握手

    (1)TCP三次握手连接建立过程

        Step1:客户端发送一个SYN=1,ACK=0标志的数据包给服务端,请求进行连接,这是第一次握手;

        Step2:服务端收到请求并且允许连接的话,就会发送一个SYN=1,ACK=1标志的数据包给发送端,告诉它,可以通讯了,并且让客户端发送一个确认数据包,这是第二次握手;

       Step3:服务端发送一个SYN=0,ACK=1的数据包给客户端端,告诉它连接已被确认,这就是第三次握手。TCP连接建立,开始通讯。

    (2)wireshark抓包获取访问指定服务端数据包

        Step1:启动wireshark抓包,打开浏览器输入www.huawei.com。

        Step2:使用ping www.huawei.com获取IP。

        Step3:输入过滤条件获取待分析数据包列表 ip.addr == 211.162.2.183

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

    第一次握手数据包

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

    数据包的关键属性如下:

      SYN :标志位,表示请求建立连接

      Seq = 0 :初始建立连接值为0,数据包的相对序列号从0开始,表示当前还没有发送数据

      Ack =0:初始建立连接值为0,已经收到包的数量,表示当前没有接收到数据

    第二次握手的数据包

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

     数据包的关键属性如下:

      [SYN + ACK]: 标志位,同意建立连接,并回送SYN+ACK

      Seq = 0 :初始建立值为0,表示当前还没有发送数据

      Ack = 1:表示当前端成功接收的数据位数,虽然客户端没有发送任何有效数据,确认号还是被加1,因为包含SYN或FIN标志位。(并不会对有效数据的计数产生影响,因为含有SYN或FIN标志位的包并不携带有效数据)

    第三次握手的数据包

      客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写ISN的+1, 如下图:

    数据包的关键属性如下:

      ACK :标志位,表示已经收到记录

      Seq = 1 :表示当前已经发送1个数据

      Ack = 1 : 表示当前端成功接收的数据位数,虽然服务端没有发送任何有效数据,确认号还是被加1,因为包含SYN或FIN标志位(并不会对有效数据的计数产生影响,因为含有SYN或FIN标志位的包并不携带有效数据)。

      就这样通过了TCP三次握手,建立了连接。开始进行数据交互

    下面针对数据交互过程的数据包进行一些说明:

    数据包的关键属性说明

      Seq: 1

      Ack: 1: 说明现在共收到1字节数据

      Seq: 1
      Ack: 951: 说明现在服务端共收到951字节数据

      在TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG。如下

        其中,对于我们日常的分析有用的就是前面的五个字段。它们的含义是:SYN表示建立连接,FIN表示关闭连接,ACK表示响应,PSH表示有DATA数据传输,RST表示连接重置。

    Wireshark分析常用操作

      调整数据包列表中时间戳显示格式。调整方法为View -->Time Display Format --> Date and Time of Day。调整后格式如下:

    展开全文
  • wireshark抓包详解

    万次阅读 多人点赞 2018-09-11 00:15:39
    tcp src port 443 常用于过滤谷歌的浏览器端口443 1 2 2 2 2 2 2 2 2 界面操作: wireshark界面: Capture filter :选项 启用wireshark的混杂模式,只有勾选上这个选项才能,wireshark才能抓取...

    过滤器:

    1. tcp src port 443 常用于过滤谷歌的浏览器端口443

    界面操作:

    wireshark界面:

    Capture filter :选项

    启用wireshark的混杂模式,只有勾选上这个选项才能,wireshark才能抓取非本地的包;

    1.启用实时保存之后wireshark保存的地址;

    2.文件保存的格式

    3.文件保存到多少停止自动保存

     调整wireshark的窗口大小:

    数据包长度,Frame Length: 131bytes

    Internet中有数据帧的生存时间: Time to live:64

     

     wireshark的时间格式设置

        view->Time Display Format

    想研究两个包之间的时间,右击时间选中时间参考;就可以研究这个包和下个包之间的时间差异。

    专家分析:其中的信息可以用来协助判断网络的稳定性能;

    可以看出的信息有,重传信息,乱序,心跳包等网络包。

    统计摘要

    统计摘要说明就是统计菜单中的summary选项:

    功能是对所有所抓取的数据包进行全局统计:

    如下:

    wireshark协议层分析

    1. 统计通信流量中不同协议占用的百分比,通过这个工具可以对全网有个较直观的了解,到底整个网络哪些流量占用的最多哪些流量占用最少等等
    2. statistics->hierarchy  统计->分层统计

    要是其中的ARP-----Address Resolution Protocol 显示的比例太多就有可能是因为有人在使用ARP攻击。

    单独的显示每种协议数据包个数


    网络节点和会话统计

    1. 网络会话
    2. 网络节点

    网络会话:统计会话之间接收和发送的数据包和字节数,通过这个功能能够找到网络中哪个会话(IP地址和端口号)最占用带宽

    在statistics->Conversations中,

    通过分析可以看出电脑主机接收到的数据很多但是发送出去的很少,因为抓包的时候是在使用浏览器,并打开了视频,所以符合实际抓包的情况:

     

    经过步骤1-2-3可以调用流追踪功能和Grap功能,以图表的形式形式数据数据交互情况:

    网络节点:statistics->Endpoints

    数据包长度统计

    功能,统计数据流量中包长度的分布,statistics->packet Lengths 统计->包长度

    图标分析

    IO图标 功能对网络中吞吐量进行实时图形显示   statistics->IO Graph

    通过看比特流可以知道网卡的吞吐量

    点击之后的情况:

    通讯速率:

    更换时间显示方式

     调整Y轴峰值:

     调整之后可以更加方便的观察局部信息:

     通过途中标明的1-2-3可以明显的知道,1用于显示图像,2是显示图像的颜色,3是显示图像的过滤器;

    数据流图  功能 将会话通过图形可视化出来,  statistics->Flow Graph

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • Wireshark如何使用

    2020-07-17 11:17:51
    常用于开发测试过程各种问题定位。本文主要内容包括: 1、Wireshark软件下载和安装以及Wireshark主界面介绍。 2、WireShark简单抓包示例。通过该例子学会怎么抓包以及如何简单查看分析数据包内容。 3、...
  • wireshark抓包

    2019-12-30 13:59:08
    常用于开发测试过程各种问题定位。本文主要内容包括: 1、Wireshark软件下载和安装以及Wireshark主界面介绍。 2、WireShark简单抓包示例。通过该例子学会怎么抓包以及如何简单查看分析数据包内容。 3、Wireshark...
  • wireshark使用教程

    2020-12-16 16:22:39
    常用于开发测试过程各种问题定位。本文主要内容包括:   1、Wireshark软件下载和安装以及Wireshark主界面介绍。   2、WireShark简单抓包示例。通过该例子学会怎么抓包以及如何简单查看分析数据包内容。 ...
  • 常用于开发测试过程各种问题定位。本文主要内容包括: 1、Wireshark软件下载和安装以及Wireshark主界面介绍。 2、WireShark简单抓包示例。通过该例子学会怎么抓包以及如何简单查看分析数据包内容。 3、...
  • Wireshark-win64-3.2.2

    2020-11-06 16:33:16
    Wireshark是非常流行的网络封包分析软件,可以截取各种网络数据包,并显示数据包详细信息。常用于开发测试过程各种问题定位
  • wireshark网络抓包工具

    2020-05-14 14:01:22
    wireshark抓包新手使用...常用于开发测试过程各种问题定位。本文主要内容包括:   1、Wireshark软件下载和安装以及Wireshark主界面介绍。   2、WireShark简单抓包示例。通过该例子学会怎么抓包以及如何...
  • 浅谈Wireshark的使用

    2020-09-13 15:53:43
    常用于开发测试过程各种问题定位。本文主要内容包括: 1、Wireshark软件下载和安装以及Wireshark主界面介绍。 2、WireShark简单抓包示例。通过该例子学会怎么抓包以及如何简单查看分析数据包内容。 ...
  • iOS Wireshark抓包

    2019-01-31 09:47:37
    级别:★☆☆☆☆ 标签:「Wireshark for mac」「iOS TCP抓包」「iOS UDP抓包」 作者: Xs·H 审校: QiShare团队 ...接上篇iOS Charles抓包,Charles是很强大的网络请求抓包工具,常用于抓包HTTP/HT...
  • 常用于开发测试过程各种问题定位。本文主要内容包括: 1、Wireshark软件下载和安装以及Wireshark主界面介绍。 2、WireShark简单抓包示例。通过该例子学会怎么抓包以及如何简单查看分析数据包内容。 3、Wireshark过滤...
  • 常用于开发测试过程各种问题定位。 Wireshark软件安装 ①软件下载路径: Wireshark安装链接按照系统版本选择下载,下载完成后,按照软件提示一路Next安装。 ②大家可以选择官网下载,我下载的时候直接用的电脑管家的...
  • 网络分析工具——WireShark的使用简介WireShark软件安装Wireshark 开始抓包示例WireShark抓包界面WireShark 主要分为这几个界面...常用于开发测试过程中各种问题定位。本文主要内容包括: 1、Wireshark软件下载和安装以
  • 工具集合:1 ---Wireshark

    2020-09-21 10:09:29
    常用于开发测试过程各种问题定位。 下载路径:https://www.wireshark.org/ 。按照系统版本选择下载,下载完成后,按照软件提示一路Next安装。 如果你是Win10系统,安装完成后,选择抓包但是不显示网卡,下载win10...
  • 常用于开发测试过程各种问题定位。本文主要内容包括: 1、Wireshark软件下载和安装以及Wireshark主界面介绍。 2、WireShark简单抓包示例。通过该例子学会怎么抓包以及如何简单查看分析数据包内容。 3、...
  • 常用于开发测试过程各种问题定位。本文主要内容包括: 1、Wireshark软件下载和安装以及Wireshark主界面介绍。 2、WireShark简单抓包示例。通过该例子学会怎么抓包以及如何简单查看分析数据包内容。 3、...

空空如也

空空如也

1 2
收藏数 40
精华内容 16
关键字:

wireshark常用于