Linux tcpdump详解

目录

  • 前言:BPF伯克利包过滤器介绍
  • 1.BPF语法(tcpdump语法)
  • 2.逻辑运算符
  • 3.常用的原子条件
      • 1. 协议相关的原子条件
      • 2. 地址相关的原子条件
      • 3. 端口相关的原子条件
      • 4. 网络层和链路层(mac地址)原子条件
      • 5. 广播和多播
      • 6. VLAN 相关的原子条件
      • 7. 特定字段大小过滤
      • 8. 基于TCP标记的过滤
      • 9. ICMP 类型过滤
      • 10. MPLS 过滤
      • 11. PPPoE 过滤
      • 12. ISO OSI 过滤
      • 13. Token Ring 过滤
      • 14. 带宽过滤
      • @组合示例
  • 4.tcpdump常用选项
      • Ⅰ.基本选项
      • Ⅱ.高级选项
      • @组合选项示例
  • @综合示例
    • 详解篇
      • 示例 1:捕获特定主机的 HTTP GET 请求并保存到文件
      • 示例 2:捕获 VLAN 10 中所有的 TCP SYN 数据包,并显示详细信息
      • 示例 3:捕获所有入方向的 ICMP 数据包,并显示数据包内容
      • 示例 4:捕获所有源 MAC 地址为特定地址的 TCP FIN 数据包
      • 示例 5:捕获并显示特定 IP 地址的 UDP 流量,包括十六进制内容
      • 示例 6:捕获 HTTP POST 请求,并显示数据包内容
      • 示例 7:捕获特定端口范围的 UDP 流量,并设置捕获缓冲区大小
      • 示例 8:捕获所有 TCP 连接终止过程中的数据包(包括 FIN 和 RST 数据包)
    • 简洁篇
      • 示例 1:捕获 HTTP 和 HTTPS 流量并保存到文件
      • 示例 2:捕获特定网络内的所有 TCP 数据包,并显示详细信息
      • 示例 3:捕获并解密 IPsec 流量
      • 示例 4:捕获并实时显示所有包含特定字符串的 HTTP 流量
      • 示例 5:捕获所有带有 SYN 和 ACK 标志的 TCP 数据包
      • 示例 6:捕获特定 VLAN 中的 ICMP 数据包,并将输出显示为 ASCII 格式
      • 示例 7:捕获特定端口范围的 UDP 流量,并设置捕获缓冲区大小
      • 示例 8:捕获并显示时间戳差异的 TCP 数据包
      • 示例 9:捕获来自特定主机的 DNS 查询和响应
      • 示例 10:捕获所有广播和多播数据包,并显示链路层信息
  • 总结

前言:BPF伯克利包过滤器介绍

维基百科:https://zh.wikipedia.org/wiki/BPF Berkeley Packet Filter (BPF)
是一种用于捕获和过滤网络数据包的技术,广泛用于网络分析工具中 BPF 的主要应用
1. 网络数据包过滤   tcpdump 和 Wireshark
使用 BPF 来捕获和过滤网络数据包,只显示感兴趣的流量。 tcpdump ‘tcp port 80’
2. 入侵检测和防御 Snort 和 Suricata:使用 BPF 过滤数据包,提高入侵检测系统的效率。 snort -i eth0 ‘tcp port 80’
3. 高性能网络 pfSense 和 Open vSwitch:使用 BPF 进行流量监控和优化网络性能。 ovs-vsctl – set Bridge br0 netflow=@nf – --id=@nf create NetFlow
targets=“127.0.0.1:2055” active-timeout=30
4. eBPF 的扩展应用 eBPF(extended BPF)是 BPF 的扩展版本,提供了更强大的功能和更广泛的应用场景。 系统性能监控和调试:bpftrace:用于实时系统跟踪和性能分析。 bpftrace -e
‘kprobe:do_sys_open { printf(“%s\n”, str(arg1)); }’
网络安全和可观察性:Cilium:用于 Kubernetes 环境的网络安全和可观察性。 cilium policy
trace --src-ip 10.0.0.1 --dst-ip 10.0.0.2 运行时安全检测:Falco:利用 eBPF
来检测和响应系统中的异常行为。 falco -r rules/falco_rules.yaml -c
/etc/falco/falco.yaml


1.BPF语法(tcpdump语法)

