linux抓包工具:tcpdump 工具用法

简介:

 tcpdump 采用命令行方式,它的命令格式为:

      tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ]
[ -i 网络接口 ] [ -r 文件名] [ -s snaplen ]
[ -T 类型 ] [ -w 文件名 ] [表达式 ]

(1). tcpdump 的选项介绍

 

   -a    将网络地址和广播地址转变成名字;
-d    将匹配信息包的代码以人们能够理解的汇编格式给出;
-dd    将匹配信息包的代码以c语言程序段的格式给出;
-ddd   将匹配信息包的代码以十进制的形式给出;
-e    在输出行打印出数据链路层的头部信息;
-f    将外部的Internet地址以数字的形式打印出来;
-l    使标准输出变为缓冲行形式;
-n    不把网络地址转换成名字;
-t    在输出的每一行不打印时间戳;
-v    输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息;
-vv    输出详细的报文信息;

         -x         打印出数据包的内容

         -xx       更加详细的打印出数据包的内容

         -X         用ASCII码的形式打印出数据包的内容

         -XX       同上,不过打印出来的信息内容更加详尽
-c    在收到指定的包的数目后,tcpdump 就会停止;
-F    从指定的文件中读取表达式,忽略其它的表达式;
-i    指定监听的网络接口;
-r    从指定的文件中读取包(这些包一般通过-w选项产生);
-w    直接将包写入文件中,并不分析和打印出来;
-T    将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程调用)和snmp(简单网络管理协议;)

 

(2) 实战1: 选项的使用

 

*如何让抓到的数据包,显示其ip地址而不是显示主机名:

在使用tcpdump时,一般我们希望看到的是ip地址,而不适机器名,所以一般可以加上 -n -f选项

 

*在主机有多个接口的情况下如何指定其中的一个接口?

可以使用:  

   tcpdump -i 接口名

来指定特定的接口,比如,要抓取来自eth0接口的icmp数据包的命令是:  

   tcpdump -i eth0 icmp

注意,-i 选项后面必须接接口名,有的机器的接口名可以是any,此时抓取的是来之任意接口的数据包。

   tcpdump -i any icmp

   tcpdump -nf -i any icmp    #打印数据包的ip地址而不是主机名

 

* 如何看到数据包中的MAC地址?

 加上-e选项就可以看到数据包的MAC地址了。

   tcpdump -enf -i any icmp

 

* 如何查看数据包头部的各个字段的数据?

  有时候我们需要看到数据包的头部各个字段的信息,那么只需要添加选项 -v ,若需要更加详细则使用: -vv选项

   tcpdump -enfv -i any

   tcpdump -enf -vv -i any

 

* 如何打印出抓到的数据包的数据?

   添加选项 -x 或 -xx 或 -X(ASIIC码的形式打印数据包的内容) 或 -XX (更加详细的打印数据包的内容)

   tcpdump -x -i eth0 src port 8080

 

 

(3) 实战2: 表达式的使用

   使用表达式可以更加灵活的定制过滤条件,从而抓取到我们想要的数据包。

* 表达式的组成

   表达式可以由3部分的限定词组成:

   1, 类型: host, port, portrange,net ,若没有指定类型参数,缺省是host

   2,方向 : src,  dst, src or dst, src and dst, addr1, addr2, addr3, and addr4 若没有指定,缺省是src and dst

   3,协议 : ether, fddi, tr,wlan,  ip,  ip6, arp, rarp, decnet, tcp and udp 等。 若没有指定,缺省的是所有协议。

   可用的表达式组合请看手册: man tcpdump,这里只讲一些实用的例子:

 

(4) 实例:

* 如何抓取某个主机的数据包?

   tcpdump host localhost1

 

* 获取目的主机是192.168.1.3的数据包?

   tcpdump  -en -i eth0 dst 192.168.1.3

 

* 获取来自主机192.168.1.3 端口是22的数据包?

   tcpdump -enf -i any dst 192.168.1.3 port 22

 

