当前位置: 首页 > 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;游戏服务器的防御能力与高效处理能力显得尤为重要。相较…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

python/java环境配置

环境变量放一起 python&#xff1a; 1.首先下载Python Python下载地址&#xff1a;Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个&#xff0c;然后自定义&#xff0c;全选 可以把前4个选上 3.环境配置 1&#xff09;搜高级系统设置 2…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路

进入2025年以来&#xff0c;尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断&#xff0c;但全球市场热度依然高涨&#xff0c;入局者持续增加。 以国内市场为例&#xff0c;天眼查专业版数据显示&#xff0c;截至5月底&#xff0c;我国现存在业、存续状态的机器人相关企…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架&#xff0c;支持"一次开发&#xff0c;多端部署"&#xff0c;可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务&#xff0c;为旅游应用带来&#xf…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求&#xff0c;并检查收到的响应。它以以下模式之一…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比

在机器学习的回归分析中&#xff0c;损失函数的选择对模型性能具有决定性影响。均方误差&#xff08;MSE&#xff09;作为经典的损失函数&#xff0c;在处理干净数据时表现优异&#xff0c;但在面对包含异常值的噪声数据时&#xff0c;其对大误差的二次惩罚机制往往导致模型参数…...

【JVM面试篇】高频八股汇总——类加载和类加载器

目录 1. 讲一下类加载过程&#xff1f; 2. Java创建对象的过程&#xff1f; 3. 对象的生命周期&#xff1f; 4. 类加载器有哪些&#xff1f; 5. 双亲委派模型的作用&#xff08;好处&#xff09;&#xff1f; 6. 讲一下类的加载和双亲委派原则&#xff1f; 7. 双亲委派模…...

MySQL 8.0 事务全面讲解

以下是一个结合两次回答的 MySQL 8.0 事务全面讲解&#xff0c;涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容&#xff0c;并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念&#xff08;ACID&#xff09; 事务是…...

为什么要创建 Vue 实例

核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...