1.简介
Wireshark是一款非常著名的网络嗅探器,它的前身是Ethereal。Wireshark是一款免费的软件,只需要从官网下根据不同的系统(window,linux等)下载其对应的安装文件即可。
2.安装
window下安装Wireshark,只需要猛戳"next"即可,并且当出现是否需要安装winPcap时,需要点击确认(如果你的电脑之前已经安装有winPcap,建议还是安装Wireshark自带的winPcap,防止出现不兼容的情况)。
linux获取源代码包(或者使用apt-get,rpm等),然后解压缩,使用root权限执行"./configure",然后安装一般方法安装即可。
3.抓包
打开Wireshark,选择Capture,然后选择Interface,选择你需要监听的网卡(如下图所示)
然后单击start,Wireshark就会开始抓包,如果你想停止的话,选择Capture下的stop就行了,得到如下结果。
4.过滤器分类
使用3中的步骤抓到的包很多,不便于分析,这时候就要用到过滤器了。Wireshark主要提供一下两种过滤器:
1.捕获过滤器,当进行数据包捕获时,只有那些满足给定的包含/排除规则的数据包才会被捕获。
2.显示过滤器,当已经捕获到一个数据包集合时,根据指定的规则显示某些数据包,隐藏其他数据包。
5.捕获过滤器
点击Capture->Interface->Option,在"Capture Flter"右边填入过滤表达式,然后点击start即可,如下图所示。
过滤表达式使用的是BPF(Berkeley Packet Filter)语法,引文大多数网络嗅探器都依赖于BPF的libpcap/winpcap库。BPF语法中一个过滤表达式包含多个原语,这些原语通过操作符(与 &&,或 ||,非 !)来进行连接,组成更为高级的表达式。每个原语包含一个或者多个限定词,然后跟一个名字或者数字。典型的BPF限定词如下,
Type 指出名字或者数字所代表的意义 host、net、port
Dir 指明传输方向是前往还是来自名字或数字 src、dst
Proto 限定要匹配的协议 ether、ip、tcp、udp、http、ftp
这样就可以自定义规则了,如"tcp src 192.168.0.1 && port 80"表示只捕获基于tcp协议下,来自源主机192.168.0.1且端口号为80的数据包。还有一些更为高级的过滤规则,如"icmp[0]==3"表示只捕获目标不可达的ICMP数据包,因为这样的数据包的首字节为3(不可达的标志)。更多的规则需要根据具体的实际情况来分析讨论了。
6.显示过滤器
过滤表达式直接在主窗口中的Filter中填写,然后点击apply即可。点击clear和save可以相应的删除和保存过滤表达式。可以点击Expression,选择条件的名称(Field Name)、关系(Relation)以及Value(可以使用预定义的或者自己设置的),然后点击ok就行了。
也可以自己写表达式,如"ip.addr==192.168.0.1 or ip.addr==192.168.0.2",操作符有等于(==)、不等于(!=)、大于(>)、小于(<)、小于等于(<=)、大于等于(>=)。相邻的表达式使用and、or、xor、not来连接,从而形成高级的表达式。
7.保存过滤器
保存一个自定义的捕获过滤器:Capture->Capture Filters,点击New,在Filter Name给过滤器起个名字,在Filter String中输入过滤器表达式,最后点击Save即可。
保存一个自定义的显示过滤标签:Analyze->Dispaly Filter,点击New,在Filter Name给过滤器起个名字,在Filter String中输入过滤器表达式,最后点击Save即可。
Wireshark有很多内置的过滤器,在自定义过滤器时,可能会用到它们。