数据包分析器:15 个 TCPDUMP 命令示例

举报
Tiamo_T 发表于 2021/10/09 08:45:52 2021/10/09
【摘要】 tcpdump 命令也称为数据包分析器。tcpdump 命令适用于大多数风格的 unix 操作系统。tcpdump 允许我们保存捕获的数据包,以便我们可以将其用于以后的分析。保存的文件可以通过相同的 tcpdump 命令查看。我们也可以使用wireshark等开源软件来读取tcpdump pcap文件。在本 tcpdump 教程中,让我们讨论一些有关如何使用 tcpdump 命令的实际示例。...

tcpdump 命令也称为数据包分析器。

tcpdump 命令适用于大多数风格的 unix 操作系统。tcpdump 允许我们保存捕获的数据包,以便我们可以将其用于以后的分析。保存的文件可以通过相同的 tcpdump 命令查看。我们也可以使用wireshark等开源软件来读取tcpdump pcap文件。

在本 tcpdump 教程中,让我们讨论一些有关如何使用 tcpdump 命令的实际示例。

1. 使用 tcpdump -i 从特定以太网接口捕获数据包

当不带任何选项执行 tcpdump 命令时,它将捕获所有流经所有接口的数据包。tcpdump 命令的 -i 选项允许您在特定的以太网接口上进行过滤。

$ tcpdump -i eth1
14:59:26.608728 IP xx.domain.netbcp.net.52497 > valh4.lell.net.ssh: . ack 540 win 16554
14:59:26.610602 IP resolver.lell.net.domain > valh4.lell.net.24151:  4278 1/0/0 (73)
14:59:26.611262 IP valh4.lell.net.38527 > resolver.lell.net.domain:  26364+ PTR? 244.207.104.10.in-addr.arpa. (45)

在本例中,tcpdump 捕获了接口 eth1 中的所有数据包流并显示在标准输出中。

注意Editcap实用程序用于从转储文件中选择或删除特定数据包并将它们转换为给定格式。


2.使用tcpdump -c只捕获N个数据包

当您执行 tcpdump 命令时,它会提供数据包,直到您取消 tcpdump 命令。使用 -c 选项可以指定要捕获的数据包数量。

$ tcpdump -c 2 -i eth0
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
14:38:38.184913 IP valh4.lell.net.ssh > yy.domain.innetbcp.net.11006: P 1457255642:1457255758(116) ack 1561463966 win 63652
14:38:38.690919 IP valh4.lell.net.ssh > yy.domain.innetbcp.net.11006: P 116:232(116) ack 1 win 63652
2 packets captured
13 packets received by filter
0 packets dropped by kernel

上面的 tcpdump 命令只从接口 eth0 捕获了 2 个数据包。

注意:Mergecap 和 TShark:Mergecap 是一个数据包转储组合工具,它将多个转储组合成一个转储文件。Tshark 是一个强大的网络数据包捕获工具,可用于分析网络流量。它带有wireshark网络分析仪发行版。

3. 使用 tcpdump -A 以 ASCII 格式显示捕获的数据包

以下 tcpdump 语法以 ASCII 格式打印数据包。

$ tcpdump -A -i eth0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
14:34:50.913995 IP valh4.lell.net.ssh > yy.domain.innetbcp.net.11006: P 1457239478:1457239594(116) ack 1561461262 win 63652
E.....@.@..]..i...9...*.V...]...P....h....E...>{..U=...g.
......G..7\+KA....A...L.
14:34:51.423640 IP valh4.lell.net.ssh > yy.domain.innetbcp.net.11006: P 116:232(116) ack 1 win 63652
E.....@.@..\..i...9...*.V..*]...P....h....7......X..!....Im.S.g.u:*..O&....^#Ba...
E..(R.@.|.....9...i.*...]...V..*P..OWp........


4. 使用 tcpdump -XX 以 HEX 和 ASCII 显示捕获的数据包

一些用户可能想要以十六进制值分析数据包。tcpdump 提供了一种以 ASCII 和 HEX 格式打印数据包的方法。

$tcpdump -XX -i eth0
18:52:54.859697 IP zz.domain.innetbcp.net.63897 > valh4.lell.net.ssh: . ack 232 win 16511
        0x0000:  0050 569c 35a3 0019 bb1c 0c00 0800 4500  .PV.5.........E.
        0x0010:  0028 042a 4000 7906 c89c 10b5 aaf6 0f9a  .(.*@.y.........
        0x0020:  69c4 f999 0016 57db 6e08 c712 ea2e 5010  i.....W.n.....P.
        0x0030:  407f c976 0000 0000 0000 0000            @..v........
18:52:54.877713 IP 10.0.0.0 > all-systems.mcast.net: igmp query v3 [max resp time 1s]
        0x0000:  0050 569c 35a3 0000 0000 0000 0800 4600  .PV.5.........F.
        0x0010:  0024 0000 0000 0102 3ad3 0a00 0000 e000  .$......:.......
        0x0020:  0001 9404 0000 1101 ebfe 0000 0000 0300  ................
        0x0030:  0000 0000 0000 0000 0000 0000            ............

5. 捕获数据包并使用 tcpdump -w 写入文件

tcpdump 允许您将数据包保存到文件中,稍后您可以使用数据包文件进行进一步分析。

$ tcpdump -w 08232010.pcap -i eth0
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
32 packets captured
32 packets received by filter
0 packets dropped by kernel

-w 选项将数据包写入给定文件。文件扩展名应该是 .pcap,它可以被任何网络协议
分析器读取。

6. 使用 tcpdump -r 从保存的文件中读取数据包

可以读取抓到的pcap文件,查看数据包进行分析,如下图。

$tcpdump -tttt -r data.pcap
2021-08-22 21:35:26.571793 00:50:56:9c:69:38 (oui Unknown) > Broadcast, ethertype Unknown (0xcafe), length 74:
        0x0000:  0200 000a ffff 0000 ffff 0c00 3c00 0000  ............<...
        0x0010:  0000 0000 0100 0080 3e9e 2900 0000 0000  ........>.).....
        0x0020:  0000 0000 ffff ffff ad00 996b 0600 0050  ...........k...P
        0x0030:  569c 6938 0000 0000 8e07 0000            V.i8........
