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)'
- SYN:捕获所有带 SYN 标志的数据包。
9. ICMP 类型过滤
- icmp[icmptype]:捕获特定类型的 ICMP 数据包。
- echo request(ping 请求)
tcpdump 'icmp[icmptype] = icmp-echo'
- echo reply(ping 回复)
tcpdump 'icmp[icmptype] = icmp-echoreply'
- echo request(ping 请求)
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'
@组合示例
-
捕获所有来自 192.168.1.1 并发送到端口 80 的 TCP 数据包:
tcpdump 'src host 192.168.1.1 and dst port 80 and tcp'
-
捕获所有 IPv4 和 IPv6 上的 HTTP 和 HTTPS 流量:
tcpdump '(ip or ip6) and (tcp port 80 or tcp port 443)'
-
捕获所有来自网络 192.168.1.0/24 的 UDP 数据包,但排除端口 53(DNS):
tcpdump 'src net 192.168.1.0/24 and udp and not port 53'
-
捕获所有广播和多播数据包:
tcpdump 'broadcast or multicast'
-
捕获所有 VLAN 10 中大于 128 字节的 TCP 数据包:
tcpdump 'vlan 10 and tcp and greater 128'
-
捕获所有带 SYN 和 ACK 标志的 IPv6 TCP 数据包:
tcpdump 'ip6 and tcp[tcpflags] & (tcp-syn|tcp-ack) == (tcp-syn|tcp-ack)'
-
捕获所有 MPLS 标签为 100 的 UDP 数据包:
tcpdump 'mpls 100 and udp'
-
捕获所有 PPPoE 会话中的 IPv4 数据包:
tcpdump 'pppoes and ip'
-
捕获所有 ISO 网络协议中的 CLNP 数据包:
tcpdump 'iso and clnp'
4.tcpdump常用选项
Ⅰ.基本选项
-
-i interface:指定要监听的网络接口。
tcpdump -i eth0
- 默认情况下,
tcpdump
会选择第一个非环回接口。 - 可以通过
-D
选项列出所有接口:tcpdump -D
- 默认情况下,
-
-c count:捕获指定数量的数据包后停止。
tcpdump -c 100
-
-w file:将捕获的数据包保存到文件。
tcpdump -w capture.pcap
-
-r file:从文件中读取并分析数据包。
tcpdump -r capture.pcap
-
-nn:不将地址和端口转换为名称。
tcpdump -nn
-n
:不将地址转换为名称(主机名)。-nn
:不将地址和端口转换为名称。
-
-v, -vv, -vvv:设置详细输出的级别。
tcpdump -v # 较详细 tcpdump -vv # 更详细 tcpdump -vvv # 最详细
-
-X:以十六进制和 ASCII 格式显示每个包的数据。
tcpdump -X
-
-e:显示链路层头信息。
tcpdump -e
-
-tt:显示时间戳,不格式化。
tcpdump -tt
-
-ttt:显示时间戳,以微秒为单位,相对于上一个数据包的时间差。
tcpdump -ttt
-
-tttt:显示人类可读的时间戳格式。
tcpdump -tttt
-
-s snaplen:设置数据包截取长度(捕获的每个数据包的最大字节数)。
tcpdump -s 128
- 默认值为 68 或 96,足以捕获 IP 和 TCP/UDP 头
- 0 表示完整的数据包内容
-
-A:以 ASCII 格式显示数据包内容。
tcpdump -A
-
-C file_size:设置捕获文件的大小上限(以 MB 为单位),达到上限后创建新文件。
tcpdump -C 10 -w capture
-
-G seconds:设置捕获文件的时间上限(以秒为单位),达到上限后创建新文件。
tcpdump -G 60 -w capture
-
-W file_count:设置保存捕获文件的最大数量。
tcpdump -W 10 -G 60 -w capture
-
-E spi@ipaddr algo:secret:指定解密 IPsec 数据包的参数。
tcpdump -E 100@192.168.1.1 des3:0x0123456789ABCDEF
-
-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:捕获入方向和出方向的数据包(所有数据包)。
Ⅱ.高级选项
-
-B buffer_size:设置捕获缓冲区大小(以 KB 为单位)。
tcpdump -B 4096
-
-K:禁用数据包的校验和验证。
tcpdump -K
-
-S:显示绝对序列号(对于 TCP 数据包)。
tcpdump -S
-
-j tstamp_type:设置数据包时间戳类型。
tcpdump -j adapter
-
-l:将标准输出设置为行缓冲模式。
tcpdump -l
-
-U:实时写入捕获文件。
tcpdump -U -w capture.pcap
-
-Z user:在捕获文件打开后切换用户。
tcpdump -Z nobody
-
-F file:从文件中读取过滤表达式。
tcpdump -F filter_file
@组合选项示例
-
捕获并保存所有 TCP 数据包,保存到文件,文件大小上限为 10 MB,每 60 秒切换文件,最多保存 5 个文件:
tcpdump -i eth0 -w capture -C 10 -G 60 -W 5 tcp
-
以详细模式捕获端口 80 上的 HTTP 流量,并显示数据包内容的 ASCII 和十六进制格式:
tcpdump -i eth0 -vv -X port 80
-
捕获 VLAN 10 中的所有数据包,并将标准输出设置为行缓冲模式:
tcpdump -i eth0 -l vlan 10
-
捕获并解密 IPsec 数据包,使用指定的密钥:
tcpdump -i eth0 -E 100@192.168.1.1 des3:0x0123456789ABCDEF
-
设置捕获缓冲区大小为 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)'
总结
- 选项顺序:在命令行中,选项通常出现在过滤条件之前。
- 过滤条件的使用:过滤条件需要用单引号
'
或双引号"
包围,以避免 shell 对其进行错误解析。 - 捕获缓冲区:使用
-B
选项设置捕获缓冲区大小,以防止丢包。 - 对于http: 使用 -A 选项是以 ASCII 格式显示数据包的内容。因为 HTTP 是一种基于文本的协议,其请求和响应内容都是可读的文本。通过使用 -A 选项,可以直接在终端中看到 HTTP 请求和响应的详细内容
- 更为复杂的话,可以使用tcpdump保存抓包文件,然后Linux版本的tshark图形化页面分析和过滤
相关文章:
![](https://www.ngui.cc/images/no-images.jpg)
Linux tcpdump详解
目录 前言:BPF伯克利包过滤器介绍1.BPF语法(tcpdump语法)2.逻辑运算符3.常用的原子条件1. 协议相关的原子条件2. 地址相关的原子条件3. 端口相关的原子条件4. 网络层和链路层(mac地址)原子条件5. 广播和多播6. VLAN 相关的原子条件…...
![](https://img-blog.csdnimg.cn/direct/fb09d3bd8e9f4ab89b04663bb672237e.png)
vue2实现打印功能(vue-print-nb的实现)
实现效果: 引入插件 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…...
![](https://img-blog.csdnimg.cn/direct/ebebc4d80142408ca738f451d57fbb8c.png)
某全国增值税发票查验平台 接口JS逆向
注意,本文只提供学习的思路,严禁违反法律以及破坏信息系统等行为,本文只提供思路 本文的验证码网址如下,使用base64解码获得 aHR0cHM6Ly9pbnYtdmVyaS5jaGluYXRheC5nb3YuY24v 这个平台功能没什么好说的,就是发票查验&am…...
![](https://img-blog.csdnimg.cn/direct/7abcabbe037a4f2aa42457d8c33b32a8.gif)
前端练习小项目——视觉冲击卡片
前言: 前言:在学习完HTML和CSS之后,我们就可以开始做一些小项目了,本篇文章所讲的小项目为——视觉冲击卡片 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可以访问我的主页秋刀鱼不做梦-CSDN博客 先让我们看一下效果&a…...
![](https://img-blog.csdnimg.cn/b5d166f9b12b4ce9ba4ef9adcc88eaa1.png)
从0到1:手动测试迈向自动化——手机web应用的自动化测试工具
引言: 在当今移动互联网时代,手机web应用已经成为人们生活中不可或缺的一部分。为了保证手机web应用的质量和稳定性,自动化测试工具变得十分重要。本文将介绍手机web应用自动化测试工具的选择和使用,提供一份超详细且规范的指南&a…...
![](https://img-blog.csdnimg.cn/direct/e8e94c13bbea44b2ba03bc5088ecf50a.jpeg)
磁盘未格式化:深度解析、恢复策略与预防措施
一、磁盘未格式化的定义与现象 在计算机存储领域,磁盘未格式化通常指的是磁盘分区或整个磁盘的文件系统信息出现丢失或损坏的情况,导致操作系统无法正确读取和识别磁盘上的数据。当尝试访问这样的磁盘时,系统往往会弹出一个警告框࿰…...
![](https://img-blog.csdnimg.cn/direct/e4f870b331714f2099182d6f203204dd.png)
Qwen2在Java项目中如何实现优雅的Function_Call工具调用
在当今AI技术飞速发展的背景下,大语言模型如Qwen2和GLM-4凭借其强大的语言处理能力,在诸多领域展现出了巨大的潜力。然而,大模型并非全知全能,它们在处理特定任务时,尤其是在需要与外部系统交互或执行具体功能时&#…...
![](https://img-blog.csdnimg.cn/img_convert/039844a82f63a5bb4efcff7956b21ead.png)
【SPIE独立出版 | 往届均已完成EI检索】2024云计算、性能计算与深度学习国际学术会议(CCPCDL 2024)
2024云计算、性能计算与深度学习国际学术会议(CCPCDL 2024) 2024 International conference on Cloud Computing, Performance Computing and Deep Learning *CCPCDL往届均已完成EI检索,最快会后4个半月完成! 一、重要信息 大会官网:www…...
![](https://img-blog.csdnimg.cn/direct/a73b25a5f5914889a7969d6141730bba.png)
MYSQL 四、mysql进阶 4(索引的数据结构)
一、为什么使用索引 以及 索引的优缺点 1.为什么使用索引 索引是存储引擎用于快速找到数据记录的一种数据结构,就好比一本教科书的目录部分,通过目录中找到对应文章的页码,便可快速定位到需要的文章。Mysql中也是一样的道理,进行数…...
![](https://img-blog.csdnimg.cn/direct/9663204c54574ca891b78f638443355e.jpeg)
360vr党建线上主题展立体化呈现企业的文化理念和品牌形象
在现代科技的引领下,艺术与VR虚拟现实技术相融合必将成为趋势,深圳VR公司华锐视点荣幸地推出VR艺术品虚拟展厅,为您带来前所未有的艺术观赏体验。体验者足不出户即可置身于一个充满创意与灵感的虚拟艺术空间。 我们深入了解每一位客户的需求与…...
![](https://img-blog.csdnimg.cn/direct/722656c9342f42b6a3b5beea3fe7c91b.png)
docker通过容器id查看运行命令;Portainer监控管理docker容器
1、docker通过容器id查看运行命令 参考: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…...
![](https://img-blog.csdnimg.cn/img_convert/cb879f953b16214249df322a7f2875df.png)
XMind 2024软件最新版下载及详细安装教程
人所共知的是XMind 在公司和教育领域都有很广泛的应用,在公司中它能够用来进行会议管理、项目管理、信息管理、计划和XMind 被认为是一种新一代演示软件的模式。也就是说XMind不仅能够绘制思维导图,还能够绘制鱼骨图、二维图、树形图、逻辑图、组织结构…...
![](https://www.ngui.cc/images/no-images.jpg)
代码随想录算法训练营第四十四天 | 322. 零钱兑换、279.完全平方数、139.单词拆分、多重背包理论基础、背包问题总结
322. 零钱兑换 题目链接:https://leetcode.cn/problems/coin-change/ 文档讲解:https://programmercarl.com/0322.%E9%9B%B6%E9%92%B1%E5%85%91%E6%8D%A2.html 视频讲解:https://www.bilibili.com/video/BV14K411R7yv/ 思路 确定dp数组以及下…...
![](https://img-blog.csdnimg.cn/direct/f075b3cc90e241528d5b9103109bf1c0.png)
开源AGV调度系统OpenTCS中的路由器(router)详解
OpenTCS中的任务分派器router详解 1. 引言2. 路由器(router)2.1 代价计算函数(Cost functions)2.2 2.1 Routing groups2.1 默认的停车位置选择2.2 可选停车位置属性2.3 默认的充电位置选择2.4 即时运输订单分配 3. 默认任务分派器的配置项4. 参考资料与源…...
![](https://www.ngui.cc/images/no-images.jpg)
关于下载 IDEA、WebStorm 的一些心得感想
背景 实习第一天的时候,睿哥便吩咐我下载一些软件,这些软件以后在写项目的时候会用到,他叫我先装IDEA,WebStorm,微信开发者工具,git,还有Navicat。 这些软件能够被我们正常使用,无非就通过三步…...
![](https://img-blog.csdnimg.cn/direct/2ecf014a489f4b26bfeb60ee737b5fb0.jpeg)
C#使用Scoket实现服务器和客户端互发信息
20240616 By wdhuag 目录 前言: 参考: 一、服务器端: 1、服务器端口绑定: 2、服务器关闭: 二、客户端: 1、客户端连接: 2、客户端断开: 三、通讯: 1、接收信…...
![](https://www.ngui.cc/images/no-images.jpg)
【经验分享】SpringCloud + MyBatis Plus 配置 MySQL,TDengine 双数据源
概述 因为项目中采集工厂中的设备码点的数据量比较大,需要集成TDengine时序数据库,所以需要设置双数据源 操作步骤 导入依赖 <!-- 多数据源支持 --><dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-s…...
![](https://www.ngui.cc/images/no-images.jpg)
Pycharm 忽略文件
安装 .ignore插件 规则示例 罗列一些常遇到.getignore忽略规则的使用示例: 1. 在已忽略文件夹中不忽略指定文件夹: /libs/* !/libs/extend/ 2. 在已忽略文件夹中不忽略指定文件 /libs/* !/libs/extend/fastjson.jar 3.只忽略libs目录…...
![](https://img-blog.csdnimg.cn/direct/16c1a267ff3c4fd39ba3680ab123b606.png)
爬虫学习。。。。
爬虫的概念: 爬虫是一种自动化信息采集程序或脚本,用于从互联网上抓取信息。 它通过模拟浏览器请求站点的行为,获取资源后分析并提取有用数据,这些数据可以是HTML代码、JSON数据或二进制数据(如图片、视频)…...
![](https://img-blog.csdnimg.cn/direct/88078b5fce7e4ca7b252785b840c58e6.jpeg)
美国铁路客运巨头Amtrak泄漏旅客数据,数据销毁 硬盘销毁 文件销毁
旅客的Guest Rewards常旅客积分账户的个人信息被大量窃取。 美国国家客运铁路公司(Amtrak)近日披露了一起数据泄露事件,旅客的Guest Rewards常旅客积分账户的个人信息被大量窃取。 根据Amtrak向马萨诸塞州提交的泄露通知,5月15日…...
![](https://img-blog.csdnimg.cn/img_convert/4c429504b7492308e8abcd002cab47e8.png)
LabVIEW与Matlab联合编程的途径及比较
LabVIEW和Matlab联合编程可以通过多种途径实现,包括调用Matlab脚本节点、使用LabVIEW MathScript RT模块、利用ActiveX和COM接口,以及通过文件读写实现数据交换。每种方法都有其独特的优势和适用场景。本文将详细比较这些方法,帮助开发者…...
![](https://img-blog.csdnimg.cn/direct/84f4e601e5eb44c0902ffe902443bfa3.png)
秋招突击——6/16——复习{(单调队列优化DP)——最大子序和,背包模型——宠物小精灵收服问题}——新作{二叉树的后序遍历}
文章目录 引言复习(单调队列优化DP)——最大子序和单调队列的基本实现思路——求可移动窗口中的最值总结 背包模型——宠物小精灵收服问题思路分析参考思路分析 新作二叉树的后续遍历加指针调换 总结 引言 复习 (单调队列优化DP)…...
![](https://img-blog.csdnimg.cn/direct/31abfbc50d3c4bd09ce2dffae6cdeaca.png)
SAR动目标检测系列:【4】动目标二维速度估计
在三大类杂波抑制技术(ATI、DPCA和STAP)中,STAP技术利用杂波与动目标在二维空时谱的差异,以信噪比最优为准则,对地杂波抑制的同时有效保留动目标后向散射能量,有效提高运动目标的检测概率和动目标信号输出信杂比,提供理…...
![](https://img-blog.csdnimg.cn/direct/c943572ba5984664a99ee73f3d18b519.png)
JavaEE多线程(2)
文章目录 1..多线程的安全1.1出现多线程不安全的原因1.2解决多线程不安全的⽅法1.3三种典型死锁场景1.4如何避免死锁问题2.线程等待通知机制2.1等待通知的作用2.2等待通知的方法——wait2.3唤醒wait的方法——notify 1…多线程的安全 1.1出现多线程不安全的原因 线程在系统中…...
![](https://img-blog.csdnimg.cn/img_convert/8b3d8a989ff49fcf6c503c87e821f06c.jpeg)
中新赛克两款数据安全产品成功获得“可信数安”评估测试证书
6月19日,2024数据智能大会在北京盛大召开。 会上,中国2024年上半年度“可信数安”评估测试证书正式颁发。中新赛克两款参评产品凭借过硬的技术水准和卓越的应用效果,成功获得专项测试证书。 2024年上半年度“可信数安”评估测试通过名单 中新…...
![](https://img-blog.csdnimg.cn/direct/0584ce142d664d68a0e7bd4a0eef5b5e.png)
代码随想录——分割回文串(Leetcode 131)
题目链接 回溯 class Solution {List<List<String>> res new ArrayList<List<String>>();List<String> list new ArrayList<String>();public List<List<String>> partition(String s) {backtracking(s, 0);return res;}p…...
![](https://www.ngui.cc/images/no-images.jpg)
Rust 学习方法及学习路线汇总
Rust 学习方法及学习路线汇总 Rust 是一种系统编程语言,旨在提供安全性、并发性和高性能。它是由 Mozilla 公司开发的,于 2010 年首次发布。Rust 能够帮助开发者编写可靠和高效的软件,因此受到了广泛的关注和认可。 如果你有兴趣学习 Rust&…...
![](https://img-blog.csdnimg.cn/img_convert/0185fb9ff867c929e49a813c41046464.jpeg)
一名女DBA的感谢信,到底发生了什么?
昨日我们收到这样一通来电 “早上九点刚上班便收到业务投诉电话,系统卡顿,接口失败率大增,怀疑数据库问题。打开运维平台发现是国产库,生无可恋,第一次生产环境遇到国产库性能问题,没什么排查经验…...
![](https://img-blog.csdnimg.cn/img_convert/aa2581dee9e4761d31f2389eaeac1932.png)
群晖NAS本地部署并运行一个基于大语言模型Llama2的个人本地聊天机器人
前言 本文主要分享如何在群晖 NAS 本地部署并运行一个基于大语言模型 Llama 2 的个人本地聊天机器人并结合内网穿透工具发布到公网远程访问。本地部署对设备配置要求高一些,如果想要拥有比较好的体验,可以使用高配置的服务器设备. 目前大部分大语言模型的产品都是基于网络线上…...
![](https://img-blog.csdnimg.cn/direct/dc8db1bd3e9e40a2b510e10f69cf8341.png)
HarmonyOS模拟器(phone-x86-api9)一直卡顿的解决方法
在DevEco Studio 3.1.1 Release版本中的Device Manager中创建本地的模拟器,创建phone-x86-api9模拟器成功,但是启动该新建的模拟器一直显示"HarmonyOS"logo图片,然后一直卡在这里,运行结果如下所示: 检查模…...
![](/images/no-images.jpg)
河北邢台做网站/谷歌seo搜索
实现一个简易版的express实现的功能实现步骤总结实现的功能 首先说明一下需要实现那些功能 use函数,这个函数有2个参数,第一个参数是需要匹配的路径,可不传,默认是匹配所有路径,第二个是回调函数。all函数࿰…...
![](https://s1.51cto.com/images/blog/201804/28/e7841343356f1e0f85ce2e7bdb853216.gif)
怎么用电脑做网站主机/互联网营销师培训课程免费
装饰器应用练习 一、实现一个cache装饰器,实现可过期被清除的功能 简化设计,函数的形参定义不包含可变位置参数、可变关键词参数和keyword-only参数可以不考虑缓存满了之后的换出问题 1)原始def cache(fn):import inspectlocal_cache {}def wrapper(*ar…...
![](/images/no-images.jpg)
怎么做家政的网站/企业网站的类型
python安装dlib库报错问题及解决方法发布时间:2020-09-01 06:02:57...
![](https://img-blog.csdnimg.cn/img_convert/d2b6f4039244261dc04e1bdfc1cc873c.gif)
丹东网站网站建设/济南seo培训
你觉得一身才能无处施展吗?你想获得百万奖金吗?快来加入众测申请成为看雪专家吧!厂商评级结束即付款!测试要求测试范围:Windows程序、智能设备、Android、iOS等二进制程序的漏洞挖掘。项目测试内容及要求:1…...
![](https://img-blog.csdnimg.cn/dc8b1c1a28f44df8903b5e0c259b8fcc.png?#pic_center)
住房和城乡建设委网站/百度客服号码
一、 请问你是如何做接口测试的? 大体来说,经历以下过程:接口需求调研、接口测试工具选择、接口测试用例编写、接口测试执行、接口测试回归、接口测试自动化持续集成。具体来说,接口测试流程分成以下九步: 第一步&am…...
![](https://img-blog.csdnimg.cn/img_convert/78e90e344b3f96dcc602811c606a22a2.png)
免费微网站系统/google服务框架
什么是循环依赖?举个例子/** * A 类,引入 B 类的属性 b */public class A { private B b;}/** * B 类,引入 A 类的属性 a */public class B { private A a;}再看个简单的图:像这样,创建 a 的时候需要依赖 bÿ…...