tcpdump [options] [filter expression]
  • options:tcpdump 的命令行选项,用于控制捕获行为。
  • filter expression:BPF 过滤表达式,用于定义数据包过滤条件。
  • 过滤表达式由一个或多个原子条件和逻辑运算符组成,用于定义哪些数据包应该被捕获。
    • 常见原子条件:协议、主机&网络(源目地址&源目网络)、端口…

这里和正常的Linux shell语法不一致



2.逻辑运算符

通过组合这些原子条件和逻辑运算符,可以构建复杂的过滤表达式。逻辑运算符包括:

  • and&&:逻辑与运算。
  • or||:逻辑或运算。
  • not!:逻辑非运算。


3.常用的原子条件

tcpdump 的过滤表达式中,除了前面提到的协议、主机、网络和端口等基本原子条件外,还有许多其他原子条件可以帮助你更精确地捕获特定类型的数据包。以下是一些常用的原子条件及其详细解释:

1. 协议相关的原子条件

  • ip:捕获所有 IPv4 数据包。

    tcpdump ip
    
  • ip6:捕获所有 IPv6 数据包。

    tcpdump ip6
    
  • tcp:捕获所有 TCP 数据包。

    tcpdump tcp
    
  • udp:捕获所有 UDP 数据包。

    tcpdump udp
    
  • icmp:捕获所有 ICMP 数据包。

    tcpdump icmp
    
  • icmp6:捕获所有 ICMPv6 数据包。

    tcpdump icmp6
    
  • arp:捕获所有 ARP 数据包。

    tcpdump arp
    
  • rarp:捕获所有 RARP 数据包。

    tcpdump rarp
    
  • 协议IP协议版本过滤

    tcpdump ip #捕获IPv4数据包
    tcpdump ip6 #捕获IPv6数据包tcpdump ip and tcp # 捕获 IPv4 上的 TCP 数据包
    tcpdump ip6 and tcp # 捕获 IPv6 上的 TCP 数据包tcpdump ip host 192.168.1.1 # 捕获特定 IPv4 地址的所有数据包
    tcpdump ip6 host 2001:db8::1 # 捕获特定 IPv6 地址的所有数据包tcpdump ip and udp # 捕获 IPv4 上的 UDP 数据包
    tcpdump ip6 and udp # 捕获 IPv6 上的 UDP 数据包tcpdump 'ip and icmp' #捕获IPv4的ICMP数据包:
    tcpdump 'ip6 and icmp6' #捕获IPv6的ICMP数据包:tcpdump 'ip and net 192.168.1.0/24' #捕获IPv4的指定网络的数据包:
    tcpdump 'ip6 and net 2001:db8::/32' #捕获IPv6的指定网络的数据包:tcpdump 'ip and src 192.168.1.1 and dst port 443' -w ipv4_https_traffic.pcap #捕获IPv4上指定源地址和目的端口的数据包,并保存到文件
    tcpdump 'ip6 and src 2001:db8::1 and dst port 443' -vv#捕获IPv6上指定源地址和目的端口的数据包,并显示详细信息
    

2. 地址相关的原子条件

  • host:捕获来自或发送到指定主机的数据包。

    tcpdump host 192.168.1.1
    
  • src host:捕获来自指定源主机的数据包。

    tcpdump src host 192.168.1.1
    
  • dst host:捕获发送到指定目标主机的数据包。

    tcpdump dst host 192.168.1.2
    
  • net:捕获来自或发送到指定网络的数据包。

    tcpdump net 192.168.1.0/24
    
  • src net:捕获来自指定源网络的数据包。

    tcpdump src net 192.168.1.0/24
    
  • dst net:捕获发送到指定目标网络的数据包。

    tcpdump dst net 192.168.1.0/24
    

3. 端口相关的原子条件

  • port:捕获指定端口的数据包。

    tcpdump port 80
    
  • src port:捕获来自指定源端口的数据包。

    tcpdump src port 1024
    
  • dst port:捕获发送到指定目标端口的数据包。

    tcpdump dst port 443
    
  • portrange:捕获指定端口范围的数据包。

    tcpdump portrange 8000-8080
    

4. 网络层和链路层(mac地址)原子条件

  • ether:捕获以太网帧相关的数据包。

    tcpdump ether
    
  • ether src:捕获来自指定源 MAC 地址的数据包。

    tcpdump ether src 00:11:22:33:44:55
    
  • ether dst:捕获发送到指定目标 MAC 地址的数据包。

    tcpdump ether dst 00:11:22:33:44:55
    
  • ether host:捕获来自或发送到指定 MAC 地址的数据包。

    tcpdump ether host 00:11:22:33:44:55
    

