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

Tcpdump也称为数据包嗅探器。

tcpdump命令将在大多数UNIX操作系统上运行。 tcpdump允许您保存捕获的数据包,以便我们可以使用捕获的数据包进行进一步分析。 可以使用相同的tcpdump命令查看保存的文件。 我们还可以使用Wireshark等开源软件来读取tcpdump PCAP文件。

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

1.使用tcpdump -i捕获来自特定LAN接口的数据包

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

$ tcpdump -i eth1       
12:59:41.967250 ARP, Request who-has free.msk.ispsystem.net tell gw.msk.ispsystem.net, length 46
12:59:41.967257 ARP, Request who-has reserve.scoffserver.ru tell gw.msk.ispsystem.net, length 46
12:59:41.969692 IP andreyex.ru.44141 > wdc-ns1.ispsystem.net.domain: 14799+ PTR? 184.48.146.82.in-addr.arpa. (44)                                             
...

在此示例中,tcpdump捕获eth1上流的所有数据包并将其显示在标准输出上。

注意:Editcap实用程序用于从转储文件中选择或删除特定的软件包,并将其转换为指定的格式。

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

运行tcpdump命令时,它将提供软件包,直到您取消tcpdump命令为止。 使用-c选项,可以指定要捕获的数据包数量。

$ tcpdump -c 2 -i eth0
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
13:01:35.165898 ARP, Request who-has 213.159.211.80 tell gw.msk.ispsystem.net, length 46
13:01:35.170637 IP andreyex.ru.35123 > wdc-ns1.ispsystem.net.domain: 7254+ PTR? 80.211.159.213.in-addr.arpa. (45)
2 packets captured          
7 packets received by filter
0 packets dropped by kernel

tcpdump命令仅从eth0接口捕获了2个数据包。

注意:Mergecap和TShark:Mergecap是一个软件包转储合并工具,它将多个软件包合并到一个转储文件中。 Tshark是功能强大的网络数据包捕获工具,可用于分析网络流量。 它随Wireshark Network Distribution Analyzer一起提供。

3.使用tcpdump -a显示ASCII截获的数据包

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