* 获取来自主机192.168.1.3 或是主机192.168.1.4 端口是22 的数据包?

   tcpdump -enf -i any host 192.168.1.3 or 192.168.1.4 and port 22

本文转自运维笔记博客51CTO博客,原文链接http://blog.51cto.com/lihuipeng/983705如需转载请自行联系原作者


lihuipeng

相关文章
|
2天前
|
监控 Linux 数据处理
|
3天前
|
Linux 程序员 Shell
【Linux】详解core dump文件的作用以及用法&&ubuntu20.04下无法形成core dump文件的解决办法
【Linux】详解core dump文件的作用以及用法&&ubuntu20.04下无法形成core dump文件的解决办法
|
6天前
|
安全 Linux Python
Volatility3内存取证工具安装及入门在Linux下的安装教程
Volatility3内存取证工具安装及入门在Linux下的安装教程
Volatility3内存取证工具安装及入门在Linux下的安装教程
|
7天前
|
数据可视化 小程序 Linux
【Linux】自动化构建工具make/Makefile和git介绍
【Linux】自动化构建工具make/Makefile和git介绍
13 0
|
8天前
|
缓存 Linux
linux性能分析之内存分析(free,vmstat,top,ps,pmap等工具使用介绍)
这些工具可以帮助你监视系统的内存使用情况、识别内存泄漏、找到高内存消耗的进程等。根据具体的问题和需求,你可以选择使用其中一个或多个工具来进行内存性能分析。注意,内存分析通常需要综合考虑多个指标和工具的输出,以便更好地理解系统的行为并采取相应的优化措施。
28 6
|
13天前
|
Linux
Linux课程四课---Linux开发环境的使用(自动化构建工具-make/Makefile的相关)
Linux课程四课---Linux开发环境的使用(自动化构建工具-make/Makefile的相关)
|
13天前
|
负载均衡 网络协议 应用服务中间件
【亮剑】在Linux中构建高可用性和高性能网络服务的负载均衡工具HAProxy、Nginx和Keepalived。
【4月更文挑战第30天】本文介绍了在Linux中构建高可用性和高性能网络服务的负载均衡工具HAProxy、Nginx和Keepalived。HAProxy是一个高性能的开源TCP和HTTP负载均衡器,适合处理大量并发连接;Nginx是一个多功能Web服务器和反向代理,支持HTTP、HTTPS和TCP负载均衡,同时提供缓存和SSL功能;Keepalived用于监控和故障切换,通过VRRP实现IP热备份,保证服务连续性。文中详细阐述了如何配置这三个工具实现负载均衡,包括安装、配置文件修改和启动服务,为构建可靠的负载均衡系统提供了指导。
|
15天前
|
Linux 网络安全 数据处理
【专栏】Linux下的xxd命令是一个强大的二进制数据处理工具,用于十六进制转储和数据分析,我教你应该如何使用!
【4月更文挑战第28天】Linux下的xxd命令是一个强大的二进制数据处理工具,用于十六进制转储和数据分析。它可以显示文件的十六进制和ASCII表示,方便查看内容、分析数据结构和比较文件。xxd支持指定输出格式、写入文件、数据提取和转换等功能。在网络安全分析、程序调试和数据恢复等领域有广泛应用。通过掌握xxd,用户能更深入理解和处理二进制数据。
|
15天前
|
Ubuntu Linux 开发工具
【专栏】在Linux上,exa是一个现代化的文件管理系统替代工具,提供直观的文件信息展示。
【4月更文挑战第28天】在Linux上,exa是一个现代化的文件管理系统替代工具,提供直观的文件信息展示。要安装exa,可以在基于Debian的系统(如Ubuntu)上运行`sudo apt install exa`,基于RedHat(如CentOS)的系统运行`sudo yum install exa`,或从源代码编译安装。使用exa的基本命令是`exa`,它列出当前目录的文件和目录。通过选项如`-F`(显示文件类型)、`-h`(人类可读大小)、`-l`(详细信息)和`-s`(排序)可以定制输出。exa还能与其他命令(如grep)结合使用,提升效率。