tcpdump使用教程

news2024/11/25 20:42:42

在这里插入图片描述

一、概述

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的选项介绍完了,东拼西凑、或存疏漏,如有不慎,欢迎指正。如果对你有帮忙,欢迎点赞👍及➕收藏⭐。

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

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

相关文章

CANOE入门到精通——CANOE系列教程记录2

本系列以初学者角度记录学习CANOE,以《CANoe开发从入门到精通》参考学习,CANoe16 demo版就可以进行学习 创建工程 在一个路径中,创建这几个文件夹 创建工程,将工程命名Vehicle_System_CAN.cfg 创建Database dbc文件 在实际开…

SignOff Criteria——OCV applied and results

文章目录 1. O v e r v i e w Overview Overview1.1 w h a t i s o c v what\ is\ ocv what is ocv?1.2 O C V . E f f e c t o n s i g n o f f OCV.\ Effect\ on\ signoff OCV. Effect on signoff1.3 H o w t o r e m o v e t h e e f f e c t s o f O C V Ho…

【hello Linux】可重入函数、volatile和SIGCHLD信号

目录 1. 可重入函数 2. volatile 3. SIGCHLD信号 Linux!🌷 1. 可重入函数 先来谈一下重入函数的概念:重入函数便是在该函数还没有执行完毕便重复进入该函数(一般发生在多线程中); 可重入函数&#xff1a…

C++程序设计——lambda表达式

一、问题引入 在C98中,如果想对一个数据集合中的元素进行排序,可以使用sort()方法,但如果待排序元素为自定义类型,就需要用户自己定义排序时的比较规则。 随着C语法的发展,人们开始觉得其编写比较复杂,每次…

Word2vec原理+实战学习笔记(一)

来源:投稿 作者:阿克西 编辑:学姐 视频链接:https://ai.deepshare.net/detail/p_5ee62f90022ee_zFpnlHXA/6 文章标题: Efficient Estimation of Word Representations in Vector Space 基于向量空间中词表示的有效估计…

【计算机网络】学习笔记:第四章 网络层(七千字详细配图)【王道考研】

基于本人观看学习b站王道计算机网络课程所做的笔记&#xff0c;不做任何获利 仅进行交流分享 特此鸣谢王道考研 若有侵权请联系&#xff0c;立删 如果本篇笔记帮助到了你&#xff0c;还请点赞 关注 支持一下 ♡>&#x16966;<)!! 主页专栏有更多&#xff0c;如有疑问欢迎…

安装chatglm

地址 下载源代码 下载完成后解压 安装cuda 输入nvcc -V查看是否安装cuda 输入nvidia-smi查看支持的最高版本&#xff0c;最高支持12.1 下载cudahttps://developer.nvidia.com/cuda-downloads 双击安装 同意之后点击下一步 选择精简模式即可 等待下载安装包 …

链接sqlite

一.sqlite库函数 1.sqlite3_open()函数 语法&#xff1a;*sqlite3_open(const char *filename, sqlite3 *ppDb) 作用&#xff1a;该例程打开一个指向 SQLite 数据库文件的连接&#xff0c;返回一个用于其他 SQLite 程序的数据库连接对象。 参数1&#xff1a;如果 filename …

如何在自己的Maven工程上搭建Mybatis框架?

编译软件&#xff1a;IntelliJ IDEA 2019.2.4 x64 操作系统&#xff1a;win10 x64 位 家庭版 Maven版本&#xff1a;apache-maven-3.6.3 Mybatis版本&#xff1a;3.5.6 目录 前言 一. 什么是Mybatis框架&#xff1f;1.1 框架是什么&#xff1f;1.2 什么是MyBatis &#xff1f;1…

3.11 C结构体及结构体数组

结构体的意义 问题&#xff1a;学籍管理需要每个学生的下列数据&#xff1a;学号、姓名、性别、年龄、分数&#xff0c;请用C语言程序存储并处理一组学生的学籍。 思考&#xff1a;如果有多个学生&#xff0c;该怎么定义 已学数据类型无法解决。 结构体概述 正式&#xff1a;…

