tcpdump指南(1)

news2025/1/4 19:17:04
大家读完觉得有意义记得关注和点赞!!!

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 64
        0x0000:  4500 0054 6e2b 4000 4001 4926 c0a8 0103
        0x0010:  c0a8 0104 0800 a20e 2812 0000 0f1c 1ec3
        0x0020:  0000 0000 0000 0000 0000 0000 0000 0000
        0x0030:  0000 0000 0000 0000 0000 0000 0000 0000
        0x0040:  0000 0000 0000 0000 0000 0000 0000 0000
        0x0050:  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               3

bit  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               3

bit  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 020f
        0x0010:  0808 0808 b31f 0035 0079 1ca9 8863 0120
        0x0020:  0001 0000 0000 0001 0136 0132 0132 0162
        0x0030:  0163 0165 0131 0136 0161 0164 0138 0161
        0x0040:  0137 0130 0131 0135 0130 0130 0130 0130
        0x0050:  0130 0130 0130 0130 0130 0130 0130 0130
        0x0060:  0130 0138 0165 0166 0369 7036 0461 7270
        0x0070:  6100 000c 0001 0000 2910 0000 0000 0000
        0x0080:  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>

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

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

相关文章

14. 日常算法

1. 面试题 02.04. 分割链表 题目来源 给你一个链表的头节点 head 和一个特定值 x &#xff0c;请你对链表进行分隔&#xff0c;使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。 你不需要 保留 每个分区中各节点的初始相对位置。 class Solution { public:ListNo…

termux-boot安卓开机自动启动应用

termux安装 github 蓝奏云 v119.1 termux-boot安装 github 蓝奏云 v0.8.1 安装 给权限运行加锁后台 am启动应用命令 am start -n 包名/启动项获取包名和启动入口&#xff08;图中app为爱玩机工具箱&#xff09; 例 简黑时钟蓝奏云 包名com.hm.jhclock 桌面启动项com.hm.jh…

自从学会Git,感觉打开了一扇新大门

“同事让我用 Git 提交代码&#xff0c;我居然直接把项目文件压缩发过去了……”相信很多初学者都经历过类似的窘境。而当你真正掌握 Git 时&#xff0c;才会发现它就像一本魔法书&#xff0c;轻松解决代码管理的种种难题。 为什么 Git 能成为程序员的标配工具&#xff1f;它究…

设计模式 创建型 建造者模式(Builder Pattern)与 常见技术框架应用 解析

单例模式&#xff08;Singleton Pattern&#xff09;&#xff0c;又称生成器模式&#xff0c;是一种对象构建模式。它主要用于构建复杂对象&#xff0c;通过将复杂对象的构建过程与其表示分离&#xff0c;使得同样的构建过程可以创建出具有不同表示的对象。该模式的核心思想是将…

MATLAB程序转C# WPF,dll集成,混合编程

工作中遇到一个需求&#xff0c;有一部分算法的代码需要MATLAB来进行处理&#xff0c;而最后需要集成到C#中的wpf项目中去&#xff0c;选择灵活性更高的dll&#xff0c;去进行集成。&#xff08;可以简单理解为&#xff1a;将MATLAB的函数&#xff0c;变为C#中类的函数成员&…

常见中间件漏洞复现

1.tomcat 1.1 CVE-2017-12615(put上传) 当在Tomcat的conf&#xff08;配置目录下&#xff09;/web.xml配置文件中添加readonly设置为false时&#xff0c;将导致该漏洞产 ⽣&#xff0c;&#xff08;需要允许put请求&#xff09; , 攻击者可以利⽤PUT方法通过精心构造的数据包…

C#Halcon深度学习预热与否的运行时间测试

在深度学习推理应用阶段&#xff0c;涉及到提速&#xff0c;绕不开一个关键词“预热”。 在其他地方的“预热”&#xff0c;预先加热到指定的温度。通常指预习准备做某一样事时&#xff0c;为此做好准备。 而在深度学习推理应用阶段涉及的预热通常是指GPU预热&#xff0c;GPU在…

获取 Astro Bot AI 语音来增强您的游戏体验!

有很多用户尝试过Astro Bot&#xff0c;却被Astro Bot可爱的声音所吸引。您是否想知道如何使用 Astro Bot 语音来拨打恶作剧电话或用他的声音说话&#xff1f;如果您有&#xff0c;那么这篇文章适合您。我们将向您展示如何为 Astro Bot 提供逼真的 AI 声音并在在线对话中使用它…

重装操作系统后 Oracle 11g 数据库数据还原

