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

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}或以太网广播” 的缩写。
–print打印解析的数据包输出,即使原始数据包保存到带有-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图表大家应该用的都比较多,基础的用法就不细说了&#xff…...

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> 检查以上的声明和权限&#xff0c; 如果还是不行 说明是 Android 11引入了*包可见性*’ …...

【linux-进程2】进程控制

&#x1f308;环境变量 &#x1f344;初识 系统带的命令可以直接运行&#xff08;ls ll命令等&#xff09;&#xff0c;但是我们自己写的命令必须要带上路径才能运行&#xff08;./myproc&#xff09;&#xff0c;这是什么原因导致的&#xff1f;如果我们也想自己写的命令直接…...

【五一创作】多域名环境和Office 365混合部署方案

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

Vue:路由route

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

Windows系统被faust勒索病毒攻击勒索病毒解密服务器与数据库解密恢复

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

Java面试题总结 | Java面试题总结7- Redis模块(持续更新)

Redis 文章目录 Redisredis的线程模型Redis的Mysql的区别Redis和传统的关系型数据库有什么不同&#xff1f;Redis常见的数据结构zset数据结构Redis中rehash过程redis为什么不考虑线程安全的问题呢Redis单线程为什么还能这么快&#xff1f;为什么Redis是单线程的&#xff1f;red…...

虹科案例 | 如何通过智能、非接触式测量解决方案,提高起重机的安全和效率?

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

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展&#xff1a;显示创建时间8. 功能扩展&#xff1a;记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学&#xff08;Elliptic Curve Cryptography&#xff09;是基于椭圆曲线数学理论的公钥密码系统&#xff0c;由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA&#xff0c;ECC在相同安全强度下密钥更短&#xff08;256位ECC ≈ 3072位RSA…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

1688商品列表API与其他数据源的对接思路

将1688商品列表API与其他数据源对接时&#xff0c;需结合业务场景设计数据流转链路&#xff0c;重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点&#xff1a; 一、核心对接场景与目标 商品数据同步 场景&#xff1a;将1688商品信息…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

均衡后的SNRSINR

本文主要摘自参考文献中的前两篇&#xff0c;相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程&#xff0c;其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt​ 根发送天线&#xff0c; n r n_r nr​ 根接收天线的 MIMO 系…...

React---day11

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

mac:大模型系列测试

0 MAC 前几天经过学生优惠以及国补17K入手了mac studio,然后这两天亲自测试其模型行运用能力如何&#xff0c;是否支持微调、推理速度等能力。下面进入正文。 1 mac 与 unsloth 按照下面的进行安装以及测试&#xff0c;是可以跑通文章里面的代码。训练速度也是很快的。 注意…...

Linux中《基础IO》详细介绍

目录 理解"文件"狭义理解广义理解文件操作的归类认知系统角度文件类别 回顾C文件接口打开文件写文件读文件稍作修改&#xff0c;实现简单cat命令 输出信息到显示器&#xff0c;你有哪些方法stdin & stdout & stderr打开文件的方式 系统⽂件I/O⼀种传递标志位…...