wireshark 抓包过滤器使用

本文详细介绍了Wireshark的抓包过滤器和显示过滤器的使用方法,包括BPF语法、过滤条件如IP、MAC地址、端口及协议等,并提供了多个实例帮助理解。

整理自陈鑫杰老师的wireshark教程课

wireshark 抓包过滤器

过滤器分为抓包过滤器和显示过滤器,抓包过滤器会将不满足过滤条件的包丢弃,只保留满足条件的包,而显示过滤器则是对已抓取的包做过滤,过滤出满足条件的包。

显示过滤器可以保留全部的报数据,方便后期做流量分析,而抓包过滤器保留的数据有限,后期分析有局限性。

一、抓包过滤器


wireshark抓包是基于其内部的libpcap/wincap库

打开软件时直接在filter栏输入过滤规则即可,如下以wireshark2.6举例

Capture --> Options

1549952345994

1549952300718

使用的是BFP语法(Berkeley Packet Filter),一共四个元素:

  • 类型(Type)
    • host、net、port
  • 方向(Dir)
    • src、dst
  • 协议(Proto)
    • ether、ip、tcp、udp、http、ftp
  • 逻辑运算符
    • &&
    • ||
    • !

示例:

抓取源地址为192.168.1.1,目的端口为80的流量

src host 192.168.1.1 && dst port 80

抓取192.168.1.1和192.168.1.2的流量

host 192.168.1.1 || host 192.168.1.2

不要抓取广播包

! broadcast
过滤mac地址:
ether host 00:88:ca:86:f8:0d
ether src host 00:88:ca:86:f8:0d
ether dst host 00:88:ca:86:f8:0d
过滤IP地址:
host 192.168.1.1
src host 192.168.1.1
dst host 192.168.1.1
过滤端口:
port 80
!port 80
dst port 80
src port 80
过滤协议:
arp
icmp

结合逻辑符号综合过滤

host 192.168.1.1 && port 8080

二、显示过滤器


使用显示过滤器需先用软件进行抓包,然后在软件filter栏输入过滤规则:

1549952508341

比较符:
  • == 等于
  • != 不等于
  • > 大于

  • < 小于
  • >= 大于等于
  • <= 小于等于

逻辑操作符:
  • and 两个条件同时满足
  • or 其中一个条件被满足
  • xor 有且仅有一个条件被满足
  • not 没有条件被满足
ip地址:
  • ip.addr ip地址
  • ip.src 源ip
  • ip.dst 目标ip
端口过滤:
  • tcp.port
  • tcp.srcport
  • tcp.dstport
  • tcp.flags.syn 过滤包含tcp的syn请求的包
  • tcp.flags.ack 过滤包含tcp的ack应答的包
协议过滤:

arp、ip、icmp、udp、tcp、bootp、dns等

示例:

过滤IP地址:

ip.addr == 192.168.1.1   过滤该地址的包
ip.src == 172.16.1.1  过滤源地址为该地址的包

过滤端口:

tcp.port == 80 过滤tcp中端口号为80的包
tcp.flags.syn == 1 过滤syn请求为1的包

结合逻辑符综合过滤:

ip.src == 192.168.1.1 and ip.dst == 172.16.1.1

转载于:https://www.cnblogs.com/laoxiajiadeyun/p/10365073.html

### Wireshark 抓包过滤器 使用方法与语法 Wireshark 是一种功能强大的网络协议分析工具,它允许用户通过捕获和分析数据包来深入了解网络通信。抓包过滤器Wireshark 中用于在捕获过程中筛选数据包的工具[^1]。以下将详细介绍其使用方法、语法以及示例。 #### 1. 抓包过滤器的基本概念 抓包过滤器(Capture Filter)是在数据包捕获之前应用的规则集合,它决定了哪些数据包会被实际捕获并存储到内存中。由于抓包过滤器直接影响捕获过程,因此它有助于减少不必要的数据包捕获,从而节省系统资源[^2]。 #### 2. 抓包过滤器的语法 抓包过滤器的语法基于 Berkeley Packet Filter (BPF) 的表达式语言。以下是其主要规则: - **逻辑运算符**:`and`, `or`, `not` 可以用来组合多个条件。 - **地址类型**:可以指定源地址 (`src`) 或目标地址 (`dst`)。 - **协议类型**:支持多种协议,如 `tcp`, `udp`, `icmp` 等。 - **端口号**:可以通过 `port` 指定特定端口或端口范围。 #### 3. 示例 以下是一些常用的抓包过滤器示例: ```bash # 捕获所有 TCP 数据包 tcp # 捕获来自特定 IP 地址的数据包 src host 192.168.1.100 # 捕获发送到特定 IP 地址的数据包 dst host 192.168.1.100 # 捕获特定端口上的数据包 port 80 # 捕获来自特定 IP 地址且目标端口为 443 的数据包 src host 192.168.1.100 and dst port 443 # 捕获非 ICMP 协议的数据包 not icmp ``` 以上示例展示了如何通过不同的条件组合来实现精确的数据包捕获[^1]。 #### 4. 抓包过滤器显示过滤器的区别 抓包过滤器显示过滤器虽然都用于筛选数据包,但它们的应用场景不同: - **抓包过滤器**:在捕获过程中筛选数据包,减少捕获的数据。 - **显示过滤器**:在捕获完成后筛选数据包,不影响捕获过程[^2]。 ### 注意事项 在使用抓包过滤器时,需注意以下几点: - 抓包过滤器的语法较为严格,错误的表达式可能导致无法捕获任何数据包。 - 如果网络较大,建议优先使用抓包过滤器减少内存占用。 ```python # 示例:使用 Python 调用 tshark 工具进行抓包过滤 import subprocess command = "tshark -i eth0 -f 'tcp and port 80'" process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) output, error = process.communicate() if error: print(f"Error: {error.decode('utf-8')}") else: print(f"Captured packets: {output.decode('utf-8')}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值