5. 广播和多播

  • broadcast:捕获所有广播数据包。

    tcpdump broadcast
    
  • multicast:捕获所有多播数据包。

    tcpdump multicast
    

6. VLAN 相关的原子条件

  • vlan:捕获所有 VLAN 数据包。

    tcpdump vlan
    
  • vlan [vlan_id]:捕获指定 VLAN ID 的数据包。

    tcpdump vlan 10
    

7. 特定字段大小过滤

  • less:捕获小于指定字节长度的数据包。

    tcpdump 'less 64'
    
  • greater:捕获大于指定字节长度的数据包。

    tcpdump 'greater 128'
    

8. 基于TCP标记的过滤

  • tcp-flags:捕获具有特定 TCP 标志的数据包。
    • SYN:捕获所有带 SYN 标志的数据包。
      tcpdump 'tcp[tcpflags] & tcp-syn != 0'
      
    • SYN-ACK:捕获所有带 SYN 和 ACK 标志的数据包。
      tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-ack) == (tcp-syn|tcp-ack)'
      

9. ICMP 类型过滤

  • icmp[icmptype]:捕获特定类型的 ICMP 数据包。
    • echo request(ping 请求)
      tcpdump 'icmp[icmptype] = icmp-echo'
      
    • echo reply(ping 回复)
      tcpdump 'icmp[icmptype] = icmp-echoreply'
      

10. MPLS 过滤

  • mpls:捕获所有 MPLS 数据包。

    tcpdump 'mpls'
    
  • mpls [label]:捕获指定 MPLS 标签的数据包。

    tcpdump 'mpls 100'
    

11. PPPoE 过滤

  • pppoes:捕获所有 PPPoE 会话数据包。
    tcpdump 'pppoes'
    

12. ISO OSI 过滤

  • iso:捕获所有 ISO 网络协议数据包。

    tcpdump 'iso'
    
  • clnp:捕获所有 CLNP(Connectionless Network Protocol)数据包。

    tcpdump 'clnp'
    

13. Token Ring 过滤

  • tr:捕获所有 Token Ring 数据包。

    tcpdump 'tr'
    
  • tr [protocol]:捕获指定 Token Ring 协议的数据包。

    tcpdump 'tr 0x0800'
    

14. 带宽过滤

  • tcp-keepalive:捕获所有 TCP keepalive 数据包。

    tcpdump 'tcp[tcpflags] & tcp-keepalive != 0'
    
  • tcp-segment:捕获所有 TCP 段。

    tcpdump 'tcp-segment'
    


@组合示例

  1. 捕获所有来自 192.168.1.1 并发送到端口 80 的 TCP 数据包

    tcpdump 'src host 192.168.1.1 and dst port 80 and tcp'
    
  2. 捕获所有 IPv4 和 IPv6 上的 HTTP 和 HTTPS 流量

    tcpdump '(ip or ip6) and (tcp port 80 or tcp port 443)'
    
  3. 捕获所有来自网络 192.168.1.0/24 的 UDP 数据包,但排除端口 53(DNS)

    tcpdump 'src net 192.168.1.0/24 and udp and not port 53'
    
  4. 捕获所有广播和多播数据包

    tcpdump 'broadcast or multicast'
    
  5. 捕获所有 VLAN 10 中大于 128 字节的 TCP 数据包

    tcpdump 'vlan 10 and tcp and greater 128'
    
  6. 捕获所有带 SYN 和 ACK 标志的 IPv6 TCP 数据包

    tcpdump 'ip6 and tcp[tcpflags] & (tcp-syn|tcp-ack) == (tcp-syn|tcp-ack)'
    
  7. 捕获所有 MPLS 标签为 100 的 UDP 数据包

    tcpdump 'mpls 100 and udp'
    
  8. 捕获所有 PPPoE 会话中的 IPv4 数据包

    tcpdump 'pppoes and ip'
    
  9. 捕获所有 ISO 网络协议中的 CLNP 数据包

    tcpdump 'iso and clnp'
    


4.tcpdump常用选项

