显示过滤器表达式作用在在wireshark捕获数据包之后,从已捕获的所有数据包中显示出符合条件的数据包,隐藏不符合条件的数据包。显示过滤表达示在工具栏下方的“显示过滤器”输入框输入即可生效
基本过滤表达式 一条基本的表达式由过滤项、过滤关系、过滤值三项组成。
比如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中是等价的、都是可用的。
常见用显示过滤需求及其对应表达式 数据链路层-MAC地址过滤: wireshark显示过滤中过滤MAC地址/物理地址 eth.addr == 80:f6:2e:ce:3f:00 //过滤目标或源地址是80:f6:2e:ce:3f:00的数据包 eth.src == 80:f6:2e:ce:3f:00 //过滤源地址是80:f6:2e:ce:3f:00的数据包 eth.dst == 80:f6:2e:ce:3f:00 //过滤目标地址是80:f6:2e:ce:3f:00的数据包
#过滤来源MAC和目标MAC都等于A0:00:00:04:C5:84的三种写法: eth.addr == A0:00:00:04:C5:84 eth.addr == A0-00-00-04-C5-84 eth.addr eq A0:00:00:04:C5:84
网络层-IP地址过滤: #查看所有地址为:192.168.0.106的数据包(包括来源IP和目标IP) ip.addr == 192.168.1.106
#查看所有源地址为:192.168.0.106的数据包 ip.src == 192.168.0.106
#查看所有目标地址为:192.168.0.106的数据包 ip.dst == 192.168.0.1
#过滤192.168.1.0网段的数据 ip contains "192.168.1"
#过滤IPv4地址段 ip contains "192.168.1" #筛选192.168.1.0网段的数据 ip.addr == 192.168.1.0/16(源地址/目的地址) ip.src == 192.168.1.0/16(源地址) ip.dst == 192.168.1.0/16(目的地址)
传输层-协议端口过滤:
#筛选tcp协议的数据包 tcp
#筛选除tcp协议以外的数据包 !tcp
#过滤所有端口为80的数据包,这条规则是把源端口和目的端口为80的都过滤出来。 tcp.port == 80
#只过滤源端口为80的包 tcp.srcport==80
#只过滤目的端口为80的, tcp.dstport==80
应用层-关键字过滤: 直接输入应用名即可,如http、tftp、dns等应用。
#过滤http应用中的get包, http.request.method=="GET"
#过滤http应用中的post包 http.request.method=="POST"
#筛选url中包含.php的http数据包 http.request.uri contains ".php"
#筛选http协议中内容包含username的数据包 http contains "username"
#过滤http协议中含有"loginKey"字符串的数据包。 http contains "loginKey"
#在整个pcap文件中,搜索含有"xxxx"字符串的数据包。 frame contains "xxxx"
#过滤tcp协议中含有"xxxx"字符串的数据包。 tcp contains "xxxx"
http.request.uri == “/img/logo-edu.gif”
http.host == "www.admin365.cn"
特别说明:http中http.request 表示请求头中的第一行(如GET index.jsp HTTP/1.1),http.response表示响应头中的第一行(如HTTP/1.1 200 OK),其他头部都用http.header_name形式。
复合过滤表达式-逻辑条件组合筛选: 可能的值:not, and, or。 逻辑表达式汇总: && / and #逻辑与,两者都必需满足,相当于并且 || / or #逻辑或,两者满足一条即可,相当于或 ! / not #逻辑非
#过滤ip为192.168.101.8并且为http协议的 ip.src==192.168.101.8 and http
#过滤源地址为:192.168.0.106,端口号为443的所有数据包
ip.src == 192.168.0.106 and tcp.port == 443
#过滤目的地址为:116.198.202.109 ,"POST"方法的所有数据包 ip.dst==116.198.202.109 and http.request.method=="POST"
#在目地地址为:116.198.202.109 ,搜索关键字为 "username"数据包 ip.dst==116.198.202.109 and frame contains "username"
调整时间格式
调整排序
点击相应的三角符号,自动出大到小或是从小到大排序,如No排序字段或Time时间字段等 。
|