当前位置: 首页 > news >正文

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图形化页面分析和过滤

相关文章:

Linux tcpdump详解

目录 前言&#xff1a;BPF伯克利包过滤器介绍1.BPF语法&#xff08;tcpdump语法&#xff09;2.逻辑运算符3.常用的原子条件1. 协议相关的原子条件2. 地址相关的原子条件3. 端口相关的原子条件4. 网络层和链路层(mac地址&#xff09;原子条件5. 广播和多播6. VLAN 相关的原子条件…...

vue2实现打印功能(vue-print-nb的实现)

实现效果&#xff1a; 引入插件 npm install vue-print-nb --save import Print from vue-print-nb Vue.use(Print) <div ref"printTest" id"printTest"><div style"text-align: center; page-break-after: always"><div style…...

某全国增值税发票查验平台 接口JS逆向

注意&#xff0c;本文只提供学习的思路&#xff0c;严禁违反法律以及破坏信息系统等行为&#xff0c;本文只提供思路 本文的验证码网址如下&#xff0c;使用base64解码获得 aHR0cHM6Ly9pbnYtdmVyaS5jaGluYXRheC5nb3YuY24v 这个平台功能没什么好说的&#xff0c;就是发票查验&am…...

前端练习小项目——视觉冲击卡片

前言&#xff1a; 前言&#xff1a;在学习完HTML和CSS之后&#xff0c;我们就可以开始做一些小项目了&#xff0c;本篇文章所讲的小项目为——视觉冲击卡片 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可以访问我的主页秋刀鱼不做梦-CSDN博客 先让我们看一下效果&a…...

从0到1:手动测试迈向自动化——手机web应用的自动化测试工具

引言&#xff1a; 在当今移动互联网时代&#xff0c;手机web应用已经成为人们生活中不可或缺的一部分。为了保证手机web应用的质量和稳定性&#xff0c;自动化测试工具变得十分重要。本文将介绍手机web应用自动化测试工具的选择和使用&#xff0c;提供一份超详细且规范的指南&a…...

磁盘未格式化:深度解析、恢复策略与预防措施

一、磁盘未格式化的定义与现象 在计算机存储领域&#xff0c;磁盘未格式化通常指的是磁盘分区或整个磁盘的文件系统信息出现丢失或损坏的情况&#xff0c;导致操作系统无法正确读取和识别磁盘上的数据。当尝试访问这样的磁盘时&#xff0c;系统往往会弹出一个警告框&#xff0…...

Qwen2在Java项目中如何实现优雅的Function_Call工具调用

在当今AI技术飞速发展的背景下&#xff0c;大语言模型如Qwen2和GLM-4凭借其强大的语言处理能力&#xff0c;在诸多领域展现出了巨大的潜力。然而&#xff0c;大模型并非全知全能&#xff0c;它们在处理特定任务时&#xff0c;尤其是在需要与外部系统交互或执行具体功能时&#…...

【SPIE独立出版 | 往届均已完成EI检索】2024云计算、性能计算与深度学习国际学术会议(CCPCDL 2024)

2024云计算、性能计算与深度学习国际学术会议(CCPCDL 2024) 2024 International conference on Cloud Computing, Performance Computing and Deep Learning *CCPCDL往届均已完成EI检索&#xff0c;最快会后4个半月完成&#xff01; 一、重要信息 大会官网&#xff1a;www…...

MYSQL 四、mysql进阶 4(索引的数据结构)

一、为什么使用索引 以及 索引的优缺点 1.为什么使用索引 索引是存储引擎用于快速找到数据记录的一种数据结构&#xff0c;就好比一本教科书的目录部分&#xff0c;通过目录中找到对应文章的页码&#xff0c;便可快速定位到需要的文章。Mysql中也是一样的道理&#xff0c;进行数…...

360vr党建线上主题展立体化呈现企业的文化理念和品牌形象

