抓包工具(一)tcpdump命令总结

由于在测试中会需要抓取Linux服务器(IPC端或者EC2服务器)上的包,一直使用的是tcpdump工具,在这里总结下tcpdump的命令。如果只是仅仅抓包只需要学会使用以下这个命令:

  • 抓取网卡为enp3s0的数据包,并保存到http.cap文件中
tcpdump -i enp3s0 -w http.cap  

想要更深入了解tcpdump的话可以阅读以下内容,更多详细信息可以查看官网http://www.tcpdump.org/manpages/tcpdump.1.html

一、tcpdump简介

tcpdump,就是dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。

二、tcpdump用法

tcpdump [ -AbdDefhHIJKlLnNOpqStuUvxX# ] [ -B buffer_size ]

         [ -c count ] [ -C file_size ]
         [ -E spi@ipaddr algo:secret,... ]
         [ -F file ] [ -G rotate_seconds ] [ -i interface ]
         [ --immediate-mode ] [ -j tstamp_type ] [ -m module ]
         [ -M secret ] [ --number ] [ --print ] [ -Q in|out|inout ]
         [ -r file ] [ -s snaplen ] [ -T type ] [ --version ]
         [ -V file ] [ -w file ] [ -W filecount ] [ -y datalinktype ]
         [ -z postrotate-command ] [ -Z user ]
         [ --time-stamp-precision=tstamp_precision ]
         [ expression ] 

根据tcpdump的用法将参数选项分为常用的和不常用的

常用:

  • -i:指定监听的网络接口
  • -c <数据包数目>: 收到指定的数据包数目后,tcpdump就会停止;
  • -C <文件大小>:用于判断用 -w 选项将报文写入的文件的大小是否超过这个值,如果超过了就新建文件(文件名后缀是1、2、3依次增加);
  • -w: 将原始数据包写入文件,而不是解析并打印出来;
  • -D:列出当前主机的所有网卡编号和名称,可以用于选项 -i;
  • -e:在每个转储行上打印链接级标题。 例如,这可以用于打印诸如以太网和IEEE 802.11之类的协议的MAC层地址;
  • -F <表达文件>:从指定的文件中读取表达式,忽略其它的表达式;
  • -n:显示ip,而不是主机名;
  • -l:使标准输出变为缓冲行形式,可以把数据导出到文件;
  • -r <数据包文件>:从指定的文件中读取包(这些包一般通过-w选项产生);
  • -t :不在每一行中输出时间戳;
  • -tt:在每一行中输出非格式化的时间戳;
  • -p:不要将接口置于混杂模式;
  • -q: 快速输出,仅列出少数的传输协议信息;
  • -f:将外部的Internet地址以数字的形式打印出来;
  • -N:不列出域名;
  • -O:不将数据包编码最佳化;
  • -S:用绝对而非相对数值列出TCP关联数;
  • -T <数据包类型>:将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程调用)和snmp(简单网络管理协议);
  • -v:解析和打印时,产生(略多)详细输出;
  • -vv :更详细的输出。例如,从NFS回复数据包打印附加字段,SMB数据包完全解码;
  • -vvv:更详细的输出。例如,telnet SB … SE选项全部打印。使用-X Telnet选项也以十六进制打印;