【Sping学习详解】

重新学习Spring很久了&#xff0c;也看了不少的视频&#xff0c;但是没有系统总结&#xff0c;容易忘记&#xff0c;网上寻找相关博客&#xff0c;也没有找到按照路线总结的&#xff0c;只能说不顺我心&#xff0c;所以自己总结一下&#xff01;&#xff01;&#xff01; 从下…

vulnhub靶机dpwwn1

准备工作 下载连接&#xff1a;https://download.vulnhub.com/dpwwn/dpwwn-01.zip 网络环境&#xff1a;DHCP、NAT 下载完后解压&#xff0c;然后用VMware打开dpwwn-01.vmx文件即可导入虚拟机 信息收集 主机发现 端口发现 继续查看端口服务信息 打开网站发现只有Apache默认…

【Spring篇】IOC/DI注解开发

&#x1f353;系列专栏:Spring系列专栏 &#x1f349;个人主页:个人主页 目录 一、IOC/DI注解开发 1.注解开发定义bean 2.纯注解开发模式 1.思路分析 2.实现步骤 3.注解开发bean作用范围与生命周期管理 1.环境准备 2.Bean的作用范围 3.Bean的生命周期 4.注解开发依赖…

行为识别 Activity Recognition

行为识别 行为检测是一个广泛的研究领域&#xff0c;其应用包括安防监控、健康医疗、娱乐等。 课程大纲 导论 图卷积在行为识别中的应用&#xff1a;论文研读&#xff0c;代码解读&#xff0c;实验 Topdown关键点检测中的hrnet&#xff1a;论文研读&#xff0c;代码解读&a…

ETL工具 - Kettle 流程、应用算子介绍

一、Kettle 流程和应用算子 上篇文章对Kettle 转换算子进行了介绍&#xff0c;本篇文章继续对Kettle 的流程和应用算子进行讲解。 下面是上篇文章的地址&#xff1a; ETL工具 - Kettle 转换算子介绍 流程算子主要用来控制数据流程和数据流向&#xff1a; 应用算子则是Kettle给…

ESP32 ESP-Rainmaker 本地点灯控制Demo测试

基于ESP-Rainmaker 本地点灯控制Demo测试 &#x1f33f;ESP-Rainmaker项目地址&#xff1a;https://github.com/espressif/esp-rainmaker/tree/master ✨这个项目早些时候就已经开始测试了&#xff0c;最后卡在了手机APP连接esp32设备端一直无法连接上&#xff0c;也一直没有找…

性能:Intel Xeon(Ice Lake) Platinum 8369B阿里云CPU处理器

阿里云服务器CPU处理器Intel Xeon(Ice Lake) Platinum 8369B&#xff0c;基频2.7 GHz&#xff0c;全核睿频3.5 GHz&#xff0c;计算性能稳定。目前阿里云第七代云服务器ECS计算型c7、ECS通用型g7、内存型r7等规格均采用该款CPU。 Intel Xeon(Ice Lake) Platinum 8369B Intel …

Linux第五章

文章目录 前言一、MySQL5.7版本在CentOS系统安装二、Tomcat安装部署1.安装JDK环境2. 解压并安装Tomcat 三、Nginx安装部署四、RabbitMQ安装部署五、Redis安装部署六、ElasticSearch安装部署七、集群化环境前置准备八、Zookeeper集群安装部署九、Kafka集群安装部署十、大数据集群…

操作系统的进程调度

进程调度概述 一、操作系统的调度时机 1、什么时候进行进程调度&#xff1f; 主动放弃&#xff08;进程正常终止、运行过程中发生异常而终止、进程主动请求阻塞&#xff09; 被动放弃&#xff08;分给进程的时间片用完、有更紧急的事需要处理、有更高优先级的进程进入就绪队列…