1.针对IP过滤的例子
抓取满足源地址的包: ip.src == 192.168.0.1
抓取满足目标地址的包: ip.dst == 192.168.0.1
抓取满足源地址或目标地址的包: ip.addr == 192.168.0.1,或者ip.src == 192.168.0.1 or ip.dst == 192.168.0.1
2.针对Port过滤的例子
捕获单一端口: tcp.port == 80
捕获范围端口: udp.port >= 2048 and upd.port <= 65000
3.针对Protocal过滤的例子
捕获单一协议: http
捕获多种协议: http or telnet
4.针对包长度和内容过滤的例子
捕获特定长度的包: http.content_length <=100
捕获特定内容的包: http.request.uri matches “blackh4t”
5.高级过滤的使用
每个都可以加入逻辑运算符组成高级表达式
如:
(src host 10.4.1.12 or src net 10.6.0.0/16) and tcp dst portrange 200-10000 and dst net 10.0.0.0/8
!(arp.src==192.168.1.1) and !(arp.dst.proto_ipv4==192.168.1.243)
当遇到具体协议的具体属性不明晰时可以查看手册,但一般都是英文简略缩写,所以很好理解.
表达式语法附录
主要是整理了一些协议或者表达式格式的常见用法 www.2cto.com
[src|dst] host <host> 尖括号里的是一个主机IP或主机名字,用src、dst来设定这是目的地址或源地址。 这个选项能过滤主机IP和名字
ether [src|dst] host <ehost> 尖括号里的是一个网络地址,用src、dst来设定这是目的地址或源地址。
gateway host <host> <host> 是一个网关,抓取流过<host> 的数据包,但这些数据包的目的地址和源地址都不是<host>。
[src|dst] net <net> [{mask <mask>}|{len <len>}]
<net>表示一个网络地址,可以用src、dst来表示这个网络是目的地址还是源地址的数据包。如果没有”src/dst”,表示全部数据
包。可以选择加上子网掩码或使用无类型域间选路(CIDR)的方式。
[tcp|udp] [src|dst] port <port> [tcp|udp]是选择抓取的协议类型,<port>指定端口。需要注意的是,[tcp|udp]必需在[src|dst]之前。
less|greater <length> 抓取碎片数据包或指定长度的数据包。less 与greater 分别对应小包与大包。
ip|ether proto <protocol> 在数据链路层上,在指定的IP地址或网络地址(ip|ether)上抓取指定协议<protocol>的数据包。
ether|ip broadcast|multicast 在指定的网络地址或IP地址上抓取广播包或组播包。
0×05 补充
Ettercap的过滤脚本语法基本都大同小异,除此之外常见的全功能多协议的嗅探工具还有OmniPeek,老牌的Sniffer
Pro等等..另外推一个小工具,因为对于特定进程的包捕获,我也没找到特别好的语法,一般是结合Netstat之类的命令找出对应进程的PID和端口再
进行过滤器配置,而Appsniffer这个小工具很好的解决了这个问题,其需要.net的支持.