[学习笔记]WireShark Filter应用简介

  • 2014-10-11
  • 0

WireShark使用过程中,最常见的操作莫过于设置过滤器了.当然你可以通过Filter Express点击鼠标来选择过滤器表达式,也可以更快捷的在Express编辑框中直接输入来进行配置。

0×01 常见表达式运算符

给一张图吧,比较直观.


is present :存在

==、!=、<、>、<=、>= :等于,不等…类推,==也用eq代替

contains :包含

matches :匹配

and,or,not :&& || ! 逻辑语,逻辑或,逻辑非

0×02 表达式构成

一般是的结构是 Protocal.Properties == XXX

也可以使用语法判断,在编写过滤脚本时能用到.

0×03 常规应用实例

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)

当遇到具体协议的具体属性不明晰时可以查看手册,但一般都是英文简略缩写,所以很好理解.

0×04 表达式语法附录

主要是整理了一些协议或者表达式格式的常见用法

[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的支持.

未尽错误之处还望各位指正. hv fun ;)