自学内容网 自学内容网

wireshark抓包语法

主要功能

Wireshark 的主要功能包括:

  • 实时数据捕获:能够捕获实时流量并对其进行分析。
  • 数据包解码:支持数百种网络协议,能够解码并显示各种协议的详细信息。
  • 过滤功能:提供强大的过滤功能,可以根据特定条件筛选数据包。
  • 数据包重组:能够重组和分析分片的数据包,以查看完整的通信内容。
  • 统计和图表:提供多种统计和图表功能,帮助用户进行流量分析和趋势预测。

抓包过滤基础

抓包过滤是指在数据包捕获和分析过程中,使用特定的规则和条件,筛选出满足条件的数据包。Wireshark 提供了两种主要的过滤器类型:显示过滤器和捕获过滤器。

  • 显示过滤器:用于在捕获后筛选和显示特定的数据包。显示过滤器是在数据包已经被捕获之后应用的,它不会影响实际的数据包捕获过程。
  • 捕获过滤器:用于在捕获过程中筛选数据包。捕获过滤器是在数据包捕获之前应用的,它会直接影响捕获到的数据包数量和内容。

显示过滤器

显示过滤器是 Wireshark 中用于在数据包捕获之后,根据特定条件筛选和显示数据包的工具。显示过滤器的语法相对简单,使用字段名、运算符和值来构建过滤条件。

显示过滤器的基础语法包括:

  • 字段名:指定要过滤的数据包字段,如 ip.addrtcp.port 等。
  • 运算符:用于比较字段值的运算符,如 ==!=><>=<= 等。
  • :与字段名进行比较的值,可以是数值、字符串、布尔值等。

示例:

  • 过滤特定 IP 地址的数据包:

ip.addr == 192.168.75.234

  • 过滤特定端口的数据包:

tcp.port == 80

  • 过滤特定协议的数据包:

http

常用的显示过滤器

一些常用的显示过滤器包括:

1.IP 地址过滤
  • 过滤特定**源 IP **地址的数据包:

ip.src == 192.168.75.234

  • 过滤特定目的 IP 地址的数据包:

ip.dst == 192.168.75.231

  • 过滤**特定 IP **地址的数据包(无论源还是目的):

ip.addr == 192.168.75.234

2.端口号过滤
  • 过滤特定源端口的数据包:

tcp.srcport == 80

  • 过滤特定目的端口的数据包:

tcp.dstport == 443

  • 过滤特定端口的数据包(无论源还是目的):

tcp.port == 80

3.协议过滤
  • 过滤 **HTTP **协议的数据包:

http

  • 过滤 **TCP **协议的数据包:

tcp

  • 过滤 ICMP 协议的数据包:

icmp

4.排除特定流量
  • 排除 ICMP 协议的数据包:

!icmp

过滤 HTTP 流量

HTTP 流量是网络分析中常见的一部分,通过显示过滤器可以筛选和分析特定的 HTTP 请求和响应。

1.过滤所有 HTTP 流量

http

2.过滤特定主机的 HTTP 流量

http.host == "www.gxaedu.com"

3.过滤特定 URI 的 HTTP 请求

http.request.uri contains "/login"

4.过滤特定方法的 HTTP 请求

http.request.method == "POST"

5.过滤特定状态码的 HTTP 响应

http.response.code == 200

过滤 DNS 流量

DNS 流量也是网络分析中常见的内容,通过显示过滤器可以筛选和分析 DNS 查询和响应。

1.过滤所有 DNS 流量

dns

2.过滤特定域名的 DNS 查询

dns.qry.name == "example.com"

3.过滤特定类型的 DNS 查询

dns.qry.type == 1 // A记录查询

4.过滤特定响应码的 DNS 响应

dns.flags.rcode == 0 // No error

5.过滤特定 IP 地址的 DNS 响应

dns.a == 192.168.1.1

过滤 TCP 流量

TCP 是传输层的主要协议之一,通过显示过滤器可以筛选和分析特定的 TCP 会话和流量。

1.过滤所有 TCP 流量

tcp

2.过滤特定源端口的 TCP 流量

tcp.srcport == 80

3.过滤特定目的端口的 TCP 流量

