使用wireshark提供的过滤功能,可方便查看、分析自己想要的数据。wireshark的过滤器,分为捕获过滤器和显示过滤器。
捕获过滤器:当进行数据包捕获时,只有那些满足给定的包含/排除表达式的数据包会被捕获。
显示过滤器:该过滤器根据指定的表达式用于在一个已捕获的数据包集合中,隐藏不想显示的数据包,或者只显示那些需要的数据包。
下面分别介绍两种过滤器的使用。
捕获过滤器:当进行数据包捕获时,只有那些满足给定的包含/排除表达式的数据包会被捕获。
示例wireshark版本1.8.7
1)打开wireshark,选择Capture->Interfaces,结果如图:
2)点击上图的Option,结果如图:
3)双击你要监测的网卡,结果如图:
4)在Capture Filter一栏中输入“port 11223”,如图:
5)点击OK后,再点击“Start”,即开始捕获通过11223端口的数据包。
6)捕获结果,如图:
捕获过滤器应用于WinPacp,并使用Berkeley Packet Filter(BPF)语法。这个语法被广泛用于多种数据包嗅探软件,主要是因为大部分数据包嗅探软件都依赖于使用BPF的libpcap/WinPacp库。掌握BPF语法对你在数据包层级更深入地探索网络来说,非常关键。
上面实例中,在在Capture Filter一栏中输入“port 11223”即采用的BPF语法。
使用BPF语法创建的过滤器被称为表达式,并且每个表达式包含一个或者多个原语。每个原语包含一个或者多个限定词,然后跟着一个ID名字或者数字。
一个捕获过滤器样例
限定词 | 说明 | 例子 |
Type | 指出名字或者数字所代表的意义 | host、net、port |
Dir | 指明传输方向是前往还是来自名字或者数字 | src、dst |
Proto | 限定所要匹配的协议 | ether、ip、tcp、udp、http、ftp |
可以使用与(&&)、或(||)、非(!)三种逻辑运算符。
1. 主机名和地址过滤
示例:src host 192.168.5.6,捕获来自192.168.5.6的数据包
host PC-TEST,捕获与计算机名为PC-TEST交互的数据包
2. 端口过滤
示例:port 8080,对8080端口进行数据包捕获
!port 8080,捕获除8080端口外的所有数据包
3.协议过滤
示例:icmp,捕获icmp数据包
tcp,捕获tcp数据包
4.协议域过滤
示例:icmp[0]==3,只想要得到代表目标不可达(类型3)信息的ICMP数据包。
BPF语法提供给我们的一项强大功能,就是我们可以通过检查协议头中的每一个字节来创建给予那些数据的特殊过滤器。
举例来说,假设我们想要基于ICMP过滤器的类型域进行过滤,而类型域位于数据包的最开头也就是偏移量为0的位置,那么我们可以通过在协议限定符后输入由方括号括起的字节偏移量,在这个例子中就是icmp[0],来指定我们想在一个数据包内进行检查的位置。这样将返回一个1字节的整型值用于比较。
显示过滤器:该过滤器根据指定的表达式用于在一个已捕获的数据包集合中,隐藏不想显示的数据包,或者只显示那些需要的数据包。
显示过滤器应用于捕获时或者捕获后,告诉Wireshark只显示那些符合过滤条件的数据包。你可以在Packet List面板上方的Filter文本框中,输入一个显示过滤器(本例为ip.addr==10.25.193.12),然后点击“Apply”,如图:
显示过滤器示例
1)ip.addr==192.168.5.6,只显示192.168.5.6这个地址相关数据包
2)frame.len<=128,只查看长度小于128字节的数据包
3)http,只显示http数据包
4)ip.addr==192.168.5.6 && tcp.port==15566,只显示与192.168.5.6有关且与tcp端口15566有关的数据包
可点击Packet List面板上的Expression按钮查看所有的表达式选项,如图
可在该面板直接点击,进行表达式的书写。
此外在Packet List内输入关键字后,再输入“.”可查看可选项