tcpdump使用教程
一、概述
tcpdump
是一个功能强大的,用于抓取网络数据包的命令行工具,与带界面的Wireshark
一样,基于libpcap
库构建。这篇文章主要介绍tcpdump
的使用。关于如何使用tcpdump
的资料中,最有用的就是tcpdump的两个手册。
tcpdump
使用手册:https://www.tcpdump.org/manpages/tcpdump.1.html
pcap
包过滤手册:https://www.tcpdump.org/manpages/pcap-filter.7.html
二、tcpdump选项介绍
在命令行输入./tcpdump -h
,就可以看到tcpdump的命令行参数选项。
$ ./tcpdump -h
tcpdump version 4.99.4
libpcap version 1.10.4 (with TPACKET_V3)
OpenSSL 1.0.1f 6 Jan 2014
Usage: tcpdump [-AbdDefhHIJKlLnNOpqStuUvxX#] [ -B size ] [ -c count ] [--count][ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ][ -i interface ] [ --immediate-mode ] [ -j tstamptype ][ -M secret ] [ --number ] [ --print ] [ -Q in|out|inout ][ -r file ] [ -s snaplen ] [ -T type ] [ --version ][ -V file ] [ -w file ] [ -W filecount ] [ -y datalinktype ][ --time-stamp-precision precision ] [ --micro ] [ --nano ][ -z postrotate-command ] [ -Z user ] [ expression ]
参数选项 | 选项说明 |
---|---|
-A | 以ASCII格式打印每个数据包(减去其链路层报头)。方便捕捉网页。 |
-B buffer_size | 将操作系统捕获缓冲区大小设置为buffer_size,单位为KiB (1024字节)。 |
-c count | 收到count个数据包后退出。 |
-C file_size | 与 -w 选项配合使用,指定抓包文件大小,若抓取到的文件大于file_size,就创建下个文件保存 |
-d | 将编译好的数据包匹配代码以人类可读的形式转储到标准输出并停止。 |
-dd | 将数据包匹配代码作为C程序片段转储 |
-ddd | 将数据包匹配代码作为十进制数转储(前面有一个计数) |
-D | 打印系统上可用的网络接口列表,tcpdump可以在这些接口上捕获数据包。对于每个网络接口,都会打印一个编号和一个接口名称,后面可能还会有接口的文本描述。可以将接口名称或编号提供给-i标志,以指定要捕获的接口。 |
-e | 每行打印都加上数据链路层头部信息。例如,这可用于打印以太网和IEEE 802.11等协议的MAC层地址。 |
-E | 使用spi@ipaddr algo:secret对寻址到addr并包含安全参数索引值spi的IPsec ESP数据包进行解密。这种组合可以用逗号或换行符分隔。 |
-f | 用数字显示外部IPV4地址,而不是名字(此选项是用来对付Sun公司的NIS服务器的缺陷,此NIS服务器在查询非本地地址名字时,常常会陷入无尽的查询循环) |
-F file | 使用file 文件作为过滤条件表达式的输入, 此时命令行上的输入将被忽略. |
-h,–help | 打印tcpdump和libpcap版本,打印用法信息,然后退出。 |
-i interface | -i 指定 tcpdump 要监听的接口. 如果没有指定, tcpdump 会从系统接口列表中搜寻编号最小的已配置好的接口(不包括 loopback 接口).一但找到第一个符合条件的接口, 搜寻马上结束. |
-I | 将界面置于“监控模式”;这仅在IEEE 802.11 Wi-Fi接口上受支持,并且仅在某些操作系统上受支持。 |
-J | 列出接口和出口支持的时间戳类型。如果无法为接口设置时间戳类型,则不会列出时间戳类型。 |
-l | 对标准输出进行行缓冲,在需要同时观察抓包打印以及保存抓包记录的时候很有用. |
-L | 列出指定网络接口所支持的数据链路层的类型后退出. |
-m module | 从module指定的文件加载SMI MIB模块定义。可以多次使用该选项将几个MIB模块加载到tcpdump中。 |
-M secret | 如果TCP 数据包(TCP segments)有TCP-MD5选项(在RFC 2385有相关描述), 则为其摘要的验证指定一个公共的密钥secret. |
-n | 不将地址(比如, 主机地址, 端口号)进行数字表示到名字表示的转换. |
-N | 不打印出 host 的域名部分. 比如, 如果设置了此选现, tcpdump 将会打印’nic’ 而不是 ‘nic.ddn.mil’. |
-# | 在行首打印一个可选的数据包编号。 |
-O | 不启用进行包匹配时所用的优化代码. 当怀疑某些bug是由优化代码引起的, 此选项将很有用. |
-p | 不要将接口置于混杂模式。请注意,接口可能由于其他原因处于混杂模式;因此,-p 不能用作 “以太网主机{local-hw-addr}或以太网广播” 的缩写。 |
打印解析的数据包输出,即使原始数据包保存到带有-w标志的文件中。 | |
-q | 快速(或是 安静?)输出。打印更少的协议信息,因此输出行更短。 |
-r file | 从文件file 中读取包数据. 如果file 字段为 ‘-’ 符号, 则tcpdump 会从标准输入中读取包数据. |
-S | 打印TCP 数据包的顺序号时, 使用绝对的顺序号, 而不是相对的顺序号. |
-s snaplen | 设置tcpdump的数据包抓取长度为snaplen,,而不是默认的262144字节。 |
-T type | 强制将“表达式”选择的数据包解释为指定的类型。目前已知的type 可取的协议为: aodv, carp , cnfp, domain, lmp , pgm , pgm_zmtp1 , ptp , quic (QUIC), radius (RADIUS), resp , rpc , rtcp , rtp , snmp , someip (SOME/IP), tftp , vat , vxlan , wb and zmtp1 . |
-t | 不要在每行打印时间戳。 |
-tt | 在每行打印时间戳时,从1970年1月1日00:00:00(UTC)开始的秒数,以及从该时间开始的几分之一秒。 |
-ttt | 在每行打印时间戳时,打印与上一行的时间增量(默认单位:微秒) |
-tttt | 在每行打印的时间戳之前添加日期的打印 |
-ttttt | 在每行打印时间戳时,打印与第一行的时间增量(默认单位:微秒) |
-u | 打印出未解密的 NFS 句柄 |
-U | 如果指定了-w选项,则使保存的原始数据包输出到包缓存;即,当每个分组被保存时,它将被写入输出文件,而不是仅当输出缓冲器填满时才被写入。 |
-v | 当分析和打印的时候, 产生详细的输出. 比如, 包的生存时间, 标识, 总长度以及IP包的一些选项. 这也会打开一些附加的包完整性检测, 比如对IP或ICMP包头部的校验和. |
-vv | 更详细的输出。例如,从NFS回复数据包中打印附加字段,SMB数据包被完全解码。 |
-vvv | 产生比-vv更详细的输出. 比如, telent 时所使用的SB, SE 选项将会被打印, 如果telnet同时使用的是图形界面,其相应的图形选项将会以16进制的方式打印出来. |
-V file | 从文件中读取文件名列表。如果file是- ,则使用标准输入。 |
-w file | 将原始数据包写入文件,而不是解析并打印出来。以后可以用-r 选项打印它们。如果文件是- ,则使用标准输出。 |
-W filecount | 此选项与-C 选项配合使用, 这将限制可打开的文件数目, 并且当文件数据超过这里设置的限制时, 依次循环替代之前的文件, 这相当于一个拥有filecount 个文件的文件缓冲池. 同时, 该选项会使得每个文件名的开头会出现足够多并用来占位的0, 这可以方便这些文件被正确的排序. |
-x | 解析和打印时,除了打印每个包的头部数据以外,还要以十六进制打印每个包的数据(减去其链路层头)。打印的数据大小不会超过整个数据包的大小与 snaplen 中的最小值。请注意,这是整个链路层数据包,因此对于填充的链路层(例如以太网),当较高层数据包比所需的填充短时,也会打印填充字节。在当前的实现中,如果分组被截断,该标志可能具有与-xx相同的效果。 |
-xx | 解析和打印时,除了打印每个包的头部数据之外,还要以十六进制打印每个数据包的数据,包括其链路层头部数据。 |
-X | 解析和打印时,除了打印每个包的头部数据以外,还要以十六进制和ASCII打印每个包的数据(减去它的链路层头)。这对于分析新协议非常方便。在当前的实现中,如果分组被截断,该标志可能具有与-XX相同的效果。 |
-XX | 解析和打印时,除了打印每个包的头部数据以外,还要以十六进制和ASCII格式打印每个包的数据,包括它的链路层头部数据。 |
-y datalinktype | 设置tcpdump 只捕获数据链路层协议类型是datalinktype的数据包 |
-z postrotate-command | 与-C或-G选项一起使用,这将使tcpdump运行“postrotate-command file ”命令,其中file是每次轮换后关闭的保存文件。例如,指定-z gzip或-z bzip2将使用gzip或bzip2压缩每个保存文件。 |
-Z user | 如果tcpdump以root用户身份运行,则在打开捕获设备或输入保存文件之后,但在打开任何输出保存文件之前,将用户ID更改为user,将组ID更改为主要用户组。 |
expression(表达式) | 选择要捕获的数据包。如果没有给出表达式,网络上的所有数据包都将被捕获。否则,只有表达式为“真”的数据包才会被捕获。有关表达式语法,请参见pcap-filter(7)。expression参数可以作为单个Shell参数传递给tcpdump,也可以作为多个Shell参数传递给tcpdump,以更方便的方式为准。通常,如果表达式包含Shell元字符,例如用于转义协议名称的反斜杠,那么将其作为单引号参数传递比转义Shell元字符更容易。多个参数在被解析之前用空格连接起来。 |
三、tcpdump 选项表达式(过滤器)
tcpdump
是使用 libpcap
库捕获网络包的,可以通过传入表达式来过滤不必要的网络包,关于过滤表达式的英文手册在这个网址:https://www.tcpdump.org/manpages/pcap-filter.7.html,这一小节就讲一讲这个表达式由什么组成的,怎么使用。
过滤器表达式由一个或多个表达元(primitives)组成。表达元(primitives)通常由一个id(名称或编号)组成,前面有一个或多个限定符。有三种不同的限定词:
type、dir、proto
type
限定符说明id名称或编号所指的是什么。可能的类型有:host、net、port、portrange
。例如,“host foo’”、“net 128.3”、“port 20”、“portrange 6000-6008”。如果没有type
限定符,则假定为host
。dir
限定符指定一个特定的传输方向到和/或来自id。可能的方向是src、dst、src或dst、src和dst、ra、ta、addr1、addr2、addr3和addr4。例如,“src foo”、“dst net 128.3”、“src或dst端口ftp-data”。如果没有dir限定符,则假定为“src或dst”。ra、ta、addr1、addr2、addr3和addr4限定符仅对IEEE 802.11无线LAN链路层有效。
tcpdump的选项介绍完了,东拼西凑、或存疏漏,如有不慎,欢迎指正。如果对你有帮忙,欢迎点赞👍及➕收藏⭐。
相关文章:

tcpdump使用教程
一、概述 tcpdump是一个功能强大的,用于抓取网络数据包的命令行工具,与带界面的Wireshark一样,基于libpcap库构建。这篇文章主要介绍tcpdump的使用。关于如何使用tcpdump的资料中,最有用的就是tcpdump的两个手册。 tcpdump使用手…...

Zynq-7000、FMQL45T900的GPIO控制(五)---linux应用层配置GPIO输出控制
上文中详细阐述了对应原理图MIO/EMIO的编号,怎么计算获取linux下gpio的编号 本文涉及C代码上传,下载地址 Zynq-7000、FMQL45T900的GPIO控制c语言代码资源-CSDN文库 本文详细记录一下针对获取到gpio的编号,进行配置输出模式,并进…...

带你搞懂人工智能、机器学习和深度学习!
不少高校的小伙伴找我聊入门人工智能该怎么起步,如何快速入门,多长时间能成长为中高级工程师(聊下来感觉大多数学生党就是焦虑,毕业即失业,尤其现在就业环境这么差),但聊到最后,很多…...

Android 11.0 framework中Launcher的启动流程分析
1.前言 在11.0的系统rom定制化开发中,在rom定制过程中,在对于开发默认Launcher功能,解决开机动画后黑屏,了解fallbackhome机制等等 对于launcher的启动流程来说很重要,接下来就来分析下launcher的启动流程 2.framework中Launcher的启动流程分析的核心类 frameworks/ba…...

2023年第十五届华中杯赛题C 题 空气质量预测与预警
2023年五一假期期间,数学建模竞赛就有四场,各种比赛各种需求应接不暇。因此,对于本次浅析有不足的地方欢迎大家指出。为了更好的帮助大家华中杯参赛,下面带来,C题详细版思路。由于C题的难度,注定选题人数将…...

Go官方指南(一)包、变量、函数
import "time" 获取当前系统时间:time.Now() 每个 Go 程序都是由包构成的 按照约定 ,包名与导入路径的最后一个元素一致。例如,"math/rand"包中的源码均以 package rand 语句开始 在 Go 中,如果一个名字以…...

liunx笔记
快捷键 #移动到行首 ctrla #移动到行尾 ctrle #删除光标之前的字符 ctrlu #删除光标之后的字符 ctrlk #清屏 ctrll正则表达式 正则中普通常用的元字符 元字符功能.匹配除了换行符以外的任意单个字符*前导字符出现0次或连续多次.*任意长度字符^行首(以…开头),如…...

vue3 封装ECharts组件
一、前言 前端开发需要经常使用ECharts图表渲染数据信息,在一个项目中我们经常需要使用多个图表,选择封装ECharts组件复用的方式可以减少代码量,增加开发效率。 ECharts图表大家应该用的都比较多,基础的用法就不细说了ÿ…...

Spring Security 6.0系列【30】授权服务器篇之JOSE规范
有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 3.0.4 本系列Spring Security 版本 6.0.2 本系列Spring Authorization Server 版本 1.0.2 源码地址:https://gitee.com/pearl-organization/study-spring-security-demo 文章目录 1. 前言2. JOSE 规范3. JW…...

维度表设计原则
维度的作用一般是查询约束、分类汇总以及排序等,我们在进行维度表设计时,应当提前考虑: (1)维度属性尽量丰富,为数据使用打下基础 比如淘宝商品维度有近百个维度属性,为下游的数据统计、分析、…...

【requests模块上】——02爬虫基础——如桃花来
目录索引 requests请求:1. 基于get请求:*基础写法:**带参数的get请求:* 2. 基于post请求: 获取数据:1. 获取json数据:2. 获取二进制数据: 初步伪装小爬虫——添加headers: 引入&…...

Springboot +Flowable,详细解释啥叫流程实例(一)
一.简介 上一篇中学习了Flowable 中的流程模板(流程定义)的部署问题,这一篇来学习什么叫流程实例。 部署之后的流程模板,还不能直接运行,例如我们部署了一个请假流程,现在 张三想要请假,他就需…...

信息安全复习十:Web与电子商务安全
一、章节梗概 1.信息安全的学科内容 2.Web和电子商务安全问题提出 3.安全套接字协议SSL与传输层安全协议TLS 4.安全电子交易(SET)简要介绍 复习: 密码学内容:对称密钥密码、公开密钥密码、报文鉴别 PKI:数字签名、数字证书、信任关系 身份认…...

flutter 启动其他app server或者页面失败
1.目标Service 设置 android:exported"true" 2.目标Service需要声明自定义权限。客户端需要声明权限。 3.目标Service需要添加<intent-filter></intent-filter> 检查以上的声明和权限, 如果还是不行 说明是 Android 11引入了*包可见性*’ …...

【linux-进程2】进程控制
🌈环境变量 🍄初识 系统带的命令可以直接运行(ls ll命令等),但是我们自己写的命令必须要带上路径才能运行(./myproc),这是什么原因导致的?如果我们也想自己写的命令直接…...

【五一创作】多域名环境和Office 365混合部署方案
目录 一、多域名环境是什么? 二、Office 365是什么? 三、多域名环境与Office 365的结合 总结 一、多域名环境是什么? 多域名环境指的是一个企业拥有多个域名,这些域名可能隶属于不同的子公司、部门或者品牌,但是都归属于同一个母公司。例如,一个中国电信集团旗下有…...

Vue:路由route
一、概念 1、组成 每一个路由都由 key 和 value 组成。 keyvalue路由 route。 2、本质 路由的本质:一个路由表达了一组对应关系。路由器的本质:管理多组对应关系。 3、路由的工作原理 点击之后路径变化——>路由器监视到变化——>根据路径…...

Windows系统被faust勒索病毒攻击勒索病毒解密服务器与数据库解密恢复
在近期,一种名为faust后缀的勒索病毒威胁已经引起了全球计算机系统安全领域的关注。faust勒索病毒是一种基于RSA加密算法的恶意软件,能够加密目标计算机系统上的所有文件,并向用户勒索赎金来承诺解密恢复操作。下面为大家介绍一下Windows系统…...

Java面试题总结 | Java面试题总结7- Redis模块(持续更新)
Redis 文章目录 Redisredis的线程模型Redis的Mysql的区别Redis和传统的关系型数据库有什么不同?Redis常见的数据结构zset数据结构Redis中rehash过程redis为什么不考虑线程安全的问题呢Redis单线程为什么还能这么快?为什么Redis是单线程的?red…...

虹科案例 | 如何通过智能、非接触式测量解决方案,提高起重机的安全和效率?
PART 1 案例详情 自建造初期以来,起重机行业已经走了很长一段路。技术的使用在行业进步中发挥了重要作用,降低了使用桥式起重机的危险性。特别是,智能、非接触式测量解决方案通过使用高架升降机更安全、更高效、更高效,为行业的进…...

流程图拖拽视觉编程-流程编辑器
目录 一、简介 二、流程编辑器-视图实现 三、参考资料 一、简介 前期文章: 流程图拖拽视觉编程--概述_Jason~shen的博客-CSDN博客 本期内容: 本期将介绍流程编辑器模块的实现方法,效果图如下所示。该模块基于QT Graphics/View实现&…...

6.hashcode与equals区别与联系
1.hashCode介绍 hashCode() 的作用是获取哈希码,也称为散列码;它实际上是返回一个int整数。 这个哈希码的作用是确定该对象在哈希表中的索引位置。hashCode() 定义在JDK的Object.java中,这就意味着Java中的任何类都包含有hashCode() 函数。 2.equals介…...

智能家居“落地者”:三翼鸟用场景方案持续链接大众消费
互联网分析沙龙(techxue)原创 作者 | 锡海 编辑 | 七喜 从上海车展再到AWE2023展会,只要有大型活动的地方,都能看到人潮汹涌的景象,久违的烟火气又回来了。数据显示,社会消费已出现较为强劲反弹࿰…...

【MATLAB图像处理实用案例详解(12)】——利用BP神经网络实现图像压缩
目录 一、图像压缩二、BP神经网络实现图像压缩原理三、算法步骤3.1 图像块划分3.2 归一化3.3 建立BP神经网络3.4 保存结果 四、效果演示 一、图像压缩 常见的文件压缩软件如WinZip、WinRAR等采用的是无损压缩,能够完全恢复原文件内容。多媒体信息具有信息量大、冗余…...

java学习之枚举
目录 一、枚举引出 二、分析问题 三、 解决方案-枚举 四、枚举的二种实现方式 五、应用案例 六、小结 一、枚举引出 package enum_;public class Enumeration01 {public static void main(String[] args) {Season spring new Season("春天", "温暖")…...

IPsec中IKE与ISAKMP过程分析(主模式-消息2)
IPsec中IKE与ISAKMP过程分析(主模式-消息1)_搞搞搞高傲的博客-CSDN博客 IPsec协议族中IKE(Internet Key Exchange)是一种基于ISAKMP的协议,它为建立IPSec安全通信隧道提供了一种无痕密钥交换的机制。简单来说ÿ…...

KDZR-10A三相直流电阻测试仪
一、产品概述 直流电阻的测量仪是变压器、互感器、电抗器、电磁操作机构等感性线圈制造中半成品、成品出厂试验、安装、交接试验及电力部门预防性试验的项目,能有效发现感性线圈的选材、焊接、连接部位松动、缺股、断线等制造缺陷和运行后存在的隐患。 为了满足感…...

C语言入门篇——指针篇
目录 1、指针 1.1内存地址 1.2基地址 1.3指针变量 2、指针类型 2.1指针-整数 2.2指针的解引用 3、特殊指针 3.1野指针 3.2空指针 4、指针运算 4.1指针-指针 4.2指针的关系运算 5、指针和数组 6、二级指针 7、指针数组 1、指针 1.1内存地址 内存是电脑上特别重…...

Python小姿势 - Python学习笔记:如何使用Python创建一个简单的计算器
Python学习笔记:如何使用Python创建一个简单的计算器 在本教程中,我们将学习如何使用Python创建一个简单的计算器。我们将学习如何使用Python的内置函数input()和print(),以及如何使用Python的运算符来完成这个项目。 首先,让我们…...

庖丁解牛 - FLAME: Taming Backdoors in Federated Learning
文章目录 论文笔记 - FLAME: Taming Backdoors in Federated Learning1. 基本信息2. 研究动机3. 基本原理3.1 面临挑战分析3.2 FLAME 算法总体概述3.3 FLAME 算法设计思想3.3.1 Dynamic Model Filtering3.3.2 Adaptive Clipping3.3.3 Adaptive Noising4. 结论论文笔记 - FLAME:…...