Wireshark介绍 与 过滤器表达式语法

Wireshark介绍 与 过滤器表达式语法

目录:

一、WireShark界面说明:

1、开始捕捉界面:

2、捕捉结果界面:

3、着色规则:

二、捕捉过滤器:

1、捕捉过滤器表达式:

2、捕捉过滤器语法:

三、显示过滤器:

1、基本过滤表达式:

2、复合过滤表达示:

3、常见用显示过滤需求及其对应表达式:


WireShark安装,安装非常简单,处理安装路径自定义之外,其他都直接点下一步。

一、WireShark界面说明:

1、开始捕捉界面:

点击菜单的“捕获-选项”,设置需要捕获的网络适配器,点击“开始”。也可以在菜单“捕获-开始”、“捕获-结束”来控制开始结束。在“捕获-捕获过滤器”编辑捕获表达式:

在这里插入图片描述

在上述“捕获”菜单中进行的操作,也可以在工具栏进行,如下图:

在这里插入图片描述

2、捕捉结果界面:

1号窗口展示的是wireshark捕获到的所有数据包的列表。注意最后一列Info列是wireshark组织的说明列,并不一定是该数据包中的原始内容。

2号窗口是1号窗口中选定的数据包的分协议层展示。底色为红色的是因为wireshark开启校验和验证而该层协议校验和又不正确所致。

3号窗口是1号窗口中选定的数据包的源数据,其中左侧是十六进制表示,右侧是ASCII码表示。另外在2号窗口中选中某层或某字段,3号窗口对应位置也会被高亮。

Wireshark介绍 与 过滤器表达式语法

(1)点击每一行时,wireshark很智能的在记录前用标线表明了本次会话的记录范围[从三次握手到四次挥手]

在这里插入图片描述

(2)http请求是“请求->响应”式的,需要查看对应请求的响应时,可以在包上右键,选择“追踪流(Follow TCP Stream)”

在这里插入图片描述

在这里插入图片描述

(3)被认为最难的其实还是2号窗口展开后的内容不懂怎么看,以IP层为例:每一行就对应该层协议的一个字段;中括号行是前一字段的说明。冒号前的英文是协议字段的名称;冒号后是该数据包中该协议字段的值。

Wireshark介绍 与 过滤器表达式语法

数据包的大致结构:

  • 第一行:数据包整体概述,
  • 第二行:链路层详细信息,主要的是双方的mac地址
  • 第三行:网络层详细信息,主要的是双方的IP地址
  • 第四行:传输层的详细信息,主要的是双方的端口号。

在这里插入图片描述

在这里插入图片描述

(4)tcp数据包结构及在wireshark中的位置:

在这里插入图片描述

在这里插入图片描述

3、着色规则:

在菜单“视图-着色规则”下查看:

Wireshark介绍 与 过滤器表达式语法

 

 

WireShark有两种过滤器:捕捉过滤器(用于决定将什么样的信息记录在捕捉结果中)和 显示过滤器(用于在捕捉结果中进行详细查找);两者的区别:捕捉过滤器在抓包前进行设置,决定抓取怎样的数据;显示过滤器用于过滤抓包数据,方便stream的追踪和排查。捕捉过滤器仅支持协议过滤,显示过滤器既支持协议过滤也支持内容过滤。两种过滤器它们支持的过滤语法并不一样。

二、捕捉过滤器:

1、捕捉过滤器表达式:

捕捉过滤器表达式作用是在wireshark开始捕获数据包之前,只捕获符合条件的数据包,不记录不符合条件的数据包。

Wireshark介绍 与 过滤器表达式语法

也可以通过下面的步骤进入捕捉过滤器进行添加或者删减相应的过滤器:

Wireshark介绍 与 过滤器表达式语法

2、捕捉过滤器语法

(1)协议过滤语法:

语法: Protocol Direction Host(s) Value Logical Operations Other expression
例子: tcp dst 10.1.1.1 80 and tcp dst 10.2.2.2 3128

示例:

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

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

(2)字段详解:

Protocol(协议):
可能值: ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp and udp.
如果没指明协议类型,则默认为捕捉所有支持的协议。
注:在wireshark的HELP-Manual Pages-Wireshark Filter中查到其支持的协议。

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)”不等价。

 

三、显示过滤器:

显示过滤器作用在wireshark捕获数据包之后,依据显示过滤器表达式,对捕捉到的数据包依据协议或包的内容进行过滤,从已捕获的所有数据包中显示出符合条件的数据包,隐藏不符合条件的数据包。

显示过滤表达示在工具栏下方的“显示过滤器”输入框输入即可生效

Wireshark介绍 与 过滤器表达式语法

1、基本过滤表达式:

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

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

(1)过滤项:

wireshark的过滤项是“协议“+”.“+”协议字段”的模式。以端口为例,端口出现于tcp协议中所以有端口这个过滤项且其写法就是tcp.port。推广到其他协议,如eth、ip、udp、http、telnet、ftp、icmp、snmp等等其他协议都是这么个书写思路。

当然wireshark出于缩减长度的原因,有些字段没有使用协议规定的名称而是使用简写(比如Destination Port在wireshark中写为dstport),又出于简便使用增加了一些协议中没有的字段(比如TCP协议只有源端口和目标端口字段,为了简便使用,wireshark增加了tcp.port字段来同时代表这两个)。

