Wireshark零基础入门到实战(一)基础篇

1 认识Wireshark的界面

1.1 初识Wireshark

请添加图片描述

这里我使用WLAN抓包如下所示:

请添加图片描述

我们以一个http协议为例,分析每一层字段的含义,首先是物理层

请添加图片描述

然后是数据链路层和网络层

请添加图片描述

请添加图片描述

下面来看传输层TCP各字段的含义

请添加图片描述

请添加图片描述

1.2 过滤器

一次捕获的数据包有很多,通过添加过滤器可以快速筛选出我们想要的包。过滤器分为捕捉过滤器(CaptureFilters)和显示过滤器(DisplayFilters)。

捕获过滤器

捕获过滤器在wireshark开始捕获数据包之前,只捕获符合条件的数据包,不记录不符合条件的数据包。

请添加图片描述

捕获过滤器语法:

ProtocalDirectionHost(s)ValueLogical OperationsOther Expression
tcpdst10.1.1.180andtcp dst 10.1.1.1 3289
  • Protocol(协议)
    可能的值: ether, fddi, ip, arp, rarp, decnet, tcp and udp等。如果没有特别指明是什么协议,则默认使用所有支持的协议

  • Direction(方向)
    可能的值: src, dst, src and dst, src or dst。如果没有特别指明来源或目的地,则默认使用 “src or dst” 作为关键字
    比如:”host 10.2.2.2″与”src or dst host 10.2.2.2″是一样的

  • Host(s)
    可能的值: net, port, host, portrange。如果没有指定此值,则默认使用”host”关键字
    比如:"src 10.1.1.1"与”src host 10.1.1.1″相同

  • Logical Operations(逻辑运算)
    可能的值:not, and, or
    否(“not”)具有最高的优先级。或(“or”)和与(“and”)具有相同的优先级,运算时从左至右进行。
    例如,
    “not tcp port 3128 and tcp port 23"与”(not tcp port 3128) and tcp port 23"相同。
    "not tcp port 3128 and tcp port 23"与"not (tcp port 3128 and tcp port 23)"不同。

捕获过滤器例子
显示目的TCP端口为3128的包

tcp dst port 3128

显示来源IP地址为10.1.1.1的包

ip src host 10.1.1.1

显示目的或来源IP地址为10.1.2.3的包

host 10.1.2.3

显示来源为UDP或TCP,并且端口号在2000至2500范围内的包

src portrange 2000-2500

显示除了icmp以外的所有包

not icmp

显示来源IP地址为10.7.2.12,但目的地不是10.200.0.0/16的包

src host 10.7.2.12 and not dst net 10.200.0.0/16

显示源IP为10.4.1.12或源网络为10.6.0.0/16,目的TCP 端口号在200至10000之间,并且目的位于网络 10.0.0.0/8内所有包

(src host 10.4.1.12 or scr net 10.6.0.0/16) and tcp dst portrange 200-10000 and dst net 10.0.0.0/8

捕获广播流量

broadcast

显示过滤器

显示过滤器在wireshark捕获数据包之后,从已捕获的所有数据包中显示出符合条件的数据包,隐藏不符合条件的数据包。
显示过滤表达示在工具栏下方的“显示过滤器”输入框输入即可生效

请添加图片描述

Protocal.String1.String1Comparison OperatorValueLogical OperationsOther Expression
tcp.passive.ip==80xoricmp.type
  • Protocol(协议)
    位于OSI模型第2至7层的协议,如:IP、TCP、DNS等

  • String1,String2(可选项)
    协议的子类

  • Comparison Operator(比较运算符)
    可以使用6种比较运算符

    英文写法C语言写法含义
    eq==等于
    ne!=不等于
    gt>大于
    lt<小于
    ge>=大于等于
    le<=小于等于
  • Logical Operations(逻辑运算符)

    英文写法C语言写法含义
    and&&逻辑与
    or||不逻辑或
    xor^^逻辑异或
    not!逻辑非

逻辑异或:当且仅当其中的一个条件满足时,这样的结果才会被显示在屏幕上

显示过滤器例子

显示SNMP或DNS或ICMP封包

snmp || dns || icmp

显示来源或目的IP地址为10.1.1.1的封包

ip.addr == 10.1.1.1

显示来源不为10.1.2.3或目的不为10.4.5.6的包

ip.src != 10.1.2.3 or ip.dst != 10.4.5.6