tcp.dstport == 443

4.过滤特定 TCP 标志位的流量

tcp.flags.syn == 1 // SYN 包

5.过滤特定 TCP 会话的流量

tcp.stream eq 1

过滤 UDP 流量

UDP 是传输层的另一主要协议,通过显示过滤器可以筛选和分析特定的 UDP 会话和流量。

1.过滤所有 UDP 流量

udp

2.过滤特定源端口的 UDP 流量

udp.srcport == 53

3.过滤特定目的端口的 UDP 流量

udp.dstport == 123

4.过滤特定 UDP 会话的流量

udp.stream eq 1

过滤 ICMP 流量

ICMP 是网络层的重要协议,通过显示过滤器可以筛选和分析特定的 ICMP 报文。

1.过滤所有 ICMP 流量

icmp

2.过滤特定类型的 ICMP 报文

icmp.type == 8 // Echo Request

3.过滤特定代码的 ICMP 报文

icmp.code == 0

4.过滤特定 ID 的 ICMP 报文

icmp.ident == 0x1234

5. 过滤特定序列号的 ICMP 报文

icmp.seq == 0x1

显示过滤器的高级用法

显示过滤器还支持更复杂的条件组合和表达式,例如:

1.多个条件的组合

  • 过滤特定源 IP 和目标端口的数据包:

ip.src == 192.168.3.9 && tcp.dstport == 8080

2.范围过滤

  • 过滤帧长度在 100 到 200 字节之间的数据包:

frame.len >= 100 && frame.len <= 200

3.使用正则表达式

  • 过滤 URI 包含 "login" 的 HTTP 请求:

http.request.uri matches ".*login.*"

4.复杂逻辑过滤

  • 过滤源 IP 为 192.168.1.1 且目的端口为 80,或源 IP 为 192.168.1.2 且目的端口为 443 的数据包:

(ip.src == 192.168.3.9 && tcp.dstport == 80) || (ip.src == 192.168.3.66 && tcp.dstport == 443)

捕获过滤器

捕获过滤器在数据包捕获过程中起作用,通过预先定义的条件,仅捕获满足条件的数据包。捕获过滤器使用 Berkeley Packet Filter (BPF) 语法,能够在捕获时减少不必要的数据包,提升捕获效率。

捕获过滤器的基础语法包括:

  • 字段名:指定要过滤的数据包字段,如 hostportnet 等。
  • 运算符:用于比较字段值的运算符,如 ==!=><>=<= 等。
  • :与字段名进行比较的值,可以是数值、字符串、布尔值等。

💡捕获过滤器最终的效果和显示过滤器差不多,所以下面瑞哥的截图会少点,大家可以自己尝试。

示例:

  • 过滤特定 IP 地址的数据包:

host 192.168.3.9

  • 过滤特定端口的数据包:

port 80

  • 过滤特定协议的数据包:

tcp

常用的捕获过滤器

一些常用的捕获过滤器包括:

  1. IP 地址过滤
  • 过滤特定 IP 地址的数据包:

host 192.168.1.1

  • 过滤特定源 IP 地址的数据包:

src host 192.168.1.1

  • 过滤特定目的 IP 地址的数据包:

dst host 192.168.3.66

2.端口号过滤

  • 过滤特定端口的数据包:

port 80

  • 过滤特定源端口的数据包:

src port 80

  • 过滤特定目的端口的数据包:

dst port 443

3.协议过滤

  • 过滤 TCP 协议的数据包:

tcp

  • 过滤 UDP 协议的数据包:

udp

  • 过滤 ICMP 协议的数据包:

icmp

4.排除特定流量

  • 排除特定 IP 地址的数据包:

not host 192.168.1.1

  • 排除特定端口的数据包:

not port 80

捕获 HTTP 流量

通过捕获过滤器筛选 HTTP 流量可以减少捕获的数据量,尤其是在只需要分析特定的 HTTP 请求和响应时。

1.捕获所有 HTTP 流量

tcp port 80

2.捕获特定主机的 HTTP 流量

tcp port 80 and host www.example.com

捕获 DNS 流量

通过捕获过滤器筛选 DNS 流量,可以有效地捕获特定的 DNS 查询和响应。

