Wireshark基础使用和表达式语法

        Wireshark的世界里有2种过滤器,分别是捕获过滤器和显示过滤器,采用恰当的过滤器,不但能提高数据分析的灵活性,而且能让分析者更快看到自己想要的分析对象。

       这里只是简单的使用wireshark,关于其高级功能可以自行百度,我的需求就是查看客户端是否向我本地的服务器发送了请求,由于本地服务器没用收到请求,此时再抓包进行判断一下,如果抓包也没有的话,那就说明客户端没用发送请求(这样就说明我这边没用问题,成功把锅甩了出去),所以只分析http tcp层的协议。

1.在使用Wireshark时,首先需要使用捕获过滤器先过滤我们感兴趣的请求,字面意思理解一下什么是捕获过滤器?我的理解就是使用捕获过滤器来捕获我们感兴趣的。

捕获过滤器表达式语法:

可以看到一个捕获过滤器表达式可以由一个或多个原语组成,其中原语包含一个或多个限定词,然后跟着一个ID名字或数字。

其中限定词有三类,分别为:

     Type : host、net、port 指出其后数字或名字的意义

     Direction:src、dst 指出传输方向

     Protocol: ether、ip、tcp、udp、http、ftp 指出协议

操作符:

     与:&&
     或:||
     非:!

e.g.  dst host 192.168.0.12 && tcp port 80

注:我们使用 (&&、||、! )对原语进行组合

常用捕获过滤表达式:

捕获过滤表 含义
ip src host 10.1.1.1 显示来源IP地址为10.1.1.1的数据包
!tcp 抓取80端口的数据包
port 80 筛选端口为80的数据包
host www.example.com 过滤指定域名规则
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的数据包

2.在使用捕获过滤器来捕获数据包之后,还可以使用使用显示过滤器进行

一条基本的显示过滤表达式由过滤项、过滤关系、过滤值三项组成。

       比如ip.addr == 192.168.1.1,这条表达式中ip.addr是过滤项、==是过滤关系,192.168.1.1是过滤值(整条表达示的意思是找出所有ip协议中源或目标ip、等于、192.168.1.1的数据包)

过滤项:

      wireshark的过滤项是“协议“+”.“+”协议字段”的模式。以端口为例,端口出现于tcp协议中所以有端口这个过滤项且其写法就是tcp.port。

      推广到其他协议,如eth、ip、udp、http、telnet、ftp、icmp、snmp等等其他协议都是这么个书写思路。当然wireshark出于缩减长度的原因有些字段没有使用协议规定的名称而是使用简写(比如Destination Port在wireshark中写为dstport)又出于简使用增加了一些协议中没有的字段(比如tcp协议只有源端口和目标端口字段,为了简便使用wireshark增加了tcp.port字段来同时代表这两个),但思路总的算是不变的。而且在实际使用时我们输入“协议”+“.”wireshark就会有支持的字段提示(特别是过滤表达式字段的首字母和wireshark在上边2窗口显示的字段名称首字母通常是一样的),看下名称就大概知道要用哪个字段了。wireshark支持的全部协议及协议字段可查看官方说明

过滤关系:

      过滤关系就是大于、小于、等于等几种等式关系,我们可以直接看官方给出的表。注意其中有“English”和“C-like”两个字段,这个意思是说“English”和“C-like”这两种写法在wireshark中是等价的、都是可用的。

  

过滤值:

       过滤值就是设定的过滤项应该满足过滤关系的标准,比如500、5000、50000等等。过滤值的写法一般已经被过滤项和过滤关系设定好了,只是填下自己的期望值就可以了。

对于两条或以上的基本的显示过滤表达式可以组成复合过滤表达式。

       所谓复合过滤表达示,就是指由多条基本过滤表达式组合而成的表达示。基本过滤表达式的写法还是不变的,复合过滤表达示多出来的东西就只是基本过滤表达示的“连接词”,我们依然直接参照官方给出的表,同样“English”和“C-like”这两个字段还是说明这两种写法在wireshark中是等价的、都是可用的。

常见显示过滤表达式:

显示表达式 含义
tcp 筛选tcp协议的数据包
!tcp 筛选除tcp协议以外的数据包
tcp.port == 80 筛选端口为80的数据包
tcp.port == 12345 && tcp.port == 80 筛选12345端口和80端口之间的数据包
tcp.srcport == 12345 && tcp.dstport == 80 筛选从12345端口到80端口的数据包
ip.addr == 192.168.1.1 筛选ip地址为192.168.1.1的数据包
ip.addr == 192.168.1.1 && ip.addr == 192.168.1.2 筛选192.168.1.1和192.168.1.2之间的数据包
http.request.method == GET 筛选HTTP为GET请求方式的数据包
ip.src ==192.168.1.102 筛选源地址为192.168.1.102的数据包
http.request.uri matches ISAPI 匹配http请求中含有ISAPI字段的请求信息
http 筛选http协议的数据包

示例: 查看ip为10.18.81.50的客户端,向本地端口号为88服务器发送的数据包

 

 

选中一条记录选择:追踪流 -> TCP流

就可以查看其数据包了

发布了235 篇原创文章 · 获赞 65 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/qq_35634181/article/details/105294265