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

tcpdump指南(1)

大家读完觉得有意义记得关注和点赞!!!

tcpdump是一种在网络上转储流量的网络工具。 这篇文章服务器作为一些常用命令的指南。如需完整指南, 请参阅手册页,或在 Linux 计算机上。man tcpdump

1 基本选项

帮助摘要:

<span style="color:#333333"><span style="background-color:#f8f8f8"><span style="background-color:#f6f8fa"><code>tcpdump [ -AbdDefhHIJKlLnNOpqStuUvxX# ] [ -B buffer_size ][ -c count ][ -C file_size ] [ -G rotate_seconds ] [ -F file ][ -i interface ] [ -j tstamp_type ] [ -m module ] [ -M secret ][ --number ] [ -Q in|out|inout ][ -r file ] [ -V file ] [ -s snaplen ] [ -T type ] [ -w file ][ -W filecount ][ -E spi@ipaddr algo:secret,...  ][ -y datalinktype ] [ -z postrotate-command ] [ -Z user ][ --time-stamp-precision=tstamp_precision ][ --immediate-mode ] [ --version ][ expression ]
</code></span></span></span>

运行需要 root 权限,因此 如果您不是 root 用户,请发表这篇文章。tcpdumpsudo

1.1 捕获选项

在主机上捕获流量的最简单方法是使用 option 指定设备,输出可能如下所示:-i

<span style="color:#333333"><span style="background-color:#f8f8f8"><span style="background-color:#f6f8fa"><code><span style="color:#008080">$ </span><span style="color:#0086b3">sudo </span>tcpdump <span style="color:#000080">-i</span> eth0 <span style="color:#999988"><em># use CTL-C to terminate it</em></span>
18:10:14.578057 IP 192.168.1.3.ssh <span style="color:#000000"><strong>></strong></span> 192.168.1.124.53519: Flags <span style="color:#000000"><strong>[</strong></span>P.], <span style="color:#0086b3">seq </span>2350:2350, ack 166, win 198, length 240
18:10:14.578775 IP 192.168.1.124.53519 <span style="color:#000000"><strong>></strong></span> 192.168.1.3.ssh: Flags <span style="color:#000000"><strong>[</strong></span>.], ack 240, win 252, length 0
18:10:14.634826 ARP, Request who-has 192.168.1.68 tell 192.168.1.81, length 46
18:10:14.670785 ARP, Request who-has 192.168.1.146 tell 192.168.1.81, length 46
^C
4 packets captured
39 packets received by filter
0 packets dropped by kernel
</code></span></span></span>

一个进程只能捕获一个设备,要捕获多个设备(例如,同时捕获 和 ),您必须启动两个进程:tcpdumpeth0eth1

<span style="color:#333333"><span style="background-color:#f8f8f8"><span style="background-color:#f6f8fa"><code><span style="color:#008080">$ </span>tcpdump <span style="color:#000080">-i</span> eth0 <span style="color:#000000"><strong>[</strong></span>OPTIONS]<span style="color:#008080">$ </span>tcpdump <span style="color:#000080">-i</span> eth1 <span style="color:#000000"><strong>[</strong></span>OPTIONS]
</code></span></span></span>

1.2 输出选项

本节介绍在标准输出上显示数据包信息的选项。

冗长

  • -v详细
  • -vv更详细
  • -vvv更冗长

IP、协议、端口

  • -n打印 IP 而不是主机名。这可用于避免 DNS 查找
  • -nn打印整数协议/端口号而不是 ProtoCL/端口名称,例如 vs , vs22ssh80http

例子:

<span style="color:#333333"><span style="background-color:#f8f8f8"><span style="background-color:#f6f8fa"><code><span style="color:#008080">$ </span>tcpdump <span style="color:#000080">-i</span> eth0
14:54:35.161548 IP ctn-1.example.com <span style="color:#000000"><strong>></strong></span> ctn-2.example.com: ICMP <span style="color:#0086b3">echo </span>request, <span style="color:#0086b3">id </span>29455, <span style="color:#0086b3">seq </span>0, length 64
14:54:35.161599 IP ctn-2.example.com <span style="color:#000000"><strong>></strong></span> ctn-1.example.com: ICMP <span style="color:#0086b3">echo </span>reply, <span style="color:#0086b3">id </span>29455, <span style="color:#0086b3">seq </span>0, length 64<span style="color:#008080">$ </span>tcpdump <span style="color:#000080">-n</span> <span style="color:#000080">-i</span> eth0
14:55:34.296206 IP 192.168.1.3 <span style="color:#000000"><strong>></strong></span> 192.168.1.4: ICMP <span style="color:#0086b3">echo </span>request, <span style="color:#0086b3">id </span>29711, <span style="color:#0086b3">seq </span>0, length 64
14:55:34.296259 IP 192.168.1.4 <span style="color:#000000"><strong>></strong></span> 192.168.1.3: ICMP <span style="color:#0086b3">echo </span>reply, <span style="color:#0086b3">id </span>29711, <span style="color:#0086b3">seq </span>0, length 64
</code></span></span></span>

MAC地址

  • -e同时打印 MAC 地址
<span style="color:#333333"><span style="background-color:#f8f8f8"><span style="background-color:#f6f8fa"><code><span style="color:#008080">$ </span>tcpdump <span style="color:#000080">-n</span> <span style="color:#000080">-e</span> <span style="color:#000080">-i</span> eth0
15:05:12.225901 fa:16:3e:39:8c:fd <span style="color:#000000"><strong>></strong></span> 00:22:0d:27:c2:45, ethertype IPv4 <span style="color:#000000"><strong>(</strong></span>0x0800<span style="color:#000000"><strong>)</strong></span>, length 294: 192.168.1.3 <span style="color:#000000"><strong>></strong></span> 192.168.1.124: Flags <span style="color:#000000"><strong>[</strong></span>P.], <span style="color:#0086b3">seq</span> ...
15:05:12.226585 00:22:0d:27:c2:45 <span style="color:#000000"><strong>></strong></span> fa:16:3e:39:8c:fd, ethertype IPv4 <span style="color:#000000"><strong>(</strong></span>0x0800<span style="color:#000000"><strong>)</strong></span>, length 60: 192.168.1.124 <span style="color:#000000"><strong>></strong></span> 192.168.1.3: Flags <span style="color:#000000"><strong>[</strong></span>.], ack ...
</code></span></span></span>

数据包内容

  • -x以十六进制打印每个数据包的数据(减去其链路级别标头)
  • -xx以十六进制打印每个数据包的数据,包括其链路级别报头。
  • -X以十六进制和 ASCII 格式打印每个数据包的数据(减去其链路级别标头)。
  • -XX以十六进制和 ASCII 格式打印每个数据包的数据,包括其链路级别标头。
<span style="color:#333333"><span style="background-color:#f8f8f8"><span style="background-color:#f6f8fa"><code><span style="color:#008080">$ </span>tcpdump <span style="color:#000080">-i</span> eth0 <span style="color:#000080">-x</span>
19:33:33.724674 IP 192.168.1.3 <span style="color:#000000"><strong>></strong></span> 192.168.1.4: ICMP <span style="color:#0086b3">echo </span>request, <span style="color:#0086b3">id </span>10258, <span style="color:#0086b3">seq </span>0, length 640x0000:  4500 0054 6e2b 4000 4001 4926 c0a8 01030x0010:  c0a8 0104 0800 a20e 2812 0000 0f1c 1ec30x0020:  0000 0000 0000 0000 0000 0000 0000 00000x0030:  0000 0000 0000 0000 0000 0000 0000 00000x0040:  0000 0000 0000 0000 0000 0000 0000 00000x0050:  0000 0000
</code></span></span></span>

1.3 保存到文件并从文件中读取

  • -w outfile.pcap将数据包保存到文件
  • -Grotate the dump file, should be used with 选项-w
  • -r outfile.pcap读取捕获的文件

捕获的文件通常以 或 为后缀,表示数据包 capture 文件。捕获的文件与生成的文件完全不同 替换为 ,它仅将标准输出(文本)上的消息重定向到 一个文件。cap.pcap> outfile

<span style="color:#333333"><span style="background-color:#f8f8f8"><span style="background-color:#f6f8fa"><code><span style="color:#999988"><em># save raw packets to file</em></span>
<span style="color:#008080">$ </span>tcpdump <span style="color:#000080">-i</span> eth0 <span style="color:#000080">-w</span> test.pcap<span style="color:#999988"><em># redirect logs to text file</em></span>
<span style="color:#008080">$ </span>tcpdump <span style="color:#000080">-i</span> eth0 <span style="color:#000000"><strong>></strong></span> test.txt
</code></span></span></span>

捕获的文件可以在以后再次打开:

<span style="color:#333333"><span style="background-color:#f8f8f8"><span style="background-color:#f6f8fa"><code><span style="color:#008080">$ </span>tcpdump <span style="color:#000080">-e</span> <span style="color:#000080">-nn</span> <span style="color:#000080">-r</span> test.pcap <span style="color:#999988"><em># read captured file content, print ether header, and be more numeric</em></span>
15:10:40.111214 fa:16:30:a1:33:27 <span style="color:#000000"><strong>(</strong></span>oui Unknown<span style="color:#000000"><strong>)</strong></span> <span style="color:#000000"><strong>></strong></span> fa:16:3f:e2:16:17 <span style="color:#000000"><strong>(</strong></span>oui Unknown<span style="color:#000000"><strong>)</strong></span>, ethertype 802.1Q <span style="color:#000000"><strong>(</strong></span>0x8100<span style="color:#000000"><strong>)</strong></span>, length 78: <span style="color:#000000"><strong>[</strong></span>|vlan]
15:10:40.111275 fa:16:30:a1:33:27 <span style="color:#000000"><strong>(</strong></span>oui Unknown<span style="color:#000000"><strong>)</strong></span> <span style="color:#000000"><strong>></strong></span> fa:16:3f:e2:16:17 <span style="color:#000000"><strong>(</strong></span>oui Unknown<span style="color:#000000"><strong>)</strong></span>, ethertype 802.1Q <span style="color:#000000"><strong>(</strong></span>0x8100<span style="color:#000000"><strong>)</strong></span>, length 78: <span style="color:#000000"><strong>[</strong></span>|vlan]
</code></span></span></span>

或者,这些文件也可以通过更专业的流量分析来打开 工具,例如 Wireshark。

拆分捕获的文件

  • -C <N>每 N MB 写入一次 pcap 文件。
  • -W <N> 最多保留 N 份,然后开始轮换。

示例:读取一个大的 pcap 文件,将其拆分为 10MB 的块

<span style="color:#333333"><span style="background-color:#f8f8f8"><span style="background-color:#f6f8fa"><code><span style="color:#008080">$ </span>tcpdump <span style="color:#000080">-r</span> a.pcap <span style="color:#000080">-C</span> 10 b.pcap
<span style="color:#008080">$ </span><span style="color:#0086b3">ls
</span>b.pcap0 b.pcap1 b.pcap2 ...
</code></span></span></span>

1.4 停止捕获

CTL-C将停止捕获。

此外,收到数据包后会自动退出。-c <count><count>

<span style="color:#333333"><span style="background-color:#f8f8f8"><span style="background-color:#f6f8fa"><code><span style="color:#008080">$ </span>tcpdump <span style="color:#000080">-i</span> eth0 <span style="color:#000080">-c</span> 2
15:00:18.129859 IP 192.168.1.3.ssh <span style="color:#000000"><strong>></strong></span> 192.168.1.4.53519: Flags <span style="color:#000000"><strong>[</strong></span>P.], <span style="color:#0086b3">seq</span> ...
15:00:18.130500 IP 192.168.1.4.53519 <span style="color:#000000"><strong>></strong></span> 192.168.1.3.ssh: Flags <span style="color:#000000"><strong>[</strong></span>.], ack ...
2 packets captured
</code></span></span></span>

2 匹配表达式

tcpdump支持筛选表达式,这就是真正的强大之处 地方。完整的指南可以从它的手册页获得, 或通过:pcap-filter

<span style="color:#333333"><span style="background-color:#f8f8f8"><span style="background-color:#f6f8fa"><code><span style="color:#008080">$ </span>man 7 pcap-filter
</code></span></span></span>

如果未指定筛选表达式,tcpdump 将捕获 设备,该装置的挂载可能很大。使用筛选条件表达式时,它只会捕获与表达式匹配的表达式。

<span style="color:#333333"><span style="background-color:#f8f8f8"><span style="background-color:#f6f8fa"><code><span style="color:#008080">$ </span>tcpdump <span style="color:#000000"><strong>[</strong></span>OPTIONS] <span style="color:#000000"><strong>[</strong></span>expression]
</code></span></span></span>

2.1 匹配主机

  • host <hostname or IP>- 捕获发送自和发送到的数据包 host
  • src host <hostname or IP>- 捕获 host
  • dst host <hostname or IP>- 捕获发送到 host

例子:

<span style="color:#333333"><span style="background-color:#f8f8f8"><span style="background-color:#f6f8fa"><code><span style="color:#008080">$ </span>tcpdump <span style="color:#000080">-i</span> eth0 host baidu.com   <span style="color:#999988"><em># traffic from or to baidu.com</em></span>
<span style="color:#008080">$ </span>tcpdump <span style="color:#000080">-i</span> eth0 host 192.168.1.3 <span style="color:#999988"><em># traffic from or to 192.168.1.3</em></span><span style="color:#008080">$ </span>tcpdump <span style="color:#000080">-i</span> eth0 src host 192.168.1.3
<span style="color:#008080">$ </span>tcpdump <span style="color:#000080">-i</span> eth0 dst host 192.168.1.3
</code></span></span></span>

2.2 匹配MAC地址和VLAN

  • ether host <MAC>- 捕获发送自和发送到的数据包 <MAC>
  • ether src <MAC>- 捕获 <MAC>
  • ether dst <MAC>- 捕获发送到 <MAC>
  • vlan <VLAN ID>- 匹配 VLAN ID

2.3 匹配网络(ip 范围)

  • net <NET> mask <MASK>- 仅限 IPv4
  • net <NET>/<LEN>- IPv4/IPv6 协议

可能符合 和 的条件。srcdst

例子:

<span style="color:#333333"><span style="background-color:#f8f8f8"><span style="background-color:#f6f8fa"><code>$ tcpdump -i eth0 net 192.168.1.0 mask 255.255.255.0
$ tcpdump -i eth0 net 192.168.1.0/24
</code></span></span></span>

2.4 匹配端口和端口范围

  • port <port>数据包往返 <port>
  • src port <port>数据包来自 <port>
  • dst port <port>- 数据包 <port>
  • portrange <port1>-<port2>数据包往返 <port1>-<port2>
  • src portrange <port1>-<port2>数据包来自 <port1>-<port2>
  • dst portrange <port1>-<port2>- 数据包 <port1>-<port2>

例子:

<span style="color:#333333"><span style="background-color:#f8f8f8"><span style="background-color:#f6f8fa"><code><span style="color:#008080">$ </span>tcpdump <span style="color:#000080">-i</span> eth0 port 80
<span style="color:#008080">$ </span>tcpdump <span style="color:#000080">-i</span> eth0 dst port 80
<span style="color:#008080">$ </span>tcpdump <span style="color:#000080">-i</span> eth0 src portrange 8000-8080
</code></span></span></span>

2.5 匹配协议 (L2-L4)

匹配 L3 报头中的协议:

  • ip proto <PROTO>- 原型:icmp、icmp6、igmp、igrp、pim、ah、esp、vrrp、udp 或 tcp

以下是缩写:

  • icmp = proto icmp
  • tcp = proto tcp
  • udp = proto udp

匹配 L2 报头中的协议:

  • ether proto <PROTO>- 原型:ip、ip6、arp、rarp、atalk、aarp、decnet、sca、lat、mopdl、moprc、iso、stp、ipx 或 netbeui

以下是缩写:

  • ip = ether proto ip
  • ip6 = ether proto ip6
  • arp = ether proto arp
  • rarp = ether proto rarp
$ tcpdump -i eth0 arp
$ tcpdump -i eth0 icmp

2.6 匹配流量方向(入口/出口)

  • --direction=[in|out|inout]或者 - 请注意,并非所有平台都支持此功能-Q [in|out]

2.7 匹配 TCP 标志

TCP 标志(位):

  1. tcp-syn
  2. tcp-ack
  3. tcp-fin
  4. tcp-rst
  5. tcp-push

根据上述标志筛选表达式:

  • 'tcp[tcpflags] & (tcp-rst) != 0':捕获重置数据包
  • 'tcp[tcpflags] & (tcp-syn) != 0'或 : 捕获数据包tcp[13] & 2 != 0syn
  • 'tcp[tcpflags] & (tcp-syn|tcp-ack) != 0':捕获 TCP 握手数据包
<span style="color:#333333"><span style="background-color:#f8f8f8"><span style="background-color:#f6f8fa"><code><span style="color:#008080">$ </span>tcpdump <span style="color:#000080">-nn</span> <span style="color:#000080">-i</span> eth0 <span style="color:#dd1144">'tcp[tcpflags] & (tcp-rst) != 0'</span>
</code></span></span></span>

2.8 逻辑运算符

使用逻辑运算符,我们可以将简单的表达式组合成一个复杂的表达式。

  • and&&
  • or||
  • not!

例子:

<span style="color:#333333"><span style="background-color:#f8f8f8"><span style="background-color:#f6f8fa"><code><span style="color:#999988"><em># capture traffic: 192.168.1.3<->192.168.1.4:80</em></span>
<span style="color:#008080">$ </span>tcpdump <span style="color:#000080">-i</span> eth0 <span style="color:#dd1144">'host 192.168.1.3 and (host 192.168.1.4 and port 80)'</span><span style="color:#999988"><em># capture traffic: 192.168.1.3->192.168.1.4:80</em></span>
<span style="color:#008080">$ </span>tcpdump <span style="color:#000080">-i</span> eth0 <span style="color:#dd1144">'src host 192.168.1.3 and (dst host 192.168.1.4 and port 80)'</span><span style="color:#999988"><em># capture traffic: 192.168.1.0/24->10.1.1.4</em></span>
<span style="color:#008080">$ </span>tcpdump <span style="color:#000080">-i</span> eth0 <span style="color:#dd1144">'src net 192.168.1.0/24 and dst host 10.1.1.4'</span> <span style="color:#000080">-w</span> test.pcap
</code></span></span></span>

3 高级匹配(报头字段/位匹配)

这部分是从 [4] 中借来的。

一般格式:

  1. proto[x:y]:从第 个字节开始,提取连续的字节,其中从 0 开始。xyx

    例如:ip[2:2] 表示提取第 3 个第 4 个字节。

  2. 提取的结果可以进一步处理:例如result & 0xF != 0

3.1 匹配 IP 标头中的字段

IP 标头:

<span style="color:#333333"><span style="background-color:#f8f8f8"><span style="background-color:#f6f8fa"><code>byte:       0               1               2               3bit  0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|Version|  IHL  |Type of Service|          Total Length         |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|         Identification        |Flags|      Fragment Offset    |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|  Time to Live |    Protocol   |         Header Checksum       |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|                       Source Address                          |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|                    Destination Address                        |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|                    Options                    |    Padding    | <-- optional+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|                            DATA ...                           |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</code></span></span></span>
  • ip[6] = 32:字段中带有 (More Fragments) 的数据包,这表示这是一个分段数据包MF=1Flags
  • ip[8] < 5:包含TTL < 5
  • ip[2:2] > 600:包含字节(字段)的数据包length > 600Total Length

3.2 匹配 ICMP 标头中的字段

3.3 匹配 TCP 标头中的字段

<span style="color:#333333"><span style="background-color:#f8f8f8"><span style="background-color:#f6f8fa"><code>byte:       0               1               2               3bit  0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          Source Port          |       Destination Port        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                        Sequence Number                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Acknowledgment Number                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Data |       |C|E|U|A|P|R|S|F|                               |
| Offset|  Res. |W|C|R|C|S|S|Y|I|            Window             |
|       |       |R|E|G|K|H|T|N|N|                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           Checksum            |         Urgent Pointer        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Options                    |    Padding    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                             data                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</code></span></span></span>
  • tcp[0:2] > 1024或 :包含tcp src portrange 1025-65535src port > 1024
  • tcp[13] = 2或 : 数据包tcp[tcpflags] & tcp-syn != 0syn
  • tcp[13] = 18:包syn+ack
  • tcp[13] & 2 = 2:或数据包synsyn+ack
  • tcp[13] & 1 = 1:包fin
  • tcp[13] & 4 = 4:包rst

3.4 匹配 UDP 标头中的字段

筛选反向 DNS 查找请求 (dig -x <ipv6>)

使用 DNS 服务器查询域名的 IPv6 地址 :fe80::5107:a8da:61ec:b2268.8.8.8

<span style="color:#333333"><span style="background-color:#f8f8f8"><span style="background-color:#f6f8fa"><code><span style="color:#008080">$ </span>dig <span style="color:#000080">-x</span> fe80::5107:a8da:61ec:b226 @8.8.8.8
...
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;6.2.2.b.c.e.1.6.a.d.8.a.7.0.1.5.0.0.0.0.0.0.0.0.0.0.0.0.0.8.e.f.ip6.arpa. IN PTR;; AUTHORITY SECTION:
ip6.arpa.               3300    IN      SOA     b.ip6-servers.arpa. nstld.iana.org. 2022092102 1800 900 604800 3600
</code></span></span></span>

纯文本将被编码到 UDP 数据字段中。使用 wireshark,您可以轻松确定偏移量 文本中:单击二进制数据,则相应的文本将突出显示:6.2.2.b.c.e.1.6.a.d.8.a.7.0.1.5.0.0.0.0.0.0.0.0.0.0.0.0.0.8.e.f.ip6.arpa.

例如,文本 ip6。(十六进制0x69 0x70 0x36 0x04) 是 UDP 标头中的 85~87 个八位字节, 因此,我们可以按此代码段进行筛选以忽略所有其他 DNS 查询

<span style="color:#333333"><span style="background-color:#f8f8f8"><span style="background-color:#f6f8fa"><code><span style="color:#008080">$ </span><span style="color:#0086b3">sudo </span>tcpdump <span style="color:#000080">-nn</span> <span style="color:#000080">-x</span> <span style="color:#000080">-i</span> enp0s3 dst port 53 and dst host 8.8.8.8 and <span style="color:#dd1144">"udp[85:4] = 0x69703604"</span>
18:49:35.301843 IP 10.0.2.15.45855 <span style="color:#000000"><strong>></strong></span> 8.8.8.8.53: 34915+ <span style="color:#000000"><strong>[</strong></span>1au] PTR? 6.2.2.b.c.e.1.6.a.d.8.a.7.0.1.5.0.0.0.0.0.0.0.0.0.0.0.0.0.8.e.f.ip6.arpa. <span style="color:#000000"><strong>(</strong></span>113<span style="color:#000000"><strong>)</strong></span>0x0000:  4500 008d 9337 0000 4011 cb0a 0a00 020f0x0010:  0808 0808 b31f 0035 0079 1ca9 8863 01200x0020:  0001 0000 0000 0001 0136 0132 0132 01620x0030:  0163 0165 0131 0136 0161 0164 0138 01610x0040:  0137 0130 0131 0135 0130 0130 0130 01300x0050:  0130 0130 0130 0130 0130 0130 0130 01300x0060:  0130 0138 0165 0166 0369 7036 0461 72700x0070:  6100 000c 0001 0000 2910 0000 0000 00000x0080:  0c00 0a00 0854 a19a 7f83 9f15 c4
</code></span></span></span>

您还可以按 0.8.e.f 进行过滤,这是所有 IPv6 链路本地地址 () 的开头。 将此练习留给读者。fe80

3.5 匹配 HTTP 标头中的字段

  • tcpdump <options> | grep GET:HTTP GET 请求

4 其他

4.1 截断数据包长度

-s <LEN>将每个数据包截断为 Length Bytes。这可能在很大程度上 减小生成的 PCAP 文件大小。LEN

例如,如果只想捕获 L2 和 L3 报头,则可以截断每个报头 数据包到 14(以太网报头)+ 2(潜在 VLAN)+ 20(IP 报头基本部分)= 36 字节,因此:

<span style="color:#333333"><span style="background-color:#f8f8f8"><span style="background-color:#f6f8fa"><code><span style="color:#008080">$ </span>tcpdump <span style="color:#000080">-i</span> eth0 <span style="color:#000080">-s</span> 36 <span style="color:#000080">-w</span> test.pcap</code></span></span></span>

相关文章:

tcpdump指南(1)

大家读完觉得有意义记得关注和点赞&#xff01;&#xff01;&#xff01; tcpdump是一种在网络上转储流量的网络工具。 这篇文章服务器作为一些常用命令的指南。如需完整指南&#xff0c; 请参阅手册页&#xff0c;或在 Linux 计算机上。man tcpdump 1 基本选项 帮助摘要&#…...

Linux(Centos 7.6)网卡信息没有了问题处理

1.问题现象 虚拟机打开后&#xff0c;使用ifconfig查看IP信息&#xff0c;虚拟机默认的网卡名称是ens33&#xff0c;ifconfig没有看到相关问题&#xff0c;远程连接工具Xshell也不能正常访问该虚拟机。 [rootnode1 ~]# ifconfig lo: flags73<UP,LOOPBACK,RUNNING> mtu…...

基于SpringBoot的校园二手交易平台的设计与实现(源码+SQL+LW+部署讲解)

文章目录 摘 要1. 第1章 选题背景及研究意义1.1 选题背景1.2 研究意义1.3 论文结构安排 2. 第2章 相关开发技术2.1 前端技术2.2 后端技术2.3 数据库技术 3. 第3章 可行性及需求分析3.1 可行性分析3.2 系统需求分析 4. 第4章 系统概要设计4.1 系统功能模块设计4.2 数据库设计 5.…...

springboot523基于Spring Boot的大学校园生活信息平台的设计与实现(论文+源码)_kaic

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本大学校园生活信息平台就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据…...

week05_nlp大模型训练·词向量文本向量

1、词向量训练 1.1 CBOW&#xff08;两边预测中间&#xff09; 一、CBOW 基本概念 CBOW 是一种用于生成词向量的方法&#xff0c;属于神经网络语言模型的一种。其核心思想是根据上下文来预测中心词。在 CBOW 中&#xff0c;输入是目标词的上下文词汇&#xff0c;输出是该目标…...

FreeRTOS Lwip Socket APi TCP Server 1对多

源文件 /********************************************************************************* file lwip_tcp_driver.cpp* brief TCP Server implementation using LwIP******************************************************************************* at…...

SonarQube相关的maven配置及使用

一、maven 全局配置 <settings><pluginGroups><pluginGroup>org.sonarsource.scanner.maven</pluginGroup></pluginGroups><profiles><profile><id>sonar</id><activation><activeByDefault>true</acti…...

【蓝桥杯选拔赛真题87】python输出字符串 第十五届青少年组蓝桥杯python选拔赛真题 算法思维真题解析

目录 python输出字符串 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 七、 推荐资料 1、蓝桥杯比赛 2、考级资料 3、其它资料 python输出字符串 第十五届蓝桥杯青少年组python比赛选拔赛真题详细解析…...

嵌入式开发中的机器人表情绘制

机器人的表情有两种&#xff0c;一种是贴图&#xff0c;一钟是调用图形API自绘。 贴图效果相对比较好&#xff0c;在存储空间大的情况下是可以采用的。 自绘比较麻烦&#xff0c;但在资源和空缺少的情况下&#xff0c;也是很有用的。而且自绘很容易通过调整参数加入随机效果&…...

本机实现Llama 7B推理及部署

本机实现Llama 7B推理及部署 使用llamafile在Windows系统部署 部署步骤:首先从https://www.modelscope.cn/api/v1/models/bingal/llamafile-models/repo?Revision=master&FilePath=llamafile-0.6.2.win.zip下载llamafile并解压得到llamafile.exe文件, 再从https://www.…...

HarmonyOS NEXT 实战之元服务:静态案例效果---我的热门应用服务

背景&#xff1a; 前几篇学习了元服务&#xff0c;后面几期就让我们开发简单的元服务吧&#xff0c;里面丰富的内容大家自己加&#xff0c;本期案例 仅供参考 先上本期效果图 &#xff0c;里面图片自行替换 效果图1完整代码案例如下&#xff1a; Index import { authentica…...

二十三种设计模式-工厂方法模式

工厂方法模式是一种创建型设计模式&#xff0c;其核心思想是通过定义一个创建对象的接口&#xff0c;让子类决定实例化哪一个类。工厂方法模式将对象的实例化推迟到子类中进行&#xff0c;从而使得扩展变得容易&#xff0c;而不需要修改现有的代码&#xff0c;符合开闭原则&…...

硬件工程师面试题 21-30

把常见的硬件面试题进行总结&#xff0c;方便及时巩固复习。其中包括网络上的资源、大佬们的大厂面试题&#xff0c;其中可能会题目类似&#xff0c;加强印象即可。 更多硬件面试题&#xff1a;硬件工程师面试题 1-10硬件工程师面试题 11-20 21、单片机最小系统需要什么&#x…...

深度学习中的HTTP:从请求到响应的计算机网络交互

在现代深度学习应用中&#xff0c;HTTP&#xff08;超文本传输协议&#xff09;不仅仅是网页浏览的基础协议&#xff0c;它也在机器学习和人工智能的服务架构中扮演着至关重要的角色。本文将深入探讨HTTP在深度学习中的应用&#xff0c;并阐明它如何支持模型的训练、推理及API服…...

基于submitit实现Python函数的集群计算

一、项目介绍 Submitit是一款轻量级工具&#xff0c;旨在简化Python函数在Slurm集群上的提交过程。它不仅提供了对作业结果、日志文件等的无缝访问&#xff0c;更让开发者能够在本地执行与Slurm集群间切换自如&#xff0c;极大地提高了代码的可移植性和灵活性。 Slurm作为一种…...

开源GTKSystem.Windows.Forms框架:C# Winform跨平台运行深度解析

开源GTKSystem.Windows.Forms框架&#xff1a;C# Winform跨平台运行深度解析 一、跨平台框架的崛起 1.1 跨平台技术的现状与需求 在当今快速发展的科技时代&#xff0c;软件开发的需求日益多样化。随着移动设备和操作系统的不断涌现&#xff0c;开发者面临着前所未有的挑战&…...

uniapp Stripe 支付

引入 Stripe npm install stripe/stripe-js import { loadStripe } from stripe/stripe-js; Stripe 提供两种不同类型组件 Payment Element 和 Card Element&#xff1a;如果你使用的是 Payment Element&#xff0c;它是一个更高级别的组件&#xff0c;能够自动处理多种支…...

虚拟机用网线连其他设备(ROS多机网络配置)

电脑配置 把局域网的网线插入电脑&#xff0c;点击这边 配置以太网的IP 比如说我ROS主机的IP想设为192.168.144.10&#xff0c;那我笔记本的以太网IP可以设为192.168.144.8。 假设还有另外一个电脑&#xff08;ROS从机&#xff09;&#xff0c;他的IP被设置未192.168.144.4…...

20241218-信息安全理论与技术复习题

20241218-信息安全理论与技术复习题 一、习题1 信息安全的基本属性是&#xff08;D )。 A、机密性 B、可用性 C、完整性 D、上面 3 项都是 “会话侦听和劫持技术” 是属于&#xff08;B&#xff09;的技术。 A、 密码分析还原 B、 协议漏洞渗透 C、 应用漏洞分析与渗透 D、 D…...

家谱管理系统|Java|SSM|VUE| 前后端分离

【技术栈】 1⃣️&#xff1a;架构: B/S、MVC 2⃣️&#xff1a;系统环境&#xff1a;Windowsh/Mac 3⃣️&#xff1a;开发环境&#xff1a;IDEA、JDK1.8、Maven、Mysql5.7 4⃣️&#xff1a;技术栈&#xff1a;Java、Mysql、SSM、Mybatis-Plus、VUE、jquery,html 5⃣️数据库…...

音频进阶学习九——离散时间傅里叶变换DTFT

文章目录 前言一、DTFT的解释1.DTFT公式2.DTFT右边释义1&#xff09; 复指数 e − j ω n e^{-j\omega n} e−jωn2&#xff09;序列与复指数相乘 x [ n ] ∗ e − j ω n x[n]*e^{-j\omega n} x[n]∗e−jωn复指数序列复数的共轭正交正交集 3&#xff09;复指数序列求和 3.DTF…...

pytorch 计算图中的叶子节点介绍

1. 什么是叶子节点&#xff1f; 在 PyTorch 的自动微分机制中&#xff0c;叶子节点&#xff08;leaf node&#xff09; 是计算图中&#xff1a; 由用户直接创建的张量&#xff0c;并且它的 requires_gradTrue。这些张量是计算图的起始点&#xff0c;通常作为模型参数或输入变…...

CSS系列(42)-- Backdrop Filter详解

前端技术探索系列&#xff1a;CSS Backdrop Filter详解 &#x1f3a8; 致读者&#xff1a;探索背景滤镜的艺术 &#x1f44b; 前端开发者们&#xff0c; 今天我们将深入探讨 CSS Backdrop Filter&#xff0c;这个强大的视觉效果特性。 基础效果 &#x1f680; 模糊效果 /…...

【文献精读笔记】Explainability for Large Language Models: A Survey (大语言模型的可解释性综述)(一)

****非斜体正文为原文献内容&#xff08;也包含笔者的补充&#xff09;&#xff0c;灰色块中是对文章细节的进一步详细解释&#xff01; 三、传统微调范式&#xff08;Traditional Fine-Tuning Paradigm&#xff09; 在这个范式中&#xff0c;首先在大量未标记的文本数据上预…...

ChatGPT 与 AGI:人工智能的当下与未来走向全解析

在人工智能的浩瀚星空中&#xff0c;AGI&#xff08;通用人工智能&#xff09;无疑是那颗最为璀璨且备受瞩目的星辰。OpenAI 对 AGI 的定义为“在最具经济价值的任务中超越人类的高度自治系统”&#xff0c;并勾勒出其发展的五个阶段&#xff0c;当下我们大多处于以 ChatGPT 为…...

Redis - 1 ( 11000 字 Redis 入门级教程 )

一&#xff1a;服务端高并发分布式结构演进之路 1.1 常见概念 概念定义生活例子类比应用&#xff08;Application&#xff09;/ 系统&#xff08;System&#xff09;为完成一整套服务的程序或一组相互配合的程序群。为完成一项任务而组成的由一个人或一群相互配合的人构成的团…...

python opencv的sift特征检测(Scale-Invariant Feature Transform)

sift 官方文档地址&#xff1a;https://docs.opencv.org/4.10.0/da/df5/tutorial_py_sift_intro.html 创建SIFT实例cv2.SIFT.create()特征检测sift.detect描述子sift.compute/sift.detectAndCompute画特征cv2.drawKeypoints 原图 特征点 代码 import cv2first ./12.pngsif…...

Xilinx FPGA的Bitstream比特流加密设置方法

关于Xilinx FPGA的Bitstream比特流加密设置方法更多信息可参阅应用笔记xapp1084。 使用加密bitstream分两个步骤&#xff1a; 将bitstream的AES密钥存储在FPGA芯片内将使用AES密钥加密的Bitstream通过SPI Flash或JTAG加载至FPGA芯片 AES密钥可以存储在两个存储区之一&#x…...

如何通过深度学习提升大分辨率图像预测准确率?

随着科技的不断进步&#xff0c;图像处理在各个领域的应用日益广泛&#xff0c;特别是在医疗影像、卫星遥感、自动驾驶、安防监控等领域中&#xff0c;大分辨率图像的使用已经成为了一项不可或缺的技术。然而&#xff0c;大分辨率图像带来了巨大的计算和存储压力&#xff0c;同…...

Oracle SqlPlus常用命令简介

参考资料 【SQL*Plus】SETシステム変数の設定前後の具体例 目录 一. 执行系命令1.1 执行系统命令1.2 执行sql脚本文件1.2.1 在数据库中执行sql脚本1.2.2 通过sqlplus执行sql脚本 二. show命令2.1 显示SqlPlus中的全部环境变量2.2 显示指定环境变量的设置 三. 时间显示3.1 set …...

【微服务】【Sentinel】认识Sentinel

文章目录 1. 雪崩问题2. 解决方案3. 服务保护技术对比4. 安装 Sentinel4.1 启动控制台4.2 客户端接入控制台 参考资料: 1. 雪崩问题 微服务调用链路中的某个服务故障&#xff0c;引起整个链路中的所有微服务都不可用&#xff0c;这就是雪崩。动图演示&#xff1a; 在微服务系统…...

C++并行处理支持库 之六

C并行处理支持库 之六 std::promise构造器APIs应用实例 通过使用Futures标准库&#xff0c;我们可以获取异步任务返回值&#xff0c;捕获异步任务引发的异常。异步任务就是在独立线程中启动运行的函数。 这些值以共享状态进行通信&#xff0c;其中异步任务可以写入其返回值&…...

Linux-frp_0.61.1内网穿透的配置和使用

下载frp frp官网 https://gofrp.org/zh-cn/docs/setup/ frp安装包下载地址 https://github.com/fatedier/frp/releases?page1 下载之后在服务器上 解压 tar -zxvf frp_0.61.1_linux_amd64.tar.gztar&#xff1a;一个用于压缩和解压缩的工具。-z&#xff1a;表示使用 gzi…...

SpringBoot集成ECDH密钥交换

简介 对称加解密算法都需要一把秘钥&#xff0c;但是很多情况下&#xff0c;互联网环境不适合传输这把对称密码&#xff0c;有密钥泄露的风险&#xff0c;为了解决这个问题ECDH密钥交换应运而生 EC&#xff1a;Elliptic Curve——椭圆曲线&#xff0c;生成密钥的方法 DH&…...

深度学习的魔法世界

技术文章&#xff1a;深度学习的魔法世界 引言 嘿&#xff0c;今天我们要一起探索一个非常酷的魔法世界——深度学习&#xff01;这是一门让计算机变得超级聪明的科学。我们会用最简单的语言来解释深度学习的基本概念&#xff0c;让你们也能轻松理解。 一、深度学习的六大魔…...

【超级详细】Vue3项目上传文件到七牛云的详细笔记

概述 继上一篇笔记介绍如何绑定七牛云的域名之后&#xff0c;这篇笔记主要介绍了如何在Vue3项目中实现文件上传至七牛云的功能。我们将使用Cropper.js来处理图像裁剪&#xff0c;并通过自定义组件和API调用来完成整个流程。 这里直接给出关键部分js代码&#xff0c;上传之前要先…...

设计模式-建造者模式

在面向对象的设计中&#xff0c;建造者模式&#xff08;Builder Pattern&#xff09; 是一种常用的设计模式&#xff0c;它属于创建型模式&#xff0c;旨在将复杂对象的创建与其表示分离。通过该模式&#xff0c;我们可以一步一步地构造一个复杂的对象&#xff0c;避免构造函数…...

springboot+vue实现SSE服务器发送事件

思路 一个基于订阅发布机制的SSE事件。客户端可以请求订阅api&#xff08;携带客户端id&#xff09;&#xff0c;与服务器建立SSE链接&#xff1b;后续服务器需要推送消息到客户端时&#xff0c;再根据客户端id从已建立链接的会话中找到目标客户端&#xff0c;将消息推送出去。…...

IDEA | SpringBoot 项目中使用 Apifox 上传接口

目录 1 安装 Apifox Helper 插件2 获取 Apifox 的 API 访问令牌3 IDEA 中设置 API 访问令牌4 IDEA 中上传接口5 常见问题5.1 如何自动设置目录名5.2 如何自动设置接口名5.3 如何更改上传位置 Apifox 官方指南&#xff1a; https://apifox.com/help/applications-and-p…...

SpringBoot基础二

扩展SpringBoot 扩展SpringBoot中的SpringMVC的默认配置 SpringBoot默认已经给我们做了很多SpringMVC的配置&#xff0c;哪些配置&#xff1f; 1、视图解析器ViewResolver 2、静态资料的目录 3、默认首页index.html 4、图标名字和图标所在目录&#xff0c;favicon.ico 5、类型转…...

力扣第129题:求根到叶子节点数字之和 - C语言解法

力扣第129题&#xff1a;求根到叶子节点数字之和 - C语言解法 题目描述 给定一个二叉树&#xff0c;求根到叶子节点的数字之和。 每条从根到叶子的路径都代表一个数字。例如&#xff0c;根到叶子路径 1->2->3 代表数字 123。返回所有路径数字之和。 示例 1&#xff1…...

图像处理-Ch7-小波函数

个人博客&#xff01;无广告观看&#xff0c;因为这节内容太多了&#xff0c;有点放不下&#xff0c;分了三节 文章目录 多分辨率展开(Multi-resolution Expansions)序列展开(Series Expansions)尺度函数(Scaling Function)例&#xff1a;哈尔尺度函数(Haar scaling func)多分…...

Unity中实现转盘抽奖效果(一)

实现思路&#xff1a; 旋转转盘的z轴&#xff0c;开始以角加速度加速到角速度最大值&#xff0c;结束的时候&#xff0c;以角加速度减速使角速度减少到0&#xff0c;然后转盘z轴旋转的角度就是加上每秒以角速度数值大小&#xff0c;为了使角度不能一直增大&#xff0c;对360度…...

小程序基础 —— 07 创建小程序项目

创建小程序项目 打开微信开发者工具&#xff0c;左侧选择小程序&#xff0c;点击 号即可新建项目&#xff1a; 在弹出的新页面&#xff0c;填写项目信息&#xff08;后端服务选择不使用云服务&#xff0c;开发模式为小程序&#xff0c;模板选择为不使用模板&#xff09;&…...

Apache Commons Pool :介绍与使用

Apache Commons Pool &#xff1a;介绍与使用 什么是 commons-pool2&#xff1f; commons-pool2 是 Apache Commons 提供的一个开源对象池实现框架。它旨在为应用程序提供通用的对象池支持&#xff0c;方便开发者管理资源&#xff08;如数据库连接、网络连接等&#xff09;复…...

(二)编译原生SDK以及配置交叉编译链

文章目录 编译原生SDKLinuxSDK的安装第一步解压LinuxSDK第二步安装依赖软件第三步解压Buildroot的dl文件 Linux系统镜像编译、生成第一步 配置编译环境第二步 编译 LinuxSDK编译上面配置好的 环境配置编译 LinuxSDK配置内核选项配置 Buildroot编译 Qt 库 编译生成 Linux 系统镜…...

YK人工智能(三)——万字长文学会torch深度学习

2.1 张量 本节主要内容&#xff1a; 张量的简介PyTorch如何创建张量PyTorch中张量的操作PyTorch中张量的广播机制 2.1.1 简介 几何代数中定义的张量是基于向量和矩阵的推广&#xff0c;比如我们可以将标量视为零阶张量&#xff0c;矢量可以视为一阶张量&#xff0c;矩阵就是…...

【游戏设计原理】41 - 游戏的核心

1. 如何理解&#xff1f; 这条原理主要在讲述“游戏核心”这一概念的重要性及其在游戏开发中的作用。游戏的核心是指决定游戏整体玩法和体验的核心元素&#xff0c;它通常是游戏的主要机制、目标或动作方式。理解这一原理时&#xff0c;我们可以从以下几个层面来考虑&#xff…...

GraalVM:云原生时代的Java虚拟机

1. 概述 GraalVM是由Oracle公司开发的一款高性能、多语言的虚拟机平台。它不仅兼容传统的JVM字节码执行&#xff0c;还引入了即时编译&#xff08;JIT&#xff09;技术的革新&#xff0c;以及对多种编程语言的支持。GraalVM旨在通过提供更高效的执行环境来满足云计算环境中日益…...

goView二开低代码平台1.0

官网文档地址&#xff1a;GoView 说明文档 | 低代码数据可视化开发平台 简介&#xff1a;GoView 是一个拖拽式低代码数据可视化开发平台&#xff0c;通过拖拽创建数据大屏&#xff0c;使用Vue3框架&#xff0c;Ts语言和NaiveUI组件库创建的开源项目。安装步骤和地址文档里都有…...