$ tcpdump -A -i eth0 13:03:06.516709 IP 213.132.93.178.25321> andreyex.ru.vlsi-lm:标志 [.],ack 3120779210,win 254,长度0 E ..($。@。u..B ..]..... b ...%。= ... OP ...... 13:03: 06.517120 IP andreyex.ru.35313> wdc-ns1.ispsystem.net.domain:13562+ PTR?178.93.132.213.in-addr.arpa。(45)E..I9。@。@ ....... .x ..... 5.5[F4............178.93.132.213.in-addr.arpa.....         
13:03:06.517523 IP wdc-ns1.ispsystem.net.domain > andreyex.ru.35313: 13562 NXDomain 0/1/0 (103) 
D...ns1.?.n2.x.......

 

Примечание:Команда ifconfig используется для настройки сетевых интерфейсов

4. Вывод на дисплей перехваченных пакетов в HEX и ASCII с использованием tcpdump -xx

Некоторые пользователи могли бы анализировать пакеты в шестнадцатеричных значениях. tcpdump предоставляет возможность печатать пакеты в обоих форматах ASCII и HEX.

$tcpdump -XX -i eth0
13:04:55.671670 ARP, Request who-has ns-24.ru tell gw.msk.ispsystem.net, length 46
        0x0000:  ffff ffff ffff 288a 1cea fff0 0806 0001  ......(.........        
        0x0010:  0800 0604 0001 288a 1cea fff0 5057 c401  ......(.....PW..        
        0x0020:  0000 0000 0000 5057 c50a 0000 0000 0000  ......PW........        
        0x0030:  0000 0000 0000 0000 4af9 3265            ........J.2e            
13:04:55.673089 ARP, Request who-has free.msk.ispsystem.net tell gw.msk.ispsystem.net, length 46
        0x0000:  ffff ffff ffff 288a 1cea fff0 0806 0001  ......(.........        
        0x0010:  0800 0604 0001 288a 1cea fff0 5292 3001  ......(.....R.0.        
        0x0020:  0000 0000 0000 5292 31af 0000 0000 0000  ......R.1.......        
        0x0030:  0000 0000 0000 0000 ee11 d278

5. Захват пакетов и запись в файл с помощью tcpdump -w

tcpdump позволяет сохранить пакеты в файл, а затем вы можете использовать файл пакетов для дальнейшего анализа.

$ tcpdump -w 08232010.pcap -i eth0
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes                                                                             
^C6239 packets captured                                                                                                                                       
7052 packets received by filter                                                                                                                               
811 packets dropped by kernel

 

Опция -w записывает пакеты в указанный файл. Расширение файла должно быть .pcap, который может быть прочитан любым протоколом сетевого
анализатора.

6. Чтение пакетов из сохраненного файла с помощью tcpdump -r

Вы можете прочитать захваченный файл PCAP и просматривать пакеты для анализа, как показано ниже.

$tcpdump -tttt -r 08232010.pcap
reading from file 08232010.pcap, link-type EN10MB (Ethernet)                                                                                                  
2017-04-07 13:06:28.035332 IP 213.132.93.178.25557 > andreyex.ru.vlsi-lm: Flags [.],ack 2280823022,win 252,长度0 2017-04-07 13:06:28.036239 IP 213.132.93.178.25558> andreyex.ru.vlsi-lm:标志 [.],ack 1395913898,win 252,长度0 2017-04-07 13:06:28.037210 IP 213.132.93.178.25557> andreyex.ru.vlsi-lm:标志 [.],ack 427,win 257,长度0 2017-04-07 13:06:28.038258 IP 213.132.93.178.25558> andreyex.ru.vlsi-lm:标志 [.],ack 149,win 252,长度0 2017-04-07 13:06:28.053807 IP 213.132.93.178.25558> andreyex.ru.vlsi-lm:标志 [P.],seq 0:1056,ack 149,win 252,length 1056 2017-04-07 13:06:28.053850 IP andreyex.ru.vlsi-lm> 213.132.93.178.25558:标志 [.],ack 1056,赢352,长度0

7.使用tcpdump -n从IP地址捕获数据包

在上面的所有示例中,它打印带有DNS地址而不是IP地址的数据包。 以下示例捕获数据包并显示参与计算机的IP地址。

$ tcpdump -n -i eth0
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes                                                                                      
13:09:44.819573 IP 213.132.93.178.25691 > 213.159.209.228.vlsi-lm: Flags [.], ack 1414291154, win 257, length 0                                               
13:09:44.820282 IP 213.132.93.178.25691 > 213.159.209.228.vlsi-lm: Flags [.], ack 427, win 255, length 0                                                      
13:09:44.824067 IP 213.132.93.178.25690 > 213.159.209.228.vlsi-lm: Flags [.], ack 1150807970, win 253, length 0

8,使用tcpdump -tttt read捕获具有适当时间戳的数据包

$ tcpdump -n -tttt -i eth0
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes                                                                                      
2017-04-07 13:10:23.336752 ARP, Request who-has 213.159.210.195 tell 213.159.210.1, length 46                                                                 
2017-04-07 13:10:23.338998 ARP, Request who-has 212.109.196.195 tell 212.109.196.1, length 46                                                                 
2017-04-07 13:10:23.339009 ARP, Request who-has 80.87.202.158 tell 80.87.202.1, length 46                                                                     
2017-04-07 13:10:23.339011 ARP, Request who-has 188.120.248.196 tell 188.120.248.1, length 46                                                                 
2017-04-07 13:10:23.339013 ARP, Request who-has 212.109.197.156 tell 212.109.196.1, length 46

9.数据包读取的字节数大于n

通过tcpdump命令,使用“更大”过滤器,可以获得比n个字节更多的数据包

$ tcpdump -w g_1024.pcap greater 1024

10.仅接收某种协议类型的数据包

您可以根据协议类型接收数据包。 您可以指定以下协议之一-fddi,tr,wlan,ip,ip6,arp,rap,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 65535 bytes                                                                                      
13:11:31.451191 ARP, Request who-has ark-hoster.ru tell gw.msk.ispsystem.net, length 46                                                                       
13:11:31.456275 ARP, Request who-has aitkblack.fvds.ru tell gw.msk.ispsystem.net, length 46                                                                   
13:11:31.463781 ARP, Request who-has e-sro.su tell gw.msk.ispsystem.net, length 46                                                                            
13:11:31.464276 ARP, Request who-has yaroslav.fvds.ru tell gw.msk.ispsystem.net, length 46

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

您只能使用tcpdump命令中的“较少”过滤器获取少于n个字节的数据包

$ tcpdump -w l_1024.pcap  less 1024

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

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

$ tcpdump -i eth0 port 22
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes                                                                                      
^C                                                                                                                                                            
0 packets captured                                                                                                                                            
0 packets received by filter                                                                                                                                  
0 packets dropped by kernel

在这种情况下,端口22被禁用。

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数据包筛选器-捕获除arp和rarp数据包以外的所有数据包

在tcpdump命令中,可以指定and或and not子句来过滤数据包。

$ tcpdump -i eth0 not arp and not rarp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode                                                                                    
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes                                                                                      
13:13:42.454613 IP 213.132.93.178.25885 > andreyex.ru.vlsi-lm: Flags [.], ack 1557656178, win 253, length 0                                                   
13:13:42.455558 IP 213.132.93.178.25885 > andreyex.ru.vlsi-lm: Flags [.], ack 427, win 257, length 0                                                          
13:13:42.458275 IP andreyex.ru.https > crawl-66-249-64-254.googlebot.com.39708: Flags [.], ack 1382390548, win 252, options [nop,nop,TS val 32239888 ecr 36826
85903], length 0

Sidebar