我用 LinuxLinuxHowtoLinux学习之路

Linux系统 tcpdump 抓包命令使用教程

2019-07-23  本文已影响12人  等会再说
Linux系统 tcpdump 抓包命令使用教程

tcpdumpLinux系统下的一个强大的命令,可以将网络中传送的数据包完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。

本教程对tcpdump命令使用进行讲解说明,通过本教程您可以学会linux系统下使用tcpdump命令进行网络抓包,实现对数据包进行捕获分析。

tcpdump 命令格式介绍

首先我们对Linux系统下tcpdump命令格式进行一个介绍说明,在下面的使用教程中讲到tcpdump命令示例时,您就可以参考tcpdump命令参数说明进行学习。

该命令示例在CentOS release 6.10 (Final) 中tcpdump演示

语法:

tcpdump [ -AdDefIJKlLnNOpqRStuUvxX ] [ -B buffer_size ] [ -c count ]
               [ -C file_size ] [ -G rotate_seconds ] [ -F file ]
               [ -i interface ] [ -j tstamp_type ] [ -m module ] [ -M secret ]
               [ -Q|-P in|out|inout ]
               [ -r file ] [ -s snaplen ] [ -T type ] [ -w file ]
               [ -W filecount ]
               [ -E spi@ipaddr algo:secret,...  ]
               [ -y datalinktype ] [ -z postrotate-command ] [ -Z user ]
               [ expression ]

命令行参数介绍:

tcpdump 命令使用示例

linux系统下执行tcpdump命令需要root账号或者具备sudo权限的账号,否则执行tcpdump命令说,系统会提示tcpdump: no suitable device found

在下面的例子中,-i eth0 参数表示只抓取 eth0 接口数据包,不加-i eth0 是表示抓取所有的接口包括 lo

01、抓取所有网络包,并在terminal中显示抓取的结果,将包以十六进制的形式显示。

tcpdump 

02、抓取所有的网络包,并存到 result.cap 文件中。

tcpdump -w result.cap

03、抓取所有的经过eth0网卡的网络包,并存到result.cap 文件中。

tcpdump -i eth0 -w result.cap

04、抓取源地址是192.168.1.100的包,并将结果保存到 result.cap 文件中。

tcpdump src host 192.168.1.100 -w result.cap 

05、抓取地址包含是192.168.1.100的包,并将结果保存到 result.cap 文件中。

tcpdump host 192.168.1.100 -w result.cap 

06、抓取目的地址包含是192.168.1.100的包,并将结果保存到 result.cap 文件中。

tcpdump dest host 192.168.1.100 -w result.cap 

07、抓取主机地址为 192.168.1.100 的数据包

tcpdump -i eth0 -vnn host 192.168.1.100

08、抓取包含192.168.1.0/24网段的数据包

tcpdump -i eth0 -vnn net 192.168.1.0/24

09、抓取网卡eth0上所有包含端口22的数据包

tcpdump -i eth0 -vnn port 22

10、抓取指定协议格式的数据包,协议格式可以是「udp,icmp,arp,ip」中的任何一种,例如以下命令:

tcpdump udp  -i eth0 -vnn

11、抓取经过 eth0 网卡的源 ip 是 192.168.1.100 数据包,src参数表示源。

tcpdump -i eth0 -vnn src host 192.168.1.100

12、抓取经过 eth0 网卡目的 ip 是 192.168.1.100 数据包,dst参数表示目的。

 tcpdump -i eth0 -vnn dst host 192.168.1.100

13、抓取源端口是22的数据包

tcpdump -i eth0 -vnn src port 22

14、抓取源ip192.168.1.100 且目的ip端口是22的数据包

tcpdump -i eth0 -vnn src host 192.168.1.100 and dst port 22

15、抓取源ip``192.168.1.100``22

tcpdump -i eth0 -vnn src host 192.168.1.100 or port 22

16、抓取源ip``192.168.1.100``22

tcpdump -i eth0 -vnn src host 192.168.1.100 and not port 22

17、抓取源ip192.168.1.100且目的端口是22,或源ip192.168.1.102且目的端口是80的数据包。

tcpdump -i eth0 -vnn ( src host 192.168.1.100 and dst port 22 ) or ( src host 192.168.1.102 and dst port 80 )

18、把抓取的数据包记录存到/tmp/result文件中,当抓取100个数据包后就退出程序。

tcpdump –i eth0 -vnn -w /tmp/result -c 100

19、从/tmp/result记录中读取tcp协议的数据包

tcpdump -i eth0  tcp  -vnn -r /tmp/result

20、想要截获所有192.168.1.100的主机收到的和发出的所有的数据包:

tcpdump host 192.168.1.100

21、如果想要获取主机192.168.1.100除了和主机192.168.1.101之外所有主机通信的ip包,使用命令:

tcpdump ip host 192.168.1.100 and ! 192.168.1.101

22、如果想要获取主机 192.168.1.100 接收或发出的 telnet 包,使用如下命令:

tcpdump tcp port 23 host 192.168.1.100

写在最后

至此,本Linux系统 tcpdump 抓包命令使用教程已经讲解完,本教程中更多的只是一些简单的示例,如果希望更复杂的抓取,可以参考tcpdump抓包命令命令格式进行学习使用。

上一篇 下一篇

猜你喜欢

热点阅读