wireshark 抓包工具使用

wiresark 显示过滤器使用方法

Wireshark 提供了两种过滤器

  • 捕获过滤器 :在抓包之前就设定好过滤条件,然后只抓取符合条件的数据包。
  • 显示过滤器 :在已捕获的数据包集合中设置过滤条件,隐藏不想显示的数据包,只显示符合条件的数据包。

这两种过滤器所使用的语法是完全不同的,捕捉网卡数据的其实并不是 Wireshark,而是 WinPcap,要按 WinPcap 的规则来,显示过滤器就是 Wireshark 对已捕捉的数据进行筛选。

显示过滤器中常用的关系计算符号

符号 说明 示例
eq
==
等于 ip.src==10.10.10.10
ip.src eq 10.10.10.10
ne
!=
不等于 ip.src!=10.10.10.10
ip.src ne 10.10.10.10
gt
>
大于
lt
<
小于
ge
>=
大于等于
le
<=
小于等于
contains 包含 http.host contains com

显示过滤器中常用的逻辑计算符号

符号 说明 示例
and
&&
http.host contains com && ip.src == 44.199.163.86
http.host contains com and ip.src == 44.199.163.86
or
||
not
!

常用示例

针对 IP 过滤

  • 对源地址进行过滤

ip.src == 192.168.0.1

  • 对目的地址进行过滤

ip.dst == 192.168.0.1

  • 对源地址或者目的地址进行过滤

ip.addr == 192.168.0.1

  • 如果想排除以上的数据包,只需要将其用括号囊括,然后使用 ! 即可

!(ip.addr == 192.168.0.1)

针对协议过滤

针对某种协议的数据包,表达式很简单仅仅需要把协议的名字(必须小写)输入即可

常见协议:
tcp
udp
arp
icmp
http
smtp
ftp
dns
msnms
ip
ssl
oicq
bootp

针对端口过滤

  • 捕获某一端口的数据包(以 tcp 协议为例)

tcp.port == 80

  • 捕获多端口的数据包,可以使用 and 来连接,下面是捕获高于某端口的表达式(以 udp 协议为例)

udp.port >= 2048

针对 http 请求的一些过滤实例

  • 过滤出请求地址中包含 user 的请求,不包括域名

http.request.uri contains "User"

  • 精确过滤域名

http.host==baidu.com

  • 模糊过滤域名

http.host contains "baidu"

  • 过滤请求的 content_type 类型

http.content_type =="text/html"
-过滤 http 请求方法
http.request.method=="POST"

  • 过滤 tcp 端口

tcp.port==80
http && tcp.port==80 or tcp.port==5566

  • 过滤 http 响应状态码

http.response.code==302

  • 过滤含有指定 cookie 的 http 数据包

http.cookie contains "userid"