当前位置: 首页 > news >正文

tcpdump快速入门及实践手册

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 120x0000:  000c 2972 87e0 0050 56c0 0008 0800 45000x0010:  0034 b3b3 4000 8006 512d c0a8 3a01 c0a80x0020:  3a91 d979 2766 b6e0 0611 9ced 82b6 50180x0030:  0201 d852 0000 0100 0000 0006 0103 00010x0040:  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条帧。

在这里插入图片描述

相关文章:

tcpdump快速入门及实践手册

tcpdump快速入门及实践手册 1. 快速入门 [1]. 基本用法 基本用法: tcpdump [选项 参数] [过滤器 参数] [rootkysrv1 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 [-aAbdDefhH…...

javascript双判断语句

JavaScript的if双判断语句和java相似 if&#xff08;条件表达式&#xff09; { 执行语句 } else { 执行语句 } 比如说要判断一个年份是否是闰年&#xff0c;代码如下 html><head><meta charset"UTF-8"><title></title></hea…...

C# 中的多态

多态的定义&#xff1a; 通过指向派生类的基类引用&#xff0c;调用虚函数&#xff0c;会根据引用所指向派生类的实际类型&#xff0c;调用派生类中的同名重写函数&#xff0c;便是多态。 C#中的多态可以分为两种类型&#xff1a; 编译时多态&#xff08;静态多态&#xff09;&…...

高性能内存对象缓存Memcached原理与部署

目录 一&#xff1a;Memcached 1&#xff1a;Memcached的概述 2&#xff1a;数据存储方式与数据过期方式 &#xff08;1&#xff09;数据存储方式&#xff1a;Slab Allocation (2)数据过期方式:LRU、Laxzy Expiration 3.Memcached 缓存机制 4.Memcached 分布式 5.Memcac…...

【C++进阶】map与set的封装实践

文章目录 map和setmapmap的框架迭代器operator()operator--()operator()和operator!()operator*()operator->() insertbegin()end()operator[] ()map的所有代码&#xff1a; set的封装迭代器的封装总结 map和set 通过观察stl的底层我们可以看见&#xff0c;map和set是通过红…...

可视化编程-七巧低代码入门02

1.1.什么是可视化编程 非可视化编程是一种直接在集成开发环境中&#xff08;IDE&#xff09;编写代码的编程方式&#xff0c;这种编程方式要求开发人员具备深入的编程知识&#xff0c;开发效率相对较低&#xff0c;代码维护难度较大&#xff0c;容易出现错误&#xff0c;也需要…...

算法:魔法字典

1️⃣要求&#xff1a; 设计一个使用单词列表进行初始化的数据结构&#xff0c;单词列表中的单词 互不相同 。 如果给出一个单词&#xff0c;请判定能否只将这个单词中一个字母换成另一个字母&#xff0c;使得所形成的新单词存在于你构建的字典中。 实现 MagicDictionary 类…...

html+css 实现hover 翻转按钮

前言:哈喽,大家好,今天给大家分享html+css 绚丽效果!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 一、效果二、原理解析1.这是一个,hover翻转按钮的效果。这其实是用==一个元素==实现的。…...

ETL程序员如何平衡日常编码工作与提升式学习

在快速发展的科技行业中&#xff0c;程序员面临着不断更新的技术和工具&#xff0c;尤其是数据领域的从业者&#xff0c;如ETL&#xff08;抽取、转换、加载&#xff09;工程师。如何在日常繁重的编码工作中找到时间进行提升式学习&#xff0c;成为了许多ETL工程师的共同挑战。…...

被嫌弃的35岁程序员,竟找到了职业的新出路:PMP项目管理

35岁&#xff0c;本应是事业发展的高峰期。更多听到的却是35岁职场天花板&#xff0c;特别是IT从业者&#xff0c;35岁就好像是一道迈不过的坎&#xff1a;多年的工作经验&#xff0c;在35岁的生理年龄面前&#xff0c;一文不值。 IT从业者若想安然度过“35岁危机”&#xff0…...

跟李沐学AI:目标检测、锚框

边缘框 用于表示物体的位置&#xff0c;一个边缘框通过四个数字定义&#xff1a;(坐上x, 左上y, 右下x, 右下y)或&#xff08;左上x, 左上y, 宽, 高&#xff09; 通常物体检测或目标检测的数据集比图片分类的数据集小很多&#xff0c;因为物体检测数据集标注成本高很多。 目…...

【鸿蒙学习】HarmonyOS应用开发者基础 - 构建更加丰富的页面(一)

学完时间&#xff1a;2024年8月14日 一、前言叨叨 学习HarmonyOS的第六课&#xff0c;人数又成功的降了500名左右&#xff0c;到了3575人了。 二、ArkWeb 1、概念介绍 ArkWeb是用于应用程序中显示Web页面内容的Web组件&#xff0c;为开发者提供页面加载、页面交互、页面调…...

机器学习深度学习中的Warmup技术是什么?

机器学习&深度学习中的Warmup技术是什么&#xff1f; 在机器学习&深度学习模型的训练过程中&#xff0c;优化器的学习率调整策略对模型的性能和收敛性至关重要。Warmup是优化器学习率调整的一种技术&#xff0c;旨在改善训练的稳定性&#xff0c;特别是在训练的初期阶…...

ECMAScript6中的模块:export导出、import导入

1、模块概述 早期的 JavaScript 程序很小&#xff0c;通常被用来执行独立的脚本任务&#xff0c;在 Web 页面中需要的地方提供一定的交互。随着 Web 应用程序变得越来越复杂&#xff0c;有必要考虑提供一种将 JavaScript 程序拆分为可按需导入的单独模块的机制&#xff0c;这就…...

mysql写个分区表

因为表量已经达到1个亿了。现在想做个优化&#xff0c;先按照 create_time 时间进行分区吧。 create_time 是varchar类型。 CREATE TABLE orders (id varchar(40) NOT NULL ,order_no VARCHAR(20) NOT NULL,create_time VARCHAR(20) NOT NULL,amount DECIMAL(10,2) NOT NULL,…...

Hystrix——服务容错保护库

熔断机制是解决微服务架构中因等待出现故障的依赖方响应而形成任务挤压&#xff0c;最终导致自身服务瘫痪的一种机制&#xff0c;它的功能类似电路的保险丝&#xff0c;其目的是为了阻断故障&#xff0c;从而保护系统稳定性。Hystrix作为Spring Cloud中实现了熔断机制的组件&am…...

【区块链+金融服务】河北股权交易所综合金融服务平台 | FISCO BCOS应用案例

区域性股权市场是我国资本市场的重要组成部分&#xff0c;是多层次资本市场体系的基石。河北股权交易所&#xff08;简称&#xff1a;河交所&#xff09; 作为河北省唯一一家区域性股权市场运营机构&#xff0c;打造河北股权交易所综合金融服务平台&#xff0c;将区块链技术与区…...

[图解]需要≠需求-《分析模式》漫谈

1 00:00:00,760 --> 00:00:02,910 今天的《分析模式》漫谈 2 00:00:02,920 --> 00:00:04,180 我们来说一下 3 00:00:04,490 --> 00:00:06,490 需要不等于需求 4 00:00:10,490 --> 00:00:11,760 还是第一章 5 00:00:13,120 --> 00:00:15,020 这里 6 00:00:1…...

刷到好听的音频怎么办

在短视频平台上&#xff0c;我们常常会刷到那些好听得让人陶醉的视频&#xff0c;可却无法直接下载保存其中的音频&#xff0c;是不是感觉很遗憾&#xff1f; 比如刷到林俊杰这首前奏超好听的《江南》&#xff0c;却禁止下载无法直接下载保存。 别担心&#xff0c;下面就为您揭…...

怎么在网络攻击中屹立不倒

在当今蓬勃发展的网络游戏产业中&#xff0c;服务器安全无疑是企业生存与发展的基石。面对互联网环境中无处不在的DDoS&#xff08;分布式拒绝服务&#xff09;与CC&#xff08;挑战碰撞&#xff09;攻击威胁&#xff0c;游戏服务器的防御能力与高效处理能力显得尤为重要。相较…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

React---day11

14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store&#xff1a; 我们在使用异步的时候理应是要使用中间件的&#xff0c;但是configureStore 已经自动集成了 redux-thunk&#xff0c;注意action里面要返回函数 import { configureS…...

基于 TAPD 进行项目管理

起因 自己写了个小工具&#xff0c;仓库用的Github。之前在用markdown进行需求管理&#xff0c;现在随着功能的增加&#xff0c;感觉有点难以管理了&#xff0c;所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD&#xff0c;需要提供一个企业名新建一个项目&#…...

R语言速释制剂QBD解决方案之三

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)

本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...

基于IDIG-GAN的小样本电机轴承故障诊断

目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) ​梯度归一化(Gradient Normalization)​​ (2) ​判别器梯度间隙正则化(Discriminator Gradient Gap Regularization)​​ (3) ​自注意力机制(Self-Attention)​​ 3. 完整损失函数 二…...

站群服务器的应用场景都有哪些?

站群服务器主要是为了多个网站的托管和管理所设计的&#xff0c;可以通过集中管理和高效资源的分配&#xff0c;来支持多个独立的网站同时运行&#xff0c;让每一个网站都可以分配到独立的IP地址&#xff0c;避免出现IP关联的风险&#xff0c;用户还可以通过控制面板进行管理功…...

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)

一、OpenBCI_GUI 项目概述 &#xff08;一&#xff09;项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台&#xff0c;其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言&#xff0c;首次接触 OpenBCI 设备时&#xff0c;往…...