查看: 39596|回复: 17

wireshark 过滤法则

[复制链接]
发表于 2009-10-16 17:42:19 | 显示全部楼层 |阅读模式
本帖最后由 久久 于 2009-10-16 18:08 编辑

最近在学习wireshark这个强大的网络分析工具,在这里给大家分享一下wireshark的过滤法则:

一、IP过滤:包括来源IP或者目标IP等于某个IP
比如:ip.src addr==192.168.0.208  or ip.src addr eq 192.168.0.208 显示来源IP
        ip.dst addr==192.168.0.208  or ip.dst addr eq 192.168.0.208 显示目标IP

二、端口过滤:
比如:tcp.port eq 80 // 不管端口是来源的还是目标的都显示
        tcp.port == 80
        tcp.port eq 2722
        tcp.port eq 80 or udp.port eq 80
        tcp.dstport == 80 // 只显tcp协议的目标端口80
        tcp.srcport == 80 // 只显tcp协议的来源端口80

过滤端口范围
tcp.port >= 1 and tcp.port <= 80

三、协议过滤:tcp
udp
arp
icmp
http
smtp
ftp
dns
msnms
ip
ssl
等等
排除ssl包,如!ssl 或者  not ssl

四、包长度过滤:
比如:
udp.length == 26 这个长度是指udp本身固定长度8加上udp下面那块数据包之和
tcp.len >= 7  指的是ip数据包(tcp下面那块数据),不包括tcp本身
ip.len == 94 除了以太网头固定长度14,其它都算是ip.len,即从ip本身到最后
frame.len == 119 整个数据包长度,从eth开始到最后

五、http模式过滤:
例子:
http.request.method == "GET"
http.request.method == "POST"
http.request.uri == "/img/logo-edu.gif"
http contains "GET"
http contains "HTTP/1."

// GET包
http.request.method == "GET" && http contains "Host: "
http.request.method == "GET" && http contains "User-Agent: "
// POST包
http.request.method == "POST" && http contains "Host: "
http.request.method == "POST" && http contains "User-Agent: "
// 响应包
http contains "HTTP/1.1 200 OK" && http contains "Content-Type: "
http contains "HTTP/1.0 200 OK" && http contains "Content-Type: "
一定包含如下
Content-Type:

六、连接符 and / or

七、表达式:!(arp.src==192.168.1.1) and !(arp.dst.proto_ipv4==192.168.1.243)



总之,Ethereal的包过滤规则强大而复杂,需要多多练习,实践,而且要对网络协议的基础知识相当熟悉,才能运用得得心应手哈。

这里只是暂且初学了几条,可以在一般情况下抓网络的数据包,并且拿来分析。还有更多的知识留待以后学习。

评分

1

查看全部评分

回复

使用道具 举报

发表于 2009-10-17 08:55:39 | 显示全部楼层
介绍的很详细啊,顶一个,楼主辛苦。
回复

使用道具 举报

发表于 2009-10-20 21:59:46 | 显示全部楼层
有arp的过滤法则么-------17个字节- -!
回复

使用道具 举报

发表于 2009-10-22 11:53:55 | 显示全部楼层
好 。就需要这些普及的介绍。 以便可以直接参考!
回复

使用道具 举报

发表于 2009-10-23 15:10:46 | 显示全部楼层
不错,wireshark匹配规则很强大。
还有一个规则应用是关于数据包内容的字节匹配的。
例如:
//匹配TCP的payload(TCP的实际数据内容),前6个字节为 E3 11 00 00 00 48 (电驴协议)
//20是TCP头部的长度,21-~为TCP的有效数据
TCP[20:6] == E3:11:00:00:00:56  and TCP[29] == 54

还可以matches匹配一些正则表达式


//匹配UDP的payload(UDP的实际数据内容),匹配 第1和第2字节分别是0xF1、0x0; 第4和第5字节分别为0x00、0x00 (电驴协议)
//8是UDP的头部长度,8-~为UDP包的有效数据
UDP[8:2] == F1:0D and UDP[10:2] ==00:00

评分

1

查看全部评分

回复

使用道具 举报

发表于 2009-10-29 22:42:15 | 显示全部楼层
wireshark的过滤规则比较难搞
我在Win下用惯了那种很傻瓜式的过滤设置 换用wireshark还真有点不适应
很多过滤规则都不会 还请各位高手多多指教
回复

使用道具 举报

发表于 2009-10-30 19:00:31 | 显示全部楼层
目前我只会用最简单的一个:
host 10.21.11.86 and 10.21.11.38
用来只抓取这两台主机之间的数据包
回复

使用道具 举报

发表于 2009-11-16 00:02:47 | 显示全部楼层
本帖最后由 w_dalu 于 2009-11-16 00:05 编辑
目前我只会用最简单的一个:
host 10.21.11.86 and 10.21.11.38
用来只抓取这两台主机之间的数据包
lofeng 发表于 2009-10-30 19:00


wireshark有2种不通的过滤方式。(我认为 是这样的)
1、在抓包前(Capture Filter),设置过滤规则,如图
host 10.0.9.132 and port 80 and tcp
这个是过滤http(默认的http)
这种,我目前支持host等简单的规则,想一些复杂的就不支持了。
2、抓包后(Filter),设置的过滤规则,这种不支持host ip,但是这种才真正是wireshark的过滤规则,是libpcap的过滤器语法规则。

上面介绍的就是第二种。
回复

使用道具 举报

发表于 2009-12-23 10:30:30 | 显示全部楼层
wireshark的两种过滤方式有很大不同,一种是抓包时候的过滤,也就是说,仅仅抓你需要的包。
而第二种过滤是显示过滤,就是说仅显示你需要的包,而其他包实际都还是存在的,只是不显示而已。所以你看过滤结果,包的序号就不是连续的了。

另外,显示过滤也是支持主机的,你可以用ip.addr == 10.0.9.132来显示所有10.0.9.132的包。
回复

使用道具 举报

发表于 2010-1-27 09:45:32 | 显示全部楼层
楼主介绍的很好啊,蛮有用处啊。
回复

使用道具 举报

发表于 2012-8-10 18:12:17 | 显示全部楼层
写的不错  收藏啦!
回复

使用道具 举报

发表于 2013-5-3 09:06:26 | 显示全部楼层
感觉学会了过滤器,wireshark就学会了大半
回复

使用道具 举报

您需要登录后才可以回帖 登录 | CSNA会员注册

本版积分规则

快速回复 返回顶部 返回列表