tcpdump快速入门及实践手册

news2024/11/24 18:51:05

tcpdump快速入门及实践手册

1. 快速入门

[1]. 基本用法

基本用法: tcpdump [选项 参数] [过滤器 参数]

[root@kysrv1 pwe]# tcpdump -h
tcpdump version 4.9.3
libpcap version 1.9.1 (with TPACKET_V3)
OpenSSL 1.1.1f  31 Mar 2020
Usage: tcpdump [-aAbdDefhHIJKlLnNOpqStuUvxX#] [ -B size ] [ -c count ]
		[ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ]
		[ -i interface ] [ -j tstamptype ] [ -M secret ] [ --number ]
		[ -Q in|out|inout ]
		[ -r file ] [ -s snaplen ] [ --time-stamp-precision precision ]
		[ --immediate-mode ] [ -T type ] [ --version ] [ -V file ]
		[ -w file ] [ -W filecount ] [ -y datalinktype ] [ -z postrotate-command ]
		[ -Z user ] [ expression ]
[root@kysrv1 pwe]# 

[2]. 参数及选项

  • 【-A】:以ASCII打印报文的数据内容,与参数-X冲突。
  • 【-b】: 指定协议,包括 iparprarpicmp等。
  • 【-c】:数字,指定抓包数量。
  • 【-C】:数字,保存文件的大小(单位为MB) ,常配合-W使用,代表抓取的包构成多少个pcap文件,每个文件大小多少。
  • 【-D】:列出所有可用网络接口。
  • 【-e】:显示通信双方MAC地址。
  • 【-i】 :指定监听网卡名称,-i any 表示监听所有网卡。
  • 【-n】: 不解析主机名,直接用IP地址显示;默认用hostname显示,不带该参数会导致回显比较慢,因为要处理域名翻译。
  • 【-nn】: 不解析主机名和端口,直接用Port显示; 默认显示Port对应的服务名。
  • 【-P】:指定抓取的包是进入还是流出的,可选参数有in、out、inout,默认 inout
  • 【-p】: 关闭接口的混杂模式。
  • 【-q】: 快速打印输出,只输出少量的协议相关信息。
  • 【-r】:从抓包文件读取内容。
  • 【-s】: 数字,设置要抓取的包长,默认96字节;如果-s 0,会截取全部内容。
  • 【-S】:以绝对值形式输出TCP序列号,缺省时以相对值形式输出。
  • 【-t】:不打印时间戳。
  • 【-tt】:显示时间戳。
  • 【-ttt】:显示请求与响应的时间间隔而非绝对时间。
  • 【-vv】:输出详细信息。
  • 【-w】:输出到指定pcap文件;缺省时默认保存在系统的默认路径下;当指定输出文件时,就不会输出到屏幕了。
  • 【-W】:数字,抓取多少个pcap文件,配合-C使用。
  • 【-x】:用16进制显示从ip层及以上开始的帧内容。
  • 【-X】:用16进制和ascii显示ip层及以上的报文头。
  • 【-xx】:同-x,但是从数据链路层(即以太网头部)开始打印。
  • 【-XX】:同-X,但是从数据链路层(即以太网头部)开始打印。
  • 【-Z】:用户名,以该用户权限来执行抓包。
  • 【-G】:从缓存写入到文件的时间间隔(默认是 2 秒);如果想要 tcpdump 立即将数据写入文件,可以使用 -G 参数。

[3]. 过滤器及参数

过滤器分类

  • 协议(Proto): 可选有 ip, arp, rarp, tcp, udp, icmp, ether 等,默认是所有协议的包。
  • 方向(Dir): 可选有 src, dst, src or dst, src and dst,默认为 src or dst
  • 类型(Type): 可选有 host, net, port, portrange(端口范围,比如 21-42),默认为 host。
  • 组合逻辑运行符: 可选有 andornot括号 等。

括号:

()等特殊符号需要加转义符或者用单引号 ,如下示例:

tcpdump host 192.168.58.1 and \(192.168.58.151 or 192.168.58.131\)
tcpdump host 192.168.58.1 and '(192.168.58.151 or 192.168.58.131)'

上述表达式的含义为:抓取主机192.168.58.1 与(主机192.168.58.151 或 主机 192.168.58.131)之间的通信包。

2. 常用命令

[1]. 监听指定网卡

tcpdump -i ens33

[2]. 监听全部网卡

tcpdump -i any

[3]. 保存Wireshark识别文件格式

tcpdump -i ens33 -w output.pcap

[4]. 查看已有数据包

tcpdump -r output.pcap

[5]. 指定抓取数据包的个数

tcpdump -i ens33 -c 200

上述语句的含义是只抓取200个数据包,然后tcpdump就结束抓取报文。

[6]. 时间格式命名保存报文文件名称

tcpdump -i ens33 port 8080 -w /tmpgram//$(date +%Y%m%d_%H%M).pcap

[7]. 显示通信双方IP地址和端口

tcpdump -i ens33 -nn

[8]. 显示通信双方MAC地址

tcpdump -i ens33 -e

[9]. 显示通信双方MAC地址+IP地址.端口

tcpdump -i ens33 -nne

[10]. 显示通信双方相对时间

tcpdump -i ens33 -ttt

[11]. 抓取指定主机所有收发数据包

tcpdump host 10.16.21.61

[12]. 抓取主机指定网卡所有数据包

比如:抓取主机192.168.58.145 上,经过指定网卡ens33的所有数据包

tcpdump -i ens33 host 192.168.58.145

[13]. 抓取指定端口数据包

抓取指定端口收发报文

tcpdump -i ens33 port 512

抓取目标端口为512的数据包

tcpdump dst port 512

抓取源端口为512的数据包

tcpdump src port 512

[14]. 抓取某一范围端口数据包

抓取 10001200 UDP 端口数据

tcpdump udp and portrange 1000-1200

[15]. 抓取指定网段数据包

指定收发网段

tcpdump net 192.168.10

指定源网段

tcpdump src net 192.168.20

指定目标网段

tcpdump dst net 192.168.20

[16]. 抓取指定协议类型数据包

tcpdump -i ens33 ip
tcpdump -i ens33 tcp
tcpdump -i ens33 udp

3. 组合逻辑表达式命令

组合表达式

tcpdump -i ens33 -xx -c 5 '((udp) and (port 1281) and ((dst host 192.168.58.145) and (src host 192.168.58.1)))'

表达式含义: 抓取网络接口ens33上主机192.168.58.1向主机192.168.58.145发送的 UDP端口为1281 的数据包。

4. 案例讲解

[1]. 指定端口UDP抓包

表达式如下

tcpdump -i ens33 -e -xx -XX -vv -c 5 udp and dst port 1281

参数说明

  • -i 指定网络接口名称,ens33 为主机接口名称;
  • -e 显示通信双方MAC地址;
  • -xx -XX 用十六进制显示以太网数据帧;
  • -vv 输出详细信息;
  • -c 指定抓包数量,本示例中抓取5个数据包就结束抓包;
  • udp: 抓取UDP 数据包;
  • dst port: 抓取目标端口为1281的数据包。

测试数据

在这里插入图片描述

抓取效果

在这里插入图片描述

[2]. UDP以太网帧分析

以太网帧

在这里插入图片描述

0x0000:  000c 2972 87e0 0050 56c0 0008 0800 4500  ..)r...PV.....E.
0x0010:  0053 b360 0000 8011 9156 c0a8 3a01 c0a8  .S.`.....V..:...
0x0020:  3a91 c351 0501 003f 0715 90eb 0303 0004  :..Q...?........
0x0030:  a700 b461 a001 0126 0001 0000 1f00 0120  ...a...&........
0x0040:  1010 1700 0000 0003 00a7 000e 0003 0001  ................
0x0050:  0300 0400 ff16 00ff 1700 ff99 760a f0ff  ............v...
0x0060:  dd 

以太网帧分析

14个字节以太网帧首部 + 20个字节IP帧首部 + 8个字节UDP帧首部。

#14字节以太网首部
000c 2972 87e0 0050 56c0 0008 0800 
#20字节IP首部
4500 0053 b360 0000 8011 9156 c0a8 3a01 c0a8 3a91 
#8字节UDP首部
c351 0501 003f 0715 
#用户数据
90eb 0303 0004 a700 b461 a001 0126 0001 0000 1f00 0120 1010 1700 0000 0003 00a7 000e 0003 0001 0300 0400 ff16 00ff 1700 ff99 760a f0ff dd 

[3]. TCP三次握手

测试工具

在Linux主机上,使用**nc** 工具监听10086端口。

nc -l 10086

测试数据

使用ComMax工具发送TCP连接请求。

在这里插入图片描述

抓包表达式

tcpdump -i ens33 -nn tcp and port 10086

参数说明

  • -i 指定网络接口名称,ens33 为主机接口名称;
  • -nn 不解析主机名和端口,直接用Port显示; 默认显示Port对应的服务名;
  • tcp: 抓取TCP 数据包;
  • port: 抓取收发端口为10086的数据包。

三次握手

在这里插入图片描述

10:17:43.577371 IP 192.168.58.1.59225 > 192.168.58.145.10086: Flags [S], seq 4126457226, win 64240, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
10:17:43.577404 IP 192.168.58.145.10086 > 192.168.58.1.59225: Flags [S.], seq 2886975696, ack 4126457227, win 64240, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
10:17:43.579825 IP 192.168.58.1.59225 > 192.168.58.145.10086: Flags [.], ack 1, win 513, length 0

Flags 含义:

  • [S] : 表示Start 开始握手;
  • [S.] : 表示Start+Ack 握手并确认;
  • [ . ] : 表示Ack 握手确认;
  • [P.] : 表示Push+Ack 数据发送和确认;
  • [F.] : 表示Finish+Ack 挥手并确认;

数据传输及挥手

在这里插入图片描述

[4]. TCP以太网帧分析

TCP测试数据

在这里插入图片描述

抓包表达式

tcpdump -i ens33 -xx -nn tcp and port 10086

以太网帧

在这里插入图片描述

10:34:54.669979 IP 192.168.58.1.55673 > 192.168.58.145.10086: Flags [P.], seq 1:13, ack 1, win 513, length 12
	0x0000:  000c 2972 87e0 0050 56c0 0008 0800 4500
	0x0010:  0034 b3b3 4000 8006 512d c0a8 3a01 c0a8
	0x0020:  3a91 d979 2766 b6e0 0611 9ced 82b6 5018
	0x0030:  0201 d852 0000 0100 0000 0006 0103 0001
	0x0040:  000a

以太网帧分析

14个字节以太网帧首部 + 20个字节IP帧首部 + 20个字节TCP帧首部。

#14字节以太网首部
000c 2972 87e0 0050 56c0 0008 0800
#20字节IP首部
4500 0034 b3b3 4000 8006 512d c0a8 3a01 c0a8 3a91
#20字节TCP首部
d979 2766 b6e0 0611 9ced 82b6 5018 0201 d852 0000
#用户数据
0100 0000 0006 0103 0001 000a

[5]. 抓包并保存到文件

抓包并保存到文件,同时控制文件大小和文件个数。

表达式

tcpdump -i ens33 -s 0 -xx -nn udp port 1281 -w /var/gram/ats.pcap -C 2 -W 3 -Z root 

参数说明

  • -i 指定网络接口名称,ens33 为主机接口名称;
  • -s 0 抓取全部报文内容;
  • -xx 用十六进制显示以太网数据帧;
  • -nn 不解析主机名和端口;
  • udp port 1281: 捕获UDP类型,端口为1281的数据。
  • -w 报文保存路径,指定为 /var/gram/ats.pcap
  • -C 2: 保存文件的大小(单位为MB)为2MB ;
  • -W 3: 抓取3个pcap文件,依次命名为 ats.pcap0ats.pcap1ats.pcap2
  • -Z:root用户权限执行保存报文。

测试数据

在这里插入图片描述

表达式验证

先验证表达式是否正确,然后再保存报文。

tcpdump -i ens33 -s 0 -xx -nn udp port 1281 -Z root

在这里插入图片描述

执行保存报文

tcpdump -i ens33 -s 0 -xx -nn udp port 1281 -w /var/gram/ats.pcap -C 2 -W 3 -Z root

开始保存报文,创建第一个文件 ats.pcap0

在这里插入图片描述

当第一个文件的大小到达2MB 时,开始创建第二个文件 ats.pcap1

在这里插入图片描述

当三个文件都存满的时候,tcpdump将以覆盖的方式存储。

在这里插入图片描述

循环覆盖中

在这里插入图片描述

[6]. 读取存盘文件

如果用tcpdump读取已经保存的文件,则用tcpdump -r file.pcap 命令。

表达式如下:

tcpdump -r ats.pcap0 -xx -nn -c 3
  • -c 3 表示只读取3条帧。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2045861.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python爬虫使用实例

IDE:大部分是在PyCharm上面写的 解释器装的多 → 环境错乱 → error:没有配置,no model 爬虫可以做什么? 下载数据【文本/二进制数据(视频、音频、图片)】、自动化脚本【自动抢票、答题、采数据、评论、点…

3.2 实体-关系模型(ER模型)

欢迎来到我的博客,很高兴能够在这里和您见面!欢迎订阅相关专栏: 工💗重💗hao💗:野老杂谈 ⭐️ 全网最全IT互联网公司面试宝典:收集整理全网各大IT互联网公司技术、项目、HR面试真题.…

Keycloak中授权的实现-转载

在Keycloak中实现授权,首先需要了解与授权相关的一些概念。授权,简单地说就是某个(些)用户或者某个(些)用户组(Policy),是否具有对某个资源(Resource&#xf…

基于SpringBoot的餐饮订单系统-计算机毕业设计源码39867

摘 要 随着现代生活节奏的加快和人们对便捷餐饮服务的需求不断增长,基于Spring Boot的餐饮订单系统的设计与实现成为当前研究的关键课题。本研究旨在开发一款包括首页、通知公告、餐饮资讯、餐饮菜单、商城管理等功能模块的系统,旨在提供便捷高效的餐饮订…

了解一下内测系统

内测系统是什么? 在软件或应用程序开发的过程中,供开发人员进行测试和调试的系统。 内测系统的作用是什么? 达到让用户使用游戏或者软件的时候体验感更好、减少风险、方便开发者更好的找到并解决自己软件中的问题。测试好后的app可以将自己的…

C ++ 也可以搭建Web?高性能的 C++ Web 开发框架 CPPCMS + MySQL 实现快速入门案例

什么是CPPCMS? CppCMS 是一个高性能的 C Web 开发框架,专为构建快速、动态的网页应用而设计,特别适合高并发和低延迟的场景。其设计理念类似于 Python 的 Django 或 Ruby on Rails,但针对 C 提供了更细粒度的控制和更高效的性能。…

Linux--传输层协议UDP

目录 传输层 再谈端口号 端口号范围划分 认识知名端口号(Well-Know Port Number) 两个问题 UDP 协议 UDP 协议端格式 UDP 的特点 面向数据报 UDP 的缓冲区 UDP 使用注意事项 基于 UDP 的应用层协议 进一步理解UDP协议 传输层 负责数据能够从发送端传输接收端. 再谈…

STM32F407ZET6使用LCD(9341)

1.原理图 屏幕是中景园2.8寸液晶屏,9341驱动不带触摸屏版本 2.STM32CUBEMX配置 3.编写驱动程序

【全国大学生电子设计竞赛】2021年K题

🥰🥰全国大学生电子设计大赛学习资料专栏已开启,限时免费,速速收藏~

02 网络编程-UDP用户数据包协议

目录 一、UDP简介 二、UDP协议的通信流程 三、UDP相关API接口 (1)创建套接字-socket() (2)地址信息结构体sockaddr_in{} (3)地址转换接口 (4)发送消息sendto() (…

谁偷偷看了你的网站?这两款统计工具告诉你!小白易上手~

前两天,上线了一个知识库网站:花了一天时间,搭了个专属知识库,终于上线了,手把手教,不信你学不会。 想知道这个网站的流量如何,怎么搞? 网站流量统计分析工具,了解下&a…

EmguCV学习笔记 C# 2.2 Matrix类

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 EmguCV学习笔记目录 Vb.net EmguCV学习笔记目录 C# 笔者的博客网址:VB.Net-CSDN博客 教程相关说明以及如何获得pdf教…

全面解析Gerapy分布式部署:从环境搭建到定时任务,避开Crawlab的坑

Gerapy分布式部署 搭建远程服务器的环境 装好带docker服务的系统 Docker:容器可生成镜像,也可拉去镜像生成容器 示例:将一个环境打包上传到云端(远程服务器),其他8个服务器需要这个环境直接向云端拉取镜像生成容器,进而使用该环境,比如有MYS…

ElasticSearch读写性能调优

文章目录 ES写入数据过程ES读取数据的过程写数据底层原理提升集群读取性能数据建模优化分片 提升写入性能的方法服务器端优化写入性能建模时的优化降低Translog写磁盘的频率,但是会降低容灾能力分片设定调整Bulk 线程池和队列 ES写入数据过程 客户端选择一个node发…

Linux系统编程:进程间通信 1:管道

1.进程间的互相通信的方式 进程间互相通信的方式共有7种: (1)无名管道(同主机) (2)有名管道(同主机) (3)信号(同主机)…

大语言模型(LLM)构建产品的一年经验总结【干货长文】

这是一份涵盖战术、运营和战略方面的大语言模型产品成功建设的实用指南。 现在是构建大型语言模型(LLM)的激动人心的时刻。在过去的一年里,LLM已经变得足够好,可以用于实际应用。而且它们每年都在变得更好更便宜。伴随着社交媒体上…

成功转行软件测试工程师,年薪30W+,经验总结都在这!

这是给转行做软件测试的小白的参考,无论是从零开始,或者是转行的朋友来说,这都是值得一看的,也是可以作为一种借鉴吧。 而且我决定转行IT(互联网)行业,其实理由也很简单,不用动体力…

全网爆火的从零到一落地接口自动化测试

前段时间写了一系列自动化测试相关的文章,当然更多的是方法和解决问题的思路角度去阐述我的一些观点。结合我自己实践自动化测试的一些经验以及个人理解,这篇文章来聊聊新手如何从零到一落地实践接口自动化测试。 为什么要做接口测试 测试理念的演变 早…

awesome-react-native 收集最好的React Native库,工具,教程,文章(上篇)

image 分类 分类 会议 连锁反应 - 波特兰,或者美国React Native EU - 弗罗茨瓦夫,波兰React Alicante - 西班牙阿利坎特ReactNext - 以色列特拉维夫React Berlin - 柏林,德国 用品 参考HOWTO文档什持续集成内幕 组件 UI 导航 导航/路由文章…

Aerospike学习笔记

1 概述 Aerospike 是一个分布式、可扩展的数据库。该架构具有三个关键目标: 为网络规模的应用程序创建灵活、可扩展的平台。提供传统数据库所期望的稳健性和可靠性(如 ACID)。以最少的人工参与提供运营效率。 文档链接:https://d…