场景描述&#xff1a; 由于SSD系统盘损坏&#xff0c;更换硬盘后重装了操作系统&#xff0c;Oracle数据库之前安装在D盘(另一个硬盘)&#xff0c;更换硬盘多添加一个盘符重装系统后盘符从D变成E&#xff0c;也就是之前的D:/app/... 变成了现在的 E:/app/...&#xff0c;重新安装…

IDEA+Docker一键部署项目SpringBoot项目

文章目录 1. 部署项目的传统方式2. 前置工作3. SSH配置4. 连接Docker守护进程5. 创建简单的SpringBoot应用程序6. 编写Dockerfile文件7. 配置远程部署 7.1 创建配置7.2 绑定端口7.3 添加执行前要运行的任务 8. 部署项目9. 开放防火墙的 11020 端口10. 访问项目11. 可能遇到的问…

UE5材质节点Camera Vector/Reflection Vector

Camera Vector相机向量&#xff0c;输出像素到相机的方向&#xff0c;结果归一化 会随着相机移动而改变 Reflection Vector 反射向量&#xff0c;物体表面法线反射到相机的方向&#xff0c;x和y和camera vector相反 配合hdr使用

python实现自动登录12306抢票 -- selenium

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 python实现自动登录12306抢票 -- selenium 前言其实网上也出现了很多12306的代码&#xff0c;但是都不是最新的&#xff0c;我也是从网上找别人的帖子&#xff0c;看B站视频&…

鸿蒙1.2:第一个应用

1、create Project&#xff0c;选择Empty Activity 2、配置项目 project name 为项目名称&#xff0c;建议使用驼峰型命名 Bundle name 为项目包名 Save location 为保存位置 Module name 为模块名称&#xff0c;即运行时需要选择的模块名称&#xff0c;见下图 查看模块名称&…

Docker安装(Docker Engine安装)

一、Docker Engine和Desktop区别 Docker Engine 核心组件&#xff1a;Docker Engine是Docker的核心运行时引擎&#xff0c;负责构建、运行和管理容器。它包括守护进程&#xff08;dockerd&#xff09;、API和命令行工具客户端&#xff08;docker&#xff09;。适用环境&#…

Ceph 手动部署(CentOS9)

#Ceph手动部署、CentOS9、squid版本、数字版本19.2.0 #部署服务:块、对象、文件 一、部署前规划 1、兼容性确认 2、资源规划 节点类型节点名称操作系统CPU/内存硬盘网络组件安装集群节点CephAdm01CentOS94U/8GOS:40G,OSD:2*100GIP1:192.169.0.9(管理&集群),IP2:…

springboot-启动流程

by shihang.mai 1. 启动流程图 查看springboot2.3.7源码后绘制下图。 springboot启动流程图 main启动&#xff0c;new SpringApplication()构造方法里面 判断当前应用程序类型reactive、servlet、none获取所有的ApplicationListener对应的对象获取所有的ApplicationContextInit…

Flutter:打包apk,详细图文介绍(一)

困扰了一天&#xff0c;终于能正常打包apk安装了&#xff0c;记录下打包的流程。建议参考我这篇文章时&#xff0c;同时看下官网的构建说明。 官网构建并发布 Android 应用详情 1、AS创建Flutter项目 2、cmd执行命令 生成一个sunluyi.jks的文件&#xff0c;可以自行把sunluyi替…

linux下安装tun模块详细教程

原本是要看tcp/ip协议栈&#xff0c;找到了https://github.com/chobits/tapip这个。然后需要支持tun&#xff0c;完了开始安装。 TUN/TAP是一个虚拟网络设备&#xff0c;用于实现用户态程序和内核网络协议栈之间的数据交互。 1、安装环境 我的系统是ubuntu16.04 VMWare虚拟机&a…

Ajax数据爬取

有时我们用requests 抓取页面得到的结果&#xff0c;可能和在浏览器中看到的不一样:在浏览器中可以看到正常显示的页面数据&#xff0c;而使用requests 得到的结果中并没有这些数据。这是因为 requests 获取的都是原始 HTML 文档&#xff0c;而浏览器中的页面是JavaScript 处理…

Docker 安装与配置 Nginx

摘要 1、本文全面介绍了如何在 Docker 环境中安装和配置 Nginx 容器。 2、文中详细解释了如何设置 HTTPS 安全连接及配置 Nginx 以实现前后端分离的代理服务。 2、同时&#xff0c;探讨了通过 IP 和域名两种方式访问 Nginx 服务的具体配置方法 3、此外&#xff0c;文章还涵…