1.捕获所有 DNS 流量

udp port 53

2.捕获特定域名的 DNS 查询

udp port 53 and host example.com

捕获 TCP 流量

通过捕获过滤器筛选 TCP 流量,可以捕获特定会话和特定条件下的 TCP 报文。

1.捕获所有 TCP 流量

tcp

2.捕获特定源端口的 TCP 流量

src port 80

3.捕获特定目的端口的 TCP 流量

dst port 443

4.捕获特定 TCP 标志位的流量

tcp[tcpflags] & tcp-syn != 0 // SYN 包

捕获 UDP 流量

通过捕获过滤器筛选 UDP 流量,可以捕获特定会话和特定条件下的 UDP 报文。

1.捕获所有 UDP 流量

udp

2.捕获特定源端口的 UDP 流量

src port 53

3.捕获特定目的端口的 UDP 流量

dst port 123

捕获 ICMP 流量

通过捕获过滤器筛选 ICMP 流量,可以捕获特定类型和特定条件下的 ICMP 报文。

1.捕获所有 ICMP 流量

icmp

2.捕获特定类型的 ICMP 报文

icmp[icmptype] == icmp-echo

3.捕获特定代码的 ICMP 报文

icmp[icmpcode] == 0

捕获过滤器的高级用法

捕获过滤器支持更复杂的条件组合和表达式,例如:

1.多个条件的组合

  • 过滤源 IP 和目标端口同时满足的数据包:

src host 192.168.1.1 and dst port 80

2.范围过滤

  • 过滤特定网段的数据包:

net 192.168.1.0/24

3.复杂逻辑过滤

  • 过滤源 IP 为 192.168.1.1 且目标端口为 80,或源 IP 为 192.168.1.2 且目标端口为 443 的数据包:

(src host 192.168.1.1 and dst port 80) or (src host 192.168.1.2 and dst port 443)

4.字段存在检查

  • 过滤存在特定字段的数据包:

tcp[tcpflags] & tcp-syn != 0

高级过滤技巧

Wireshark 过滤器不仅可以用于简单的条件筛选,还支持更复杂的逻辑运算和组合,从而实现更精细的过滤。

组合过滤条件

通过组合多个过滤条件,可以实现更复杂的筛选逻辑。

1.AND 逻辑组合

  • 过滤源 IP 为 192.168.1.1 且目的端口为 80 的数据包:

ip.src == 192.168.1.1 && tcp.dstport == 80

2.OR 逻辑组合

  • 过滤源 IP 为 192.168.1.1 或目的端口为 443 的数据包:

ip.src == 192.168.1.1 || tcp.dstport == 443

3.混合逻辑组合

  • 过滤源 IP 为 192.168.1.1 且(目的端口为 80 或 443)的数据包:

ip.src == 192.168.1.1 && (tcp.dstport == 80 || tcp.dstport == 443)

使用正则表达式

Wireshark 的显示过滤器支持正则表达式,可以用来匹配更复杂的字符串模式。

1.匹配 HTTP 请求 URI 中包含特定字符串

  • 过滤 URI 包含 "login" 的 HTTP 请求:

http.request.uri matches ".*login.*"

2.匹配 HTTP 头部中的特定字段

  • 过滤 User-Agent 包含 "Mozilla" 的 HTTP 请求:

http.request.header.User-Agent matches ".*Mozilla.*"

字段存在检查

通过检查字段是否存在,可以筛选出包含特定字段的数据包。

1.检查 IP 选项字段是否存在

  • 过滤包含 IP 选项字段的数据包:

ip.options

2.检查 TCP 选项字段是否存在

  • 过滤包含 TCP 选项字段的数据包:

tcp.options

使用偏移量和掩码

Wireshark 过滤器支持通过偏移量和掩码筛选特定位的数据。

1.过滤 TCP 标志位中的 SYN 包

  • 使用位运算过滤 TCP SYN 包:

tcp.flags & 0x02 != 0

2.过滤特定字节偏移量的数据包

  • 过滤 TCP 数据包中包含特定数据模式的包:

tcp[13] & 0x02 != 0


原文地址:https://blog.csdn.net/qq_59468567/article/details/140554902

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!