显示来源或目的TCP端口号为25的封包

tcp.port == 25

显示目的TCP端口号为25的封包

tcp.dstport == 25

显示包含TCP标志的封包

tcp.flags

显示包含TCP SYN标志的封包

tcp.flags.syn == 1

排除arp流量

!arp

文本管理流量(telnet或ftp)

tcp.port == 23 || tcp.port == 21

也可以直接将看到的条件作为筛选器,选中条件右键 -> 作为过滤器 -> 选中

请添加图片描述

就获得了过滤器:tcp.flags == 0x018

两种过滤器的区别:

捕捉过滤器:用于控制捕捉数据的数量,以避免产生过大的日志文件。
显示过滤器:对捕获结果进行筛选。

2 Wireshark的图形显示

2.1 查看发包速度:I/O图表

统计 -> I/O 图表可以统计发包速度与时间的关系

请添加图片描述

统计结果如下,横坐标是时间,纵坐标是接收包的速率,我这里展示了三种包速率图。分别是所有的包,长度小于150的包,超时重传的包。

可以使用线,点,柱状等样式表示,可以设置不同的颜色,便于查看。

请添加图片描述

根据需要设置筛选器,查看需要分析的包,如:

tcp.analysis.flags && !tcp.analysis.window_update:tcp有问题的数据包,但是不包括窗口更新的数据包
tcp.analysis.duplicate_ack:重发的确认包
tcp.analysis.lost_segment:丢失的数据包
tcp.analysis.retransmission :重传的数据包

2.2 查看TCP往返时间

统计 -> TCP流图形 -> 吞吐量

请添加图片描述

图中点击点可以直接找对对应的包。可以看到往返时间都在0.05s以内。

2.3 数据流图:统计 -> 流量图

可以清楚了看到两个主机沟通,比如tcp三次握手,http请求下发,tcp连接断开等。

请添加图片描述

3 Wireshark的高级特性

3.1 手动修改协议类型

我们抓的包Wireshark都会帮助我们识别是什么协议,如果手动分析发现协议识别错了(比较少见),也可以手动修改协议类型,选中识别错误的包,右键 -> Decode As… 就可以手动修改了

3.2 跟踪TCP流

选择一个数据包,右键 -> 跟踪流 -> TCP 流,可以跟踪一个TCP的

请添加图片描述

可以看到这是一个GET请求,通过跟踪TCP流可以看到两个主机之间这个TCP连接做了什么。

3.3 统计数据包长度

统计 -> 分组长度

请添加图片描述

长度在 1280-2559 之间的数据包属于较长的数据包,一般用于传输数据,长度较小的数据包一般用于保持协议的控制序列。40-79长度的一般是用于tcp控制的数据包。

3.4 专家信息

分析 -> 专家信息

请添加图片描述

这里分为四类信息,含义如下:

  • Error:数据包里面,或者解析器解析出现的错误
  • Warning:不正常通讯中的异常数据包
  • Note:正常通讯中的异常数据包
  • Chat:网络通讯的基本信息

常见的信息含义如下:

  • Previous segment(s) not captured (common at capture start):数据包丢失,期望的数据包被跳过的时候,警告会出现。

  • This frame is a (suspected) out-of-order segment:接收的数据包没有按顺序出现

  • Duplicate ACK (#1):没有收到期望的序号,发送的重复的ACK

  • This frame is a (suspected) fast retransmission:数据包出现了丢失的情况,出现收到了重复的ACK,或者重传计时器超时,数据重传了。

4 Wireshark的命令行模式

除了图形界面,也可以使用命令行模式,安装目录下 tshark.exe 表示命令, tshark.html 是对命令行用法的解释。

请添加图片描述

这里只开个头,知道有命令行的用法,用到的时候再学习。

读取文件,过滤GET信息

tshark.exe -r D:\learn\抓包\http.pcapng  | grep GET

统计信息

capinfos.exe D:\learn\抓包\http.pcapng

指定筛选器进行筛选

tshark.exe -r D:\learn\抓包\1.pcapng -Y "ip.addr=="113.219.230.80" # -r表示读取文件

统计重传信息

tshark.exe -n -q -r D:\learn\抓包\1.pcapng  -z "io,stat,0,tcp.analysis.retransmission"

学完了基础篇,下一篇,我们学习Wireshark零基础入门到实战(二)协议篇

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值