Ⅰ.基本选项

  1. -i interface:指定要监听的网络接口。

    tcpdump -i eth0
    
    • 默认情况下,tcpdump 会选择第一个非环回接口。
    • 可以通过 -D 选项列出所有接口:
      tcpdump -D
      
  2. -c count:捕获指定数量的数据包后停止。

    tcpdump -c 100
    
  3. -w file:将捕获的数据包保存到文件。

    tcpdump -w capture.pcap
    
  4. -r file:从文件中读取并分析数据包。

    tcpdump -r capture.pcap
    
  5. -nn:不将地址和端口转换为名称。

    tcpdump -nn
    
    • -n:不将地址转换为名称(主机名)。
    • -nn:不将地址和端口转换为名称。
  6. -v, -vv, -vvv:设置详细输出的级别。

    tcpdump -v   # 较详细
    tcpdump -vv  # 更详细
    tcpdump -vvv # 最详细
    
  7. -X:以十六进制和 ASCII 格式显示每个包的数据。

    tcpdump -X
    
  8. -e:显示链路层头信息。

    tcpdump -e
    
  9. -tt:显示时间戳,不格式化。

    tcpdump -tt
    
  10. -ttt:显示时间戳,以微秒为单位,相对于上一个数据包的时间差。

    tcpdump -ttt
    
  11. -tttt:显示人类可读的时间戳格式。

    tcpdump -tttt
    
  12. -s snaplen:设置数据包截取长度(捕获的每个数据包的最大字节数)。

    tcpdump -s 128
    
    • 默认值为 68 或 96,足以捕获 IP 和 TCP/UDP 头
    • 0 表示完整的数据包内容
  13. -A:以 ASCII 格式显示数据包内容。

    tcpdump -A
    
  14. -C file_size:设置捕获文件的大小上限(以 MB 为单位),达到上限后创建新文件。

    tcpdump -C 10 -w capture
    
  15. -G seconds:设置捕获文件的时间上限(以秒为单位),达到上限后创建新文件。

    tcpdump -G 60 -w capture
    
  16. -W file_count:设置保存捕获文件的最大数量。

    tcpdump -W 10 -G 60 -w capture
    
  17. -E spi@ipaddr algo:secret:指定解密 IPsec 数据包的参数。

    tcpdump -E 100@192.168.1.1 des3:0x0123456789ABCDEF
    
  18. -Q:用于选择捕获的数据包的方向

    tcpdump -Q directiontcpdump -Q in 'tcp' # 捕获并显示所有入方向的 TCP 数据包
    tcpdump -Q out -w http_out.pcap 'tcp port 80' # 捕获并保存出方向的 HTTP 流量到文件				
    tcpdump -Q inout -v 'icmp' # 捕获所有入方向和出方向的 ICMP 数据包,并显示详细信息
    tcpdump -Q in 'udp and host 192.168.1.100' # 捕获特定主机的入方向 UDP 流量
    tcpdump -Q out 'vlan 10' # 捕获 VLAN 10 的出方向数据包
    

    in:仅捕获入方向的数据包(接收的数据包)。
    out:仅捕获出方向的数据包(发送的数据包)。
    inout:捕获入方向和出方向的数据包(所有数据包)。

Ⅱ.高级选项

  1. -B buffer_size:设置捕获缓冲区大小(以 KB 为单位)。

    tcpdump -B 4096
    
  2. -K:禁用数据包的校验和验证。

    tcpdump -K
    
  3. -S:显示绝对序列号(对于 TCP 数据包)。

    tcpdump -S
    
  4. -j tstamp_type:设置数据包时间戳类型。

    tcpdump -j adapter
    
  5. -l:将标准输出设置为行缓冲模式。

    tcpdump -l
    
  6. -U:实时写入捕获文件。

    tcpdump -U -w capture.pcap
    
  7. -Z user:在捕获文件打开后切换用户。

    tcpdump -Z nobody
    
  8. -F file:从文件中读取过滤表达式。

    tcpdump -F filter_file
    