在现代科技的引领下&#xff0c;艺术与VR虚拟现实技术相融合必将成为趋势&#xff0c;深圳VR公司华锐视点荣幸地推出VR艺术品虚拟展厅&#xff0c;为您带来前所未有的艺术观赏体验。体验者足不出户即可置身于一个充满创意与灵感的虚拟艺术空间。 我们深入了解每一位客户的需求与…...

docker通过容器id查看运行命令;Portainer监控管理docker容器

1、docker通过容器id查看运行命令 参考&#xff1a;https://blog.csdn.net/a772304419/article/details/138732138 docker inspect 运行镜像id“Cmd”: [ “–model”, “/qwen-7b”, “–port”, “10860”, “–max-model-len”, “4096”, “–trust-remote-code”, “–t…...

XMind 2024软件最新版下载及详细安装教程

​人所共知的是XMind 在公司和教育领域都有很广泛的应用&#xff0c;在公司中它能够用来进行会议管理、项目管理、信息管理、计划和XMind 被认为是一种新一代演示软件的模式。也就是说XMind不仅能够绘制思维导图&#xff0c;还能够绘制鱼骨图、二维图、树形图、逻辑图、组织结构…...

代码随想录算法训练营第四十四天 | 322. 零钱兑换、279.完全平方数、139.单词拆分、多重背包理论基础、背包问题总结

322. 零钱兑换 题目链接&#xff1a;https://leetcode.cn/problems/coin-change/ 文档讲解&#xff1a;https://programmercarl.com/0322.%E9%9B%B6%E9%92%B1%E5%85%91%E6%8D%A2.html 视频讲解&#xff1a;https://www.bilibili.com/video/BV14K411R7yv/ 思路 确定dp数组以及下…...

开源AGV调度系统OpenTCS中的路由器(router)详解

OpenTCS中的任务分派器router详解 1. 引言2. 路由器(router)2.1 代价计算函数&#xff08;Cost functions&#xff09;2.2 2.1 Routing groups2.1 默认的停车位置选择2.2 可选停车位置属性2.3 默认的充电位置选择2.4 即时运输订单分配 3. 默认任务分派器的配置项4. 参考资料与源…...

关于下载 IDEA、WebStorm 的一些心得感想

背景 实习第一天的时候&#xff0c;睿哥便吩咐我下载一些软件&#xff0c;这些软件以后在写项目的时候会用到&#xff0c;他叫我先装IDEA,WebStorm&#xff0c;微信开发者工具&#xff0c;git&#xff0c;还有Navicat。 这些软件能够被我们正常使用&#xff0c;无非就通过三步…...

C#使用Scoket实现服务器和客户端互发信息

20240616 By wdhuag 目录 前言&#xff1a; 参考&#xff1a; 一、服务器端&#xff1a; 1、服务器端口绑定&#xff1a; 2、服务器关闭&#xff1a; 二、客户端&#xff1a; 1、客户端连接&#xff1a; 2、客户端断开&#xff1a; 三、通讯&#xff1a; 1、接收信…...

【经验分享】SpringCloud + MyBatis Plus 配置 MySQL,TDengine 双数据源

概述 因为项目中采集工厂中的设备码点的数据量比较大,需要集成TDengine时序数据库,所以需要设置双数据源 操作步骤 导入依赖 <!-- 多数据源支持 --><dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-s…...

Pycharm 忽略文件

安装 .ignore插件 规则示例 罗列一些常遇到.getignore忽略规则的使用示例&#xff1a; 1. 在已忽略文件夹中不忽略指定文件夹&#xff1a; /libs/* !/libs/extend/ 2. 在已忽略文件夹中不忽略指定文件 /libs/* !/libs/extend/fastjson.jar 3.只忽略libs目录&#xf…...

爬虫学习。。。。

爬虫的概念&#xff1a; 爬虫是一种自动化信息采集程序或脚本&#xff0c;用于从互联网上抓取信息。 它通过模拟浏览器请求站点的行为&#xff0c;获取资源后分析并提取有用数据&#xff0c;这些数据可以是HTML代码、JSON数据或二进制数据&#xff08;如图片、视频&#xff09…...

