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"