@组合选项示例

  1. 捕获并保存所有 TCP 数据包,保存到文件,文件大小上限为 10 MB,每 60 秒切换文件,最多保存 5 个文件

    tcpdump -i eth0 -w capture -C 10 -G 60 -W 5 tcp
    
  2. 以详细模式捕获端口 80 上的 HTTP 流量,并显示数据包内容的 ASCII 和十六进制格式

    tcpdump -i eth0 -vv -X port 80
    
  3. 捕获 VLAN 10 中的所有数据包,并将标准输出设置为行缓冲模式

    tcpdump -i eth0 -l vlan 10
    
  4. 捕获并解密 IPsec 数据包,使用指定的密钥

    tcpdump -i eth0 -E 100@192.168.1.1 des3:0x0123456789ABCDEF
    
  5. 设置捕获缓冲区大小为 4 MB,并捕获所有 UDP 数据包

    tcpdump -i eth0 -B 4096 udp
    


@综合示例

详解篇

下面是一些综合使用 tcpdump 选项、原子条件和逻辑运算符的示例,这些示例展示了如何结合这些元素来实现复杂的捕获和分析需求。

示例 1:捕获特定主机的 HTTP GET 请求并保存到文件

tcpdump -i eth0 -A -s 0 -w http_get_requests.pcap 'tcp port 80 and (((ip[2:2] - ((ip[0] & 0xf)<<2)) - ((tcp[12] & 0xf0)>>2)) != 0) and tcp[((tcp[12] & 0xf0)>>2):4] = 0x47455420 and host 192.168.1.100'
  • -i eth0:指定网络接口 eth0。
  • -A:以 ASCII 格式显示数据包内容。
  • -s 0:捕获完整的数据包。
  • -w http_get_requests.pcap:将数据包保存到文件。
  • ‘tcp port 80 and … and host 192.168.1.100’:过滤条件,捕获特定主机的 HTTP GET 请求。
    • ip[2:2]:IP 数据包的总长度字段(2 个字节),IP 头部的第 2 和第 3 字节表示数据包的总长度。
    • ip[0] & 0xf:IP 头长度字段。IP 头部的第 1 字节的低 4 位表示 IP 头的长度(单位是 32 位字)
    • tcp[12] & 0xf0:TCP 头长度字段。TCP 头部的第 13 字节的高 4 位表示 TCP 头的长度(单位是 32 位字)
    • 0x47455420:ASCII 码 "GET " 的十六进制表示。

示例 2:捕获 VLAN 10 中所有的 TCP SYN 数据包,并显示详细信息

tcpdump -i eth0 -nn -vv 'vlan 10 and tcp[tcpflags] & tcp-syn != 0'
  • -i eth0:指定网络接口 eth0。
  • -nn:不解析主机名和端口号。
  • -vv:显示详细的包头信息。
  • ‘vlan 10 and tcp[tcpflags] & tcp-syn != 0’:过滤条件,捕获 VLAN 10 中所有 TCP SYN 数据包。

示例 3:捕获所有入方向的 ICMP 数据包,并显示数据包内容

tcpdump -i eth0 -Q in -X 'icmp'
  • -i eth0:指定网络接口 eth0。
  • -Q in:捕获入方向的数据包。
  • -X:以十六进制和 ASCII 格式显示数据包内容。
  • ‘icmp’:过滤条件,捕获所有 ICMP 数据包。

示例 4:捕获所有源 MAC 地址为特定地址的 TCP FIN 数据包

tcpdump -i eth0 'ether src 00:11:22:33:44:55 and tcp[tcpflags] & tcp-fin != 0'
  • -i eth0:指定网络接口 eth0。
  • ‘ether src 00:11:22:33:44:55 and tcp[tcpflags] & tcp-fin != 0’:过滤条件,捕获所有源 MAC 地址为特定地址的 TCP FIN 数据包。

示例 5:捕获并显示特定 IP 地址的 UDP 流量,包括十六进制内容

tcpdump -i eth0 -nn -X 'udp and host 192.168.1.100'
  • -i eth0:指定网络接口 eth0。
  • -nn:不解析主机名和端口号。
  • -X:以十六进制和 ASCII 格式显示数据包内容。
  • ‘udp and host 192.168.1.100’:过滤条件,捕获特定 IP 地址的 UDP 流量。

示例 6:捕获 HTTP POST 请求,并显示数据包内容

tcpdump -i eth0 -A -s 0 'tcp port 80 and (((ip[2:2] - ((ip[0] & 0xf)<<2)) - ((tcp[12] & 0xf0)>>2)) != 0) and tcp[((tcp[12] & 0xf0)>>2):4] = 0x504f5354'
  • -i eth0:指定网络接口 eth0。
  • -A:以 ASCII 格式显示数据包内容。
  • -s 0:捕获完整的数据包。
  • ‘tcp port 80 and …’:过滤条件,捕获 HTTP POST 请求。

