3. 过滤器(BPF语言)的使用

         主要介绍一下在tcpdump中的过滤器使用,因为懂了这个可以得心应手的使用wireshark了。

         从简单的开始,BPF语言主要有一个标志或者数字和限定词组成,限定词有三种:

          第一种:指定类型

          host, 定义抓取哪个IP地址(也可以给它mac地址,格式是00:00:00:00:00:00)的数据包,比如我想抓有关192.168.0.148这个IP地址的数据包,那么写成tcpdump host 192.168.0.148, host是限定词,192.168.0.148是标志。这条命令会抓取从发出或者向192.168.0.148发送的数据包。

          net, 定义抓取某个网络的数据包,给出网络号行了,它根据给的网络号字节数是1,2,3来判断A类地址,B类地址或者C类地址,比如tcpdump net 10.1.1 ,它认为这是一个C类地址。

port,指定端口,比如tcpdump host and port 22, 这是抓端口为22的数据包,不管是TCP还是UDP的,这里我稍微早一点的给出了逻辑操作,and J,如果只想抓TCP的,那么可以写tcpdump host 192.168.0.148 and tcp port 22。

portrange,顾名思义,这个是指定端口范围的,用连字符”-”指定范围,比如tcpdump port 1025-8080

         第二种:指定方向

我们之前的命令都是说“这条命令会抓取从192.168.0.148发出或者向192.168.0.148发送”,所以,如果指向抓从发出的数据包可以使用限定词src, 命令:tcpdump src host 192.168.0.148,反过来,想抓发向192.168.0.148的数据包,使用限定词dst,命令:tcpdump dst host 192.168.0.148。

        第三种:指定协议

我们知道网络协议有N种。。。我列一下常用的几种,其他的可以去google一下J

ether和fddi, 以太网协议

tr, TR协议

ip, IP协议

ip6, IPv6协议

arp,  ARP协议

好了,后还需要注意的是逻辑运算,and, or, not(与,或,非),上面已经有一个例子了, 这里不再罗嗦了,和普通的编程语言没有什么不同。

 

除此之外,还有更加牛X的功能,比如指定TCP中的某个标识位是什么,这种应用我一般很少用,不再罗嗦了。