2021-08-22 21:35:26.571797 IP valh4.lell.net.ssh > zz.domain.innetbcp.net.50570: P 800464396:800464448(52) ack 203316566 win 71
2021-08-22 21:35:26.571800 IP valh4.lell.net.ssh > zz.domain.innetbcp.net.50570: P 52:168(116) ack 1 win 71
2021-08-22 21:35:26.584865 IP valh5.lell.net.ssh > 11.154.12.255.netbios-ns: NBT UDP PACKET(137): QUERY; REQUEST; BROADC

7. 使用 tcpdump -n 捕获带有 IP 地址的数据包

在上述所有示例中,它打印带有 DNS 地址的数据包,而不是 ip 地址。以下示例捕获数据包,并将显示所涉及机器的 IP 地址。

$ tcpdump -n -i eth0
15:01:35.170763 IP 10.0.19.121.52497 > 11.154.12.121.ssh: P 105:157(52) ack 18060 win 16549
15:01:35.170776 IP 11.154.12.121.ssh > 10.0.19.121.52497: P 23988:24136(148) ack 157 win 113
15:01:35.170894 IP 11.154.12.121.ssh > 10.0.19.121.52497: P 24136:24380(244) ack 157 win 113

8. 使用 tcpdump -tttt 捕获具有正确可读时间戳的数据包

$ tcpdump -n -tttt -i eth0

2021-08-22 15:10:39.162830 IP 10.0.19.121.52497 > 11.154.12.121.ssh: . ack 49800 win 16390
2021-08-22 15:10:39.162833 IP 10.0.19.121.52497 > 11.154.12.121.ssh: . ack 50288 win 16660
2021-08-22 15:10:39.162867 IP 10.0.19.121.52497 > 11.154.12.121.ssh: . ack 50584 win 16586

9. 读取长度超过 N 字节的数据包

您只能通过 tcpdump 命令使用过滤器“greater”接收大于 n 个字节的数据包

$ tcpdump -w g_1024.pcap greater 1024

10. 只接收特定协议类型的数据包

您可以根据协议类型接收数据包。您可以指定这些协议之一 — fddi、tr、wlan、ip、ip6、arp、rarp、decnet、tcp 和 udp。以下示例仅捕获流经 eth0 接口的 arp 数据包。

$ tcpdump -i eth0 arp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
19:41:52.809642 arp who-has valh5.lell.net tell valh9.lell.net
19:41:52.863689 arp who-has 11.154.12.1 tell valh6.lell.net
19:41:53.024769 arp who-has 11.154.12.1 tell valh7.lell.net

11.读取小于N字节的数据包

您只能通过 tcpdump 命令使用过滤器“less”接收少于 n 个字节的数据包

$ tcpdump -w l_1024.pcap  less 1024

12. 使用 tcpdump 端口接收特定端口上的数据包流

如果您想知道机器上特定端口接收到的所有数据包,您可以使用 tcpdump 命令,如下所示。

$ tcpdump -i eth0 port 22
19:44:44.934459 IP valh4.lell.net.ssh > zz.domain.innetbcp.net.63897: P 18932:19096(164) ack 105 win 71
19:44:44.934533 IP valh4.lell.net.ssh > zz.domain.innetbcp.net.63897: P 19096:19260(164) ack 105 win 71
19:44:44.934612 IP valh4.lell.net.ssh > zz.domain.innetbcp.net.63897: P 19260:19424(164) ack 105 win 71

13. Capture packets for particular destination IP and Port

13. 捕获特定目标 IP 和端口的数据包

数据包将具有源和目标 IP 以及端口号。使用 tcpdump 我们可以对源或目标 IP 和端口号应用过滤器。以下命令捕获具有特定目标 IP 和端口号 22 的 eth0 中的数据包流。

$ tcpdump -w xpackets.pcap -i eth0 dst 10.181.140.216 and port 22

14.捕获两台主机之间的TCP通信包

如果来自两台不同机器的两个不同进程通过 tcp 协议进行通信,我们可以使用 tcpdump 捕获这些数据包,如下所示。

$tcpdump -w comm.pcap -i eth0 dst 16.181.170.246 and port 22

您可以使用任何网络协议分析器工具打开文件 comm.pcap 以调试任何潜在问题。

15. tcpdump Filter Packets – 捕获除arp和rarp以外的所有数据包

在 tcpdump 命令中,您可以给出“and”、“or”和“not”条件来相应地过滤数据包。

$ tcpdump -i eth0 not arp and not rarp
20:33:15.479278 IP resolver.lell.net.domain > valh4.lell.net.64639:  26929 1/0/0 (73)
20:33:15.479890 IP valh4.lell.net.16053 > resolver.lell.net.domain:  56556+ PTR? 255.107.154.15.in-addr.arpa. (45)
20:33:15.480197 IP valh4.lell.net.ssh > zz.domain.innetbcp.net.63897: P 540:1504(964) ack 1 win 96
20:33:15.487118 IP zz.domain.innetbcp.net.63897 > valh4.lell.net.ssh: . ack 540 win 16486
20:33:15.668599 IP 10.0.0.0 > all-systems.mcast.net: igmp query v3 [max resp time 1s]
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。