示例 7:捕获特定端口范围的 UDP 流量,并设置捕获缓冲区大小

tcpdump -i eth0 -B 4096 'udp portrange 8000-8080'
  • -i eth0:指定网络接口 eth0。
  • -B 4096:设置捕获缓冲区大小为 4 MB。
  • ‘udp portrange 8000-8080’:过滤条件,捕获特定端口范围的 UDP 流量。

示例 8:捕获所有 TCP 连接终止过程中的数据包(包括 FIN 和 RST 数据包)

tcpdump -i eth0 'tcp[tcpflags] & (tcp-fin|tcp-rst) != 0'
  • -i eth0:指定网络接口 eth0。
  • ‘tcp[tcpflags] & (tcp-fin|tcp-rst) != 0’:过滤条件,捕获所有 TCP 连接终止过程中的数据包。

简洁篇

示例 1:捕获 HTTP 和 HTTPS 流量并保存到文件

需求:捕获所有通过端口 80 和 443 的 HTTP 和 HTTPS 流量,将捕获的数据包保存到文件 http_https_traffic.pcap,每个文件的大小上限为 10 MB,每 60 秒切换文件,最多保存 5 个文件。

tcpdump -i eth0 -w http_https_traffic.pcap -C 10 -G 60 -W 5 'tcp port 80 or tcp port 443'

示例 2:捕获特定网络内的所有 TCP 数据包,并显示详细信息

需求:捕获来自网络 192.168.1.0/24 的所有 TCP 数据包,显示详细的包头信息和内容。

tcpdump -i eth0 -nn -vv -X 'tcp and net 192.168.1.0/24'

示例 3:捕获并解密 IPsec 流量

需求:捕获并解密 IPsec 数据包,使用特定的密钥进行解密。

tcpdump -i eth0 -E 100@192.168.1.1 des3:0x0123456789ABCDEF 'esp'

示例 4:捕获并实时显示所有包含特定字符串的 HTTP 流量

需求:捕获并实时显示所有 HTTP 流量,并在包内容中搜索特定字符串 “password”。

tcpdump -i eth0 -A -s 0 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0) and tcp[((tcp[12]&0xf0)>>2):4] = 0x70617373'

示例 5:捕获所有带有 SYN 和 ACK 标志的 TCP 数据包

需求:捕获所有带有 SYN 和 ACK 标志的 TCP 数据包,以监视网络中的新连接建立。

tcpdump -i eth0 'tcp[tcpflags] & (tcp-syn|tcp-ack) == (tcp-syn|tcp-ack)'

示例 6:捕获特定 VLAN 中的 ICMP 数据包,并将输出显示为 ASCII 格式

需求:捕获 VLAN ID 为 10 的所有 ICMP 数据包,并以 ASCII 格式显示包内容。

tcpdump -i eth0 -A 'vlan 10 and icmp'

示例 7:捕获特定端口范围的 UDP 流量,并设置捕获缓冲区大小

需求:捕获端口范围 8000 到 8080 的所有 UDP 流量,并将捕获缓冲区大小设置为 4 MB,以防止丢包。

tcpdump -i eth0 -B 4096 'udp portrange 8000-8080'

示例 8:捕获并显示时间戳差异的 TCP 数据包

需求:捕获所有 TCP 数据包,并显示数据包之间的时间戳差异,以微秒为单位。

tcpdump -i eth0 -ttt 'tcp'

示例 9:捕获来自特定主机的 DNS 查询和响应

需求:捕获来自主机 192.168.1.1 的所有 DNS 查询和响应。

tcpdump -i eth0 'host 192.168.1.1 and port 53'

示例 10:捕获所有广播和多播数据包,并显示链路层信息

需求:捕获所有广播和多播数据包,并显示链路层头信息。

tcpdump -i eth0 -e '(broadcast or multicast)'

总结

  1. 选项顺序:在命令行中,选项通常出现在过滤条件之前。
  2. 过滤条件的使用:过滤条件需要用单引号 ' 或双引号 " 包围,以避免 shell 对其进行错误解析。
  3. 捕获缓冲区:使用 -B 选项设置捕获缓冲区大小,以防止丢包。
  4. 对于http: 使用 -A 选项是以 ASCII 格式显示数据包的内容。因为 HTTP 是一种基于文本的协议,其请求和响应内容都是可读的文本。通过使用 -A 选项,可以直接在终端中看到 HTTP 请求和响应的详细内容
  5. 更为复杂的话,可以使用tcpdump保存抓包文件,然后Linux版本的tshark图形化页面分析和过滤

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/30900.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