不常用:

  • -A:以ASCII编码打印每个报文(不包括链路层的头),这对分析网页来说很方便;
  • -b:以ASDOT表示法而不是ASPLAIN表示法打印BGP数据包中的AS编号;
  • -B <缓冲区大小>:将操作系统捕获缓冲区大小设置为buffer_size,以KiB(1024字节)为单位;
  • -d:将匹配信息包的代码以人们能够理解的汇编格式给出;
  • -dd:将匹配信息包的代码以c语言程序段的格式给出;
  • -ddd:将匹配信息包的代码以十进制的形式给出;
  • -E:用spi@ipaddr algo:secret解密那些以addr作为地址,并且包含了安全参数索引值spi的IPsec ESP分组;
  • -G <rotate_seconds>: 如果指定,则每rotate_seconds秒旋转使用-w选项指定的转储文件。
  • -h:打印tcpdump和libpcap版本字符串,打印用法消息,然后退出。
  • -H:尝试检测的802.11s网状草案头;
  • -j <tstamp类型>:将捕获的时间戳类型设置为tstamp_type;
  • -J:列出接口支持的时间戳类型并退出;
  • -K:不要试图验证IP,TCP,UDP或校验;
  • -L:列出网络接口的已知数据链路;
  • -M:从文件模块加载SMI MIB模块定义;
  • -s <数据包大小>:指定抓包显示一行的宽度,-s0表示可按包长显示完整的包,经常和-A一起用,默认截取长度为60个字节,但一般ethernet MTU都是1500字节。所以,要抓取大于60字节的包时,使用默认参数就会导致包数据丢失;
  • -ttt:输出本行和前面一行之间的时间差。
  • -tttt:在每一行中输出由date处理的默认格式的时间戳。
  • -u:打印未解码的NFS句柄。
  • -U:如果未指定-w选项,或者如果指定了-w选项但是也指定了–print标志,则使打印的数据包输出``packet-buffered’’
  • -V:从文件中读取文件名列表。 如果文件是“ - ”,则使用标准输入。
  • -W:与-C选项一起使用时,这将限制创建的文件数量达到指定的数量,并从头开始覆盖文件,从而创建一个“旋转”缓冲区。 此外,它会将具有足够前导0的文件命名为支持最大文件数,从而允许它们正确排序。与-G选项一起使用时,这将限制创建的旋转转储文件的数量,在达到限制时退出状态0。如果与-C和-G一起使用,则当前将忽略-W选项,并且仅影响文件名。
  • -x:解析和打印时,除了打印每个数据包的标头外,还要以十六进制格式打印每个数据包的数据(减去其链接级别标题)。 将打印整个数据包或snaplen字节中较小的一个。 注意,这是整个链路层分组,因此对于填充(例如以太网)的链路层,当较高层分组比所需填充短时,也将打印填充字节。
  • -xx:解析和打印时,除了打印每个数据包的标头外,还要打印每个数据包的数据,包括其链接级别标题,以十六进制表示。
  • -X:解析和打印时,除了打印每个数据包的标题外,还要以十六进制和ASCII格式打印每个数据包的数据(减去其链接级别标题)。 这对于分析新协议非常方便。
  • -XX:解析和打印时,除了打印每个数据包的标头外,还要以十六进制和ASCII格式打印每个数据包的数据,包括其链接级别标题。
  • -y:设置要在将数据包捕获到datalinktype时使用的数据链接类型。
  • -z:与-C或-G选项一起使用,这将使tcpdump运行“ 命令文件 ”,其中文件是每次旋转后关闭的保存文件。例如,指定-z gzip或-z bzip2将使用gzip或bzip2压缩每个保存文件。
  • -Z:删除权限(如果是root)并将用户标识更改为用户,将组标识更改为主要用户组。这种行为默认是启用的(-Z tcpdump),可以通过-Z root来禁用。

三、举例

1、监视指定网络接口enp3s0的数据包

tcpdump -i enp3s0

2、过滤主机

  • 抓取所有经过enp3s0,目的或源地址是192.168.154.202的网络数据
tcpdump -i enp3s0 host 192.168.154.202
  • 指定源地址:192.168.154.202
tcpdump -i enp3s0 src host 192.168.154.202
  • 指定目标地址:192.168.154.202
tcpdump -i enp3s0 dst host 192.168.154.202

3、过滤端口

  • 抓取所有经过enp3s0,目的或源端口是22的网络数据
tcpdump -i enp3s0 port 22
  • 指定源端口
tcpdump -i enp3s0 src port 22
  • 指定目标端口
tcpdump -i enp3s0 dst port 22

4、网络过滤

tcpdump -i enp3s0 net 192.168
tcpdump -i enp3s0 src net 192.168
tcpdump -i enp3s0 dst net 192.168

5、协议过滤

tcpdump -i enp3s0 ip
tcpdump -i enp3s0 tcp
tcpdump -i enp3s0 udp
tcpdump -i enp3s0 arp
tcpdump -i enp3s0 rarp
tcpdump -i enp3s0 icmp

6、常用表达式

: ! or "not" (去掉双引号): && or "and": || or "or"

7、显示指定数量包

tcpdump -i enp3s0 -c 20

8、把抓取到的数据存放到文件中

tcpdump -i enp3s0 -c 20 -w http.cap

9、抓取主机192.168.154.202和192.168.154.203或者192.168.154.221的通信

tcpdump -i enp3s0 -n host 192.168.154.202 and \(192.168.154.203 or 192.168.154.221\)

10、抓取主机192.168.154.202与除主机192.168.154.201外通信的数据包

tcpdump -i enp3s0 -n host 192.168.154.202 and ! 192.168.154.201

11、抓取主机192.168.154.202与除主机192.168.154.201外通信的ip数据包

tcpdump -i enp3s0 ip host 192.168.154.202 and ! 192.168.154.201

12、抓取主机192.168.154.202在22端口接收到的数据包

tcpdump -i enp3s0 host 192.168.154.202 and src port 22

13、只抓 SYN 包

tcpdump -i enp3s0 'tcp[tcpflags] = tcp-syn'

14、抓 SYN, ACK