美国铁路客运巨头Amtrak泄漏旅客数据,数据销毁 硬盘销毁 文件销毁

旅客的Guest Rewards常旅客积分账户的个人信息被大量窃取。 美国国家客运铁路公司&#xff08;Amtrak&#xff09;近日披露了一起数据泄露事件&#xff0c;旅客的Guest Rewards常旅客积分账户的个人信息被大量窃取。 根据Amtrak向马萨诸塞州提交的泄露通知&#xff0c;5月15日…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?

现有的 Redis 分布式锁库&#xff08;如 Redisson&#xff09;相比于开发者自己基于 Redis 命令&#xff08;如 SETNX, EXPIRE, DEL&#xff09;手动实现分布式锁&#xff0c;提供了巨大的便利性和健壮性。主要体现在以下几个方面&#xff1a; 原子性保证 (Atomicity)&#xff…...

Web后端基础(基础知识)

BS架构&#xff1a;Browser/Server&#xff0c;浏览器/服务器架构模式。客户端只需要浏览器&#xff0c;应用程序的逻辑和数据都存储在服务端。 优点&#xff1a;维护方便缺点&#xff1a;体验一般 CS架构&#xff1a;Client/Server&#xff0c;客户端/服务器架构模式。需要单独…...

CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!

本文介绍了一种名为AnomalyAny的创新框架&#xff0c;该方法利用Stable Diffusion的强大生成能力&#xff0c;仅需单个正常样本和文本描述&#xff0c;即可生成逼真且多样化的异常样本&#xff0c;有效解决了视觉异常检测中异常样本稀缺的难题&#xff0c;为工业质检、医疗影像…...

Mysql故障排插与环境优化

前置知识点 最上层是一些客户端和连接服务&#xff0c;包含本 sock 通信和大多数jiyukehuduan/服务端工具实现的TCP/IP通信。主要完成一些简介处理、授权认证、及相关的安全方案等。在该层上引入了线程池的概念&#xff0c;为通过安全认证接入的客户端提供线程。同样在该层上可…...

rm视觉学习1-自瞄部分

首先先感谢中南大学的开源&#xff0c;提供了很全面的思路&#xff0c;减少了很多基础性的开发研究 我看的阅读的是中南大学FYT战队开源视觉代码 链接&#xff1a;https://github.com/CSU-FYT-Vision/FYT2024_vision.git 1.框架&#xff1a; 代码框架结构&#xff1a;readme有…...

npm安装electron下载太慢,导致报错

npm安装electron下载太慢&#xff0c;导致报错 背景 想学习electron框架做个桌面应用&#xff0c;卡在了安装依赖&#xff08;无语了&#xff09;。。。一开始以为node版本或者npm版本太低问题&#xff0c;调整版本后还是报错。偶尔执行install命令后&#xff0c;可以开始下载…...

英国云服务器上安装宝塔面板(BT Panel)

在英国云服务器上安装宝塔面板&#xff08;BT Panel&#xff09; 是完全可行的&#xff0c;尤其适合需要远程管理Linux服务器、快速部署网站、数据库、FTP、SSL证书等服务的用户。宝塔面板以其可视化操作界面和强大的功能广受国内用户欢迎&#xff0c;虽然官方主要面向中国大陆…...

Cursor AI 账号纯净度维护与高效注册指南

Cursor AI 账号纯净度维护与高效注册指南&#xff1a;解决限制问题的实战方案 风车无限免费邮箱系统网页端使用说明|快速获取邮箱|cursor|windsurf|augment 问题背景 在成功解决 Cursor 环境配置问题后&#xff0c;许多开发者仍面临账号纯净度不足导致的限制问题。无论使用 16…...

使用ch340继电器完成随机断电测试

前言 如图所示是市面上常见的OTA压测继电器&#xff0c;通过ch340串口模块完成对继电器的分路控制&#xff0c;这里我编写了一个脚本方便对4路继电器的控制&#xff0c;可以设置开启时间&#xff0c;关闭时间&#xff0c;复位等功能 软件界面 在设备管理器查看串口号后&…...