com.lowagie:itext:jar:2.1.7.js9 was not found

1 在 https://jaspersoft.jfrog.io/ui/native/third-party-ce-artifacts/com/lowagie/itext/2.1.7.js9/下载com/lowagie/itext/2.1.7.js9/itext-2.1.7.js9.jar的包&#xff0c; 2 在本地maven仓库com.lowagie.itext.2.1.7的目录下&#xff0c;将itext-2.1.7.js9.jar复制更名为…

深度学习 --- stanford cs231学习笔记五(训练神经网络的几个重要组成部分之二,数据的预处理)

训练神经网络的几个重要组成部分 二 2 Data Preprocessing数据的预处理 数据预处理的几种方法 2&#xff0c;1 数据的零点中心化 数据的零点中心化的目的就是为了把数据的整体分布拉回到原点附近&#xff0c;也就是让数据的整体均值变为0。 ​ 2&#xff0c;2 数据的标准化 数…

JDBC(简介、入门与IDEA中导入MySQL的驱动)

&#xff08;建议学完 MySQL 的基础部分&#xff09; JDBC——简而言之&#xff1a;用 Java 语言操作数据库。 Java DataBase Connectivity&#xff08;Java 语言连接数据库&#xff09; 目录 一、引言 &#xff08;1&#xff09;基本介绍 &#xff08;2&#xff09;JDBC 简…

力扣739.每日温度