tcpdump -i enp3s0 'tcp[tcpflags] & tcp-syn != 0 and tcp[tcpflags] & tcp-ack != 0'

15、抓取端口大于1024的TCP数据包:

tcpdump -i enp3s0 'tcp[0:2] > 1024'

参考文章:
https://www.cnblogs.com/chenpingzhao/p/9108570.html
https://www.runoob.com/linux/linux-comm-tcpdump.html
http://www.tcpdump.org/manpages/tcpdump.1.html
https://www.fujieace.com/linux/man/tcpdump-8.html
https://www.jianshu.com/p/a62ed1bb5b20

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: tcpdump 是一个网络抓包工具,可以用来捕获、分析和解释网络数据包。以下是 tcpdump 的基本用法: 1. 抓取指定接口的数据包: ``` tcpdump -i eth0 ``` 2. 抓取指定 IP 地址的数据包: ``` tcpdump host 192.168.1.100 ``` 3. 抓取指定端口的数据包: ``` tcpdump port 80 ``` 4. 抓取指定源 IP 地址或目的 IP 地址的数据包: ``` tcpdump src 192.168.1.100 tcpdump dst 192.168.1.100 ``` 5. 抓取指定协议类型的数据包: ``` tcpdump icmp tcpdump udp tcpdump tcp ``` 6. 抓取指定网段的数据包: ``` tcpdump net 192.168.1.0/24 ``` 7. 将抓包结果输出到文件: ``` tcpdump -w capture.pcap ``` 8. 从抓包文件中读取数据包: ``` tcpdump -r capture.pcap ``` 以上是 tcpdump 常用的基本命令,更多命令请查看 tcpdump 的手册页。 ### 回答2: tcpdump是一种在Linux操作系统下常用的网络抓包工具,可以用于捕获和分析网络上的数据包。它基于libpcap库,并且可以在终端上以命令行的方式运行。 使用tcpdump命令时,需要在终端中输入指定的参数来设置过滤条件和输出选项。以下是一些常用的tcpdump命令参数: 1. -i参数:用于指定抓包的网络接口。可以输入网络接口的名称,如eth0或wlan0。 2. -n参数:以数字形式显示主机地址而不是进行反向解析。 3. -X参数:显示数据包的十六进制和ASCII形式。 4. -c参数:指定抓包的数量。例如,使用-c 10可以抓取10个数据包后就停止。 5. -s参数:设置抓包的数据包长度。例如,-s 100可以指定抓取100字节的数据包。 6. -w参数:指定抓包数据的输出文件。例如,-w capture.pcap可以将抓包数据保存为名为capture.pcap的文件。 7. 表达式:可以使用表达式来设置过滤条件,例如指定源或目标IP地址或端口,以限制抓取特定的数据包。 当输入tcpdump命令并按下回车时,它将开始捕获网络上的数据包。捕获到的数据包将以逐个数据包的方式显示在终端上,包括源IP地址、目标IP地址、协议类型、目标端口等信息。可以按Ctrl+C来停止抓包。 总结起来,tcpdump是一种功能强大的抓包工具,可以帮助我们分析和排查网络问题。通过设置不同的参数和过滤条件,我们可以灵活地抓取并分析所需的数据包。 ### 回答3: tcpdump是一种在计算机网络上抓取数据包并进行分析的命令行工具。它通常用于诊断网络问题和监视网络流量。 使用tcpdump命令时,需要以root用户或具有网络管理员权限的账户运行。以下是一些常用的tcpdump命令参数和用法: 1. 抓取指定网络接口上的数据包: tcpdump -i eth0 该命令将在eth0接口上抓取数据包。 2. 抓取指定源或目标IP地址的数据包: tcpdump src 192.168.1.100 tcpdump dst 192.168.1.100 这些命令将抓取以192.168.1.100为源或目标IP地址的数据包。 3. 抓取指定端口的数据包: tcpdump port 80 tcpdump portrange 1000-2000 这些命令将抓取目标端口为80或在1000至2000范围内的数据包。 4. 保存抓取到的数据包到文件中: tcpdump -w output.pcap 该命令将把抓取到的数据包保存到output.pcap文件中,以便后续分析。 5. 显示抓取到的数据包信息: tcpdump -r input.pcap tcpdump -A 这些命令将显示input.pcap文件中的数据包信息或以可读形式显示抓取到的数据包内容。 6. 显示部分数据包信息: tcpdump -c 10 该命令将抓取并显示前10个符合条件的数据包。 tcpdump命令还有很多其他参数可以用于过滤数据包、显示指定的协议等。它可以帮助管理员查找网络故障、检查网络流量、监视网络安全等。因其灵活性和强大的功能,tcpdump是网络管理员和安全专家常用的工具之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值