(2)过滤关系:

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

Wireshark介绍 与 过滤器表达式语法

(3)过滤值:

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

2、复合过滤表达示:

所谓复合过滤表达示,就是指由多条基本过滤表达式组合而成的表达示。基本过滤表达式的写法还是不变的,复合过滤表达示多出来的东西就只是基本过滤表达示的“连接词”:

Wireshark介绍 与 过滤器表达式语法

3、常见用显示过滤需求及其对应表达式:

(1)数据链路层:

筛选mac地址为04:f9:38:ad:13:26的数据包—-eth.src == 04:f9:38:ad:13:26

筛选源mac地址为04:f9:38:ad:13:26的数据包—-eth.src == 04:f9:38:ad:13:26

(2)网络层:

筛选ip地址为192.168.1.1的数据包—-ip.addr == 192.168.1.1

筛选192.168.1.0网段的数据—- ip contains “192.168.1”

筛选192.168.1.1和192.168.1.2之间的数据包—-ip.addr == 192.168.1.1 && ip.addr == 192.168.1.2

筛选从192.168.1.1到192.168.1.2的数据包—-ip.src == 192.168.1.1 && ip.dst == 192.168.1.2

(3)传输层:

筛选tcp协议的数据包—-tcp

筛选除tcp协议以外的数据包—-!tcp

筛选端口为80的数据包—-tcp.port == 80

筛选12345端口和80端口之间的数据包—-tcp.port == 12345 && tcp.port == 80

筛选从12345端口到80端口的数据包—-tcp.srcport == 12345 && tcp.dstport == 80

(4)应用层:

特别说明—-http中http.request表示请求头中的第一行(如GET index.jsp HTTP/1.1),http.response表示响应头中的第一行(如HTTP/1.1 200 OK),其他头部都用http.header_name形式。

筛选url中包含.php的http数据包—-http.request.uri contains “.php”

筛选内容包含username的http数据包—-http contains “username”

显示post请求方式的http封包—http.request.method== “POST”

显示请求的域名为tracker.1ting.com的http封包—http.host == “tracker.1ting.com”

 

 

参考博客:

https://blog.csdn.net/cumirror/article/details/7054496

https://www.cnblogs.com/lsdb/p/9254544.html

https://blog.csdn.net/qq_30682027/article/details/83021901

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/100041.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Unity安装 ILRuntime插件

    Unity安装 ILRuntime插件unity2019.4.2f1c1在packagemanager里面找不到ILRuntime插件解决办法:编辑项目下Packages的manifest.json文件,添加如下代码贴出来方便大家复制自己需要的部分{“scopedRegistries”:[{“name”:”ILRuntime”,”url”:”https://registry.npmjs.org”,”scopes”:[…

    2022年6月27日
    78
  • HMM超详细讲解+代码[通俗易懂]

    HMM超详细讲解+代码[通俗易懂]写在前面本文目标Why-什么场景下需要HMM模型What-HMM模型的相关概念定义HMM模型的5元组HMM中的3个经典问题How-HMM模型中的3个经典问题评估评估描述评估理论推导评估实际算法前向计算python前向算法代码预测预测描述维特比算法python维特比算法代码学习EM算法实例理解baum-welch算法的思路python代码baum-w

    2022年10月22日
    1
  • RC522(RFID模块)实践总结

    此次使用RC522模块和S50卡实现近场通讯功能(开发板与RC522通讯方式为硬件SPI),就实践过程中的一些知识点进行总结:RC522模块和M1卡要点介绍;驱动代码;出现问题及解决方法;1.RC522模块和M1卡要点介绍:MFRC522简化功能框图;MFRC522与主机SPI通讯引脚配置;MFRC522与M1卡的通讯原理;M1卡存储结构与指令;MFRC522简化功能框图…

    2022年4月5日
    250
  • Oracle 19c之RPM安装「建议收藏」

    Oracle 19c之RPM安装「建议收藏」Oracle19c,或者说是Oracle12.2.0.3,是12c中稳定的版本,就像Oracle11.2.0.4,是值得让客户做出升级决策,从Oracle支持的版本…

    2022年6月9日
    77
  • java常见面试题及答案 11-20(JVM)

    11.JVM内存分哪几个区,每个区的作用是什么?java虚拟机主要分为以下一个区:方法区:1.有时候也成为永久代,在该区内很少发生垃圾回收,但是并不代表不发生GC,在这里进行的GC主要是对方法区里的常量池和对类型的卸载2.方法区主要用来存储已被虚拟机加载的类的信息、常量、静态变量和即时编译器编译后的代码等数据。3.该区域是被线程共享的。4.方法区里有

    2022年4月13日
    30
  • checkbox选中和不选中 jqu_jquery checkbox 选中不选中

    checkbox选中和不选中 jqu_jquery checkbox 选中不选中展开全部$(function(){//动态绑定默认状态//$(“#ck”).attr(“checked”,true)//选中//$(“#ck”).attr(“checked”,false)//未选中//点击判断选中还是未选中$(“#ck”).click(function(){if($(this).is(“:checked”)){alert(“选中”);}else{alert…

    2022年6月30日
    20

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号