力扣739.每日温度 单调栈 从右到左做栈中存下标 class Solution {public:vector<int> dailyTemperatures(vector<int>& temperatures) {int n temperatures.size();vector<int> ans(n);stack<int> st;for(int in-1;i>0;i--){int t tempera…

[信号与系统]傅里叶变换、卷积定理、和为什么时域的卷积等于频域相乘。

前言 最近学习以下IIR滤波器和FIR滤波器 前置 1. 时域和频域 时域和频域代表着频率和时间与振幅的一一对应关系 2. 卷积运算 关于卷积的定义&#xff0c;详情请看 这篇文章能让你明白卷积 卷积运算是一种数学运算&#xff0c;广泛应用于信号处理、图像处理、控制系统和概…

【ARMv8/v9 GIC 系列 2 -- GIC SPI 中断的 enable和 disable 配置】

文章目录 GIC 中断 Enable 和 DisableGICD_ISENABLER<n>GICD_ICENABLER<n>参数 n使用举例代码实现注意事项 GIC 中断 Enable 和 Disable 在ARMv8架构中&#xff0c;通用中断控制器&#xff08;GIC&#xff09;负责管理处理器的中断。为了控制和管理这些中断&#…

TSF的服务发现与Consul有何区别?

TSF(腾讯服务框架)和Consul都是用于服务发现的工具,但它们在设计理念、功能特性、集成方式等方面存在一些区别。 ### 设计理念和目标 **Consul** 是一个开源的工具,用于服务发现、配置和分段。它提供了一种简单的方式来注册和发现服务,以及健康检查和键值存储功能。Consul…

PyTorch实现NMS算法

PyTorch实现NMS算法 介绍示例代码 介绍 参考链接1&#xff1a;NMS 算法源码实现 参考链接2&#xff1a; Python实现NMS&#xff08;非极大值抑制&#xff09;对边界框进行过滤。 目标检测算法&#xff08;主流的有 RCNN 系、YOLO 系、SSD 等&#xff09;在进行目标检测任务时&…

网络安全管理组织架构复习

文章目录 安全管理机构岗位设置安全要求要求解读 安全管理机构 安全管理的重要实施条件就是有一个统一指挥、协调有序、组织有力的安全管理机构,这是网络安全管理得以实施、推广的基础。 通过构建从单位最高管理层到执行层及具体业务运营层的组织体系&#xff0c;可以明确各个…

【HarmonyOS4学习笔记】《HarmonyOS4+NEXT星河版入门到企业级实战教程》课程学习笔记(十四)

课程地址&#xff1a; 黑马程序员HarmonyOS4NEXT星河版入门到企业级实战教程&#xff0c;一套精通鸿蒙应用开发 &#xff08;本篇笔记对应课程第 22 节&#xff09; P22《21.ArkUI-实现摇杆功能》 本节我们将小鱼动画案例中的按钮控制改为摇杆控制&#xff0c;用来熟悉和巩固…

【多模态论文】CLIP(Contrastive Language-Image Pre-training)

论文&#xff1a;Learning Transferable Visual Models From Natural Language Supervision 链接&#xff1a;https://arxiv.org/abs/2103.00020 摘要 问题&#xff1a; 对预定的类别进行预测&#xff0c;这种有监督的训练形式受限于额外标记数据 。如何利用图像的原始文本来获…

图像数字化基础

一、像素 1、获取图像指定位置的像素 import cv2 image cv2.imread("E:\\images\\2.png") px image[291,218] print("坐标(291,218)上的像素的BGR值是&#xff1a;",px) &#xff08;1&#xff09;RGB色彩空间 R通道&#xff1a;红色通道 G通道&…

使用Python进行音频处理

通常会使用wave模块。但是&#xff0c;如果您想要处理其他类型的音频文件&#xff0c;或者需要更高级的音频处理功能&#xff0c;您可能需要安装第三方库&#xff0c;如pydub、soundfile、numpy等。 import wave # 读取WAV文件 with wave.open(input.wav, rb) as wav_file: …

RH850---注意问题积累--1

硬件规格(引脚分配&#xff0c;内存映射&#xff0c;外设功能规格、电气特性、时序图)和操作说明 注意:有关使用的详细信息&#xff0c;请参阅应用说明 ---------外围函数。。。 1:存储指令完成与后续同步指令的一代 当控制寄存器被存储指令更新时&#xff0c;从存储的执行开始…

白杨SEO:中国搜索引擎市场份额排名如何,百度还是PC和移动端均第一吗?

前言&#xff1a;这是白杨SEO公众号原创第536篇。为什么分享这个&#xff1f;因为我们不管是做搜索流量还是推荐流量&#xff0c;都应该随时了解当下流量主要在哪&#xff0c;欢迎评论&#xff0c;转发&#xff0c;收藏。图片在公众号白杨SEO优化教程上去看。 文章大纲&#x…

南京邮电大学计算机网络实验二(网络路由器配置RIP协议)

文章目录 一、 实验目的和要求二、 实验环境(实验设备)三、 实验步骤四、实验小结&#xff08;包括问题和解决方法、心得体会、意见与建议等&#xff09;五、报告资源 一、 实验目的和要求 掌握思科路由器的运行过程&#xff0c;掌握思科路由器的硬件连线与接口&#xff0c;掌…

VBA学习(13):获取多层文件夹内文件名并建立超链接

代码使用了FileSystemObject对象和递归的方法实现文件夹和文件的遍历功能。分别将文件夹名称和文件名提取在表格的A/B列&#xff0c;并对文件名创建了超链接。 示例代码如下&#xff1a; Sub AutoAddLink()Dim strFldPath As StringWith Application.FileDialog(msoFileDialog…

如何下载DVS Gesture数据集?解决tonic.datasets.DVSGesture错误HTTP Error 403: Forbidden

1 问题 DVSGesture数据集是一个专注于动态视觉传感&#xff08;Dynamic Vision Sensor, DVS&#xff09;技术的数据集&#xff0c;它包含了基于事件的图像记录&#xff0c;用于手势识别任务。DVSGesture数据集由一系列动态图像组成&#xff0c;这些图像是通过动态视觉传感器捕…

抖音矩阵系统搭建,AI剪辑短视频,一键管理矩阵账号

目录 前言&#xff1a; 一、抖音矩阵系统有哪些功能&#xff1f; 1.AI智能文案 2.多平台账号授权 3.多种剪辑模式 4. 矩阵一键发布&#xff0c;智能发布 5.抖音爆店码功能 6.私信实时互动 7.去水印及外链 二、抖音矩阵系统可以解决哪些问题&#xff1f; 总结&#xff…

理解HTTP请求格式

HTTP概念 HTTP全称HyperTextTransfer Protocol(超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议&#xff1b;HTTP是一个客户端&#xff08;用户&#xff09;和服务端&#xff08;网站&#xff09;之间请求和响应的标准。 HTTP 协议是以 ASCII 码传输&…