Linux抓包工具----tcpdump

news2024/11/24 15:50:07

这是一个目录

  • 一、什么是tcpdump
  • 二、为什么要用tcpdump
  • 三、tcpdump在哪里?
  • 四、怎么用tcpdump?
    • 4.1 命令格式
    • 4.2 常用选项
      • 4.2.1 对网络接口抓包 -i
      • 4.2.2 指定收取数据包的数量 -c
      • 4.2.3 不把ip转换成域名,直接显示ip -n
      • 4.2.4 显示ip和端口号 -nn
      • 4.2.5 在每行的输出中,不显示时间 -t
      • 4.2.6 产生详细的输出 -v
      • 4.2.7 指定数据包的大小 -s
      • 4.2.8 显示所有可用的网络接口 -D
      • 4.2.9 将捕获信息保存到文件中,且不分析核打印在屏幕上 -w
    • 4.3 过滤规则
      • 4.3.1 基于ip地址/网段过滤
      • 4.3.2 基于端口过滤
      • 4.3.3 基于协议
  • 五、实例

一、什么是tcpdump

tcpdump是一个抓包工具,用于实时捕获和分析网络流量。它通常在Unix和类Unix操作系统上可用,包括Linux。

tcpdump能够捕获流经网络接口的数据包,并显示或保存它们以供进一步分析。它提供有关每个数据包的详细信息,包括源IP地址、目标IP地址、使用的协议、数据包时间戳、数据包大小等等。

tcpdump通过使用各种过滤器,以捕获特定类型的流量,例如仅捕获特定IP地址、端口或协议的数据包。

二、为什么要用tcpdump

  1. 调试和故障排查:通过捕获和查看实时的网络数据包流量,来观察和分析数据包,找到故障所在;

  2. 网络流量分析:通过捕获网络数据包,分析数据包的详细信息,来理解网络通信模式、检测潜在安全问题或优化网络性能。

  3. 安全监测和入侵检测:捕获和分析数据包,来检查网络中的异常流量、恶意软件传播、潜在的攻击尝试等;

  4. 协议分析和开发:Tcpdump提供了深入了解网络协议工作原理和通信模式的机会。

三、tcpdump在哪里?

yum install -y tcpdump #安装tcpdump,或者更新版本

在这里插入图片描述

rpm -qc tcpdump #查看详细信息

在这里插入图片描述

which tcpdump 

在这里插入图片描述

四、怎么用tcpdump?

4.1 命令格式

#命令格式
tcpdump    option   proto     dir         type
           选项      协议      数据的方向    抓取的数据类型

##proto(协议)##    
1. tcp  udp   icmp
2. ip   ipv6
3. arp


##dir(方向)##
1. src
2. dst
3. src and   dst

#type(类型)##
1. host  主机   
2. net  网段
3. port  端口     
4. port range  端口范围

tcpdump [-adeflnNOpqStvx][-c<数据包数目>][-dd][-ddd][-F<表达文件>][-i<网络界面>][-r<数据包文件>][-s<数据包大小>][-tt][-T<数据包类型>][-vv][-w<数据包文件>][输出数据栏位]

#选项(option)#
-a 尝试将网络和广播地址转换成名称。
-c<数据包数目> 收到指定的数据包数目后,就停止进行倾倒操作。
-d 把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出。
-dd 把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出。
-ddd 把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出。
-e 在每列倾倒资料上显示连接层级的文件头。
-f 用数字显示网际网络地址。
-F<表达文件> 指定内含表达方式的文件。
-i<网络接口> 使用指定的网络截面送出数据包。
-l 使用标准输出列的缓冲区。
-n 不把主机的网络地址转换成名字。
-N 不列出域名。
-O 不将数据包编码最佳化。
-p 不让网络界面进入混杂模式。
-q 快速输出,仅列出少数的传输协议信息。
-r<数据包文件> 从指定的文件读取数据包数据。
-s<数据包大小> 设置每个数据包的大小。
-S 用绝对而非相对数值列出TCP关联数。
-t 在每列倾倒资料上不显示时间戳记。
-tt 在每列倾倒资料上显示未经格式化的时间戳记。
-T<数据包类型> 强制将表达方式所指定的数据包转译成设置的数据包类型。
-v 详细显示指令执行过程。
-vv 更详细显示指令执行过程。
-x 用十六进制字码列出数据包资料。
-w<数据包文件> 把数据包数据写入指定的文件。

4.2 常用选项

4.2.1 对网络接口抓包 -i

在这里插入图片描述

第一部分

12:59:42.256994
#数据包时间 时:分:秒.毫秒

第二部分

IP 192.168.2.1.58879 > byyb.ssh
#详解#
IP 192.168.2.1.58879
#发送方IP地址.端口号  ip地址:192.168.2.1     端口号:47496     
>
# >表示数据流向
byyb.ssh
#主机名.协议    主机名:byyd     协议:ssh

第三部分

 Flags [P.], seq 37:73, ack 417040, win 3817, length 36

#详解#
Flags [P.]: TCP 数据包的标志字段。"[P.]" 表示该数据包携带了数据(Push 标志),并且是由发送方发起的。

seq 37:73: 该数据包的序列号范围。这个范围从序列号 37 开始,到序列号 73 结束。

ack 417040: 确认号(ACK)。表示发送方期望接收到的下一个字节的序列号。

win 3817: 窗口大小(Window Size),表示接收方的可用缓冲区大小。

length 36: 该数据包的长度,单位为字节。

4.2.2 指定收取数据包的数量 -c

tcpdump -i ens33 -c 2 #只抓两个数据包

在这里插入图片描述

4.2.3 不把ip转换成域名,直接显示ip -n

tcpdump -i ens33 -n #直接显示ip地址

在这里插入图片描述

4.2.4 显示ip和端口号 -nn

tcpdump -i ens33 -nn

在这里插入图片描述

4.2.5 在每行的输出中,不显示时间 -t

tcpdump -i ens33 -t

在这里插入图片描述

tcpdump -i ens33 -tt #显示一个时间戳
tcpdump -i ens33 -ttt #每行之间的时间间隔
tcpdump -i ens33 -tttt #显示更详细的时间

在这里插入图片描述

4.2.6 产生详细的输出 -v

tcpdump -i ens33 -v
#v越多,显示的信息越详细
tcpdump -i ens33 -vv
tcpdump -i ens33 -vvv

在这里插入图片描述

4.2.7 指定数据包的大小 -s

tcpdump -i ens33  -s 50 #指定数据包的大小为50

在这里插入图片描述

4.2.8 显示所有可用的网络接口 -D

tcpdump -D

在这里插入图片描述

4.2.9 将捕获信息保存到文件中,且不分析核打印在屏幕上 -w

tcpdump -i any -w test.cap    
#将文件后缀改成cap 或者pcap形式可以直接用wireshark打开

4.3 过滤规则

4.3.1 基于ip地址/网段过滤

host选项

主机2  ping   主机1 

[root@localhost data]#tcpdump -i ens33  host 192.168.91.102
#只过滤 和 192.168.91.100有关的流量

在这里插入图片描述

dst 选项 目的地址
src 选项 源地址

tcpdump -i ens33  dst 192.168.2.102 #过滤出目的地址为192.168.2.102的数据流
tcpdump -i ens33  src 192.168.2.100#过滤出源地址为192.168.2.100的数据流

net 选项 ----过滤网段

tcpdump -i ens33 net 192.168.2.0/24  #过滤192.168.2.0网段的

##控制方向##
tcpdump -i ens33  src net 192.168.2.0/24 #目的网段

tcpdump -i ens33  dst net 192.168.2.0/24#源网段

在这里插入图片描述

4.3.2 基于端口过滤

port 端口号

单端口

tcpdump -i ens33 port 80 #过滤80端口的数据包

or选项 ,用于多个不连续端口
port x or port y ---- 端口x 或 端口y

tcpdump -i ens33  src port 80 or port 22 #过滤出源地址的端口为80或22
tcpdump -i ens33  dst port 80 or port 22 #过滤出目的地址端口为80或22的

portrange 选项 ,用于指定端口范围

portrange x-y---- 端口范围 x到 y之间

#tcpdump -i ens33 portrange 80-8080
端口范围 808080 之间

#可结合src dst
tcpdump -i ens33  src portrange 80-8080  #源地址的端口范围 80-8080

tcpdump -i ens33  dst portrange 80-8080 #目的地址的端口范围为80-8080

在这里插入图片描述

4.3.3 基于协议

协议种类:ip arp icmp tcp udp

应用层协议不可以直接抓取

ping  www.baidu.com

tcpdump -i ens33 icmp #抓取ens33接口的数据包,过滤出基于icmp协议的包

在这里插入图片描述

五、实例

  1. 如何抓取源地址为192.168.2.100,目的地址192.168.2.102的数据流?

思路:抓取范围地址,用and链接

tcpdump -i ens33 src 192.168.2.100 and  dst 192.168.2.102
#and 很关键

在这里插入图片描述

  1. 怎么使用tcpdump查看网卡?
tcpdump -D

在这里插入图片描述

  1. 监听来自主机10.0.0.100在端口22上的TCP数据包
tcpdump tcp port 22 and src host 10.0.0.100
  1. 10.0.0.101和除了10.0.0.1之外的主机之间的通信
tcpdump ip host 10.0.0.101 and ! 10.0.0.1
  1. 综合条件过滤并保存
tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24  -w ./target.cap
#tcpdump 将在指定的网络接口上开始捕获数据包,并根据给定的过滤器条件进行过滤。符合过滤条件的数据包将被保存到 target.cap 文件中
(1)tcp: ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型
(2)-i eth1 : 只抓经过接口eth1的包
(3)-t : 不显示时间戳
(4)-s 0 : 抓取数据包时默认抓取长度为68字节。加上-S 0 后可以抓到完整的数据包
(5)-c 100 : 只抓取100个数据包
(6)dst port ! 22 : 不抓取目标端口是22的数据包
(7)src net 192.168.1.0/24 : 数据包的源网络地址为192.168.1.0/24
(8)-w ./target.cap : 保存成cap文件,方便用wireshark分析

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

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

相关文章

权限校验—接口检验

一、背景介绍 最近项目中要实现根据不同用户去划分不同的角色&#xff0c;而不同角色具备调用不同接口的权限这个功能。用户在调用接口时需要校验用户是否具有权限访问接口&#xff0c;防止外界恶意调用随意篡改 二、思路&方案 为什么要进行接口鉴权&#xff1f; 接口鉴权…

几种常见的光纤接头有哪些?

名称: 光纤接头 光纤接头(optical fiber splice),将两根光纤永久地或可分离开地联结在一起,并有保护部件的接续部分,光纤接头是光纤的末端装置问题描述: 几种常见的光纤接头有哪些? 回答: 1.常见的光纤接头 LC 、SC 、FC 、ST、 MPO LC (Lucent connector) 小…

MySQL 事务原理:锁机制

文章目录 一、锁类型1.1 全局锁1.2 表级锁1.2.1 表锁1.2.2 元数据锁1.2.3 意向锁1.2.4 自增锁 1.3 行级锁1.3.1 记录锁1.3.2 间隙锁1.3.3 临键锁1.3.4 插入意向锁 1.4 锁的兼容性 二、锁的CUDP2.1 查询2.2 删除、更新2.3 插入 三、锁的对象四、并发死锁4.1 相反加锁顺序导致死锁…

监控Kafka的关键指标

Kafka 架构 上面绿色部分 PRODUCER&#xff08;生产者&#xff09;和下面紫色部分 CONSUMER&#xff08;消费者&#xff09;是业务程序&#xff0c;通常由研发人员埋点解决监控问题&#xff0c;如果是 Java 客户端也会暴露 JMX 指标。组件运维监控层面着重关注蓝色部分的 BROKE…

Redis 高频数据类型使用详解

目录 一、前言 二、Redis常用数据类型 2.1 常见的数据类型 三、String 类型 3.1 String 类型简介 3.2 String常用操作命令 3.2.1 String 操作命令实践 3.3 常用业务场景 3.3.1 session共享 3.3.2 登录失败计数器 3.3.3 限流 3.3.4 多线程安全控制 四、Hash类型 4…

【C++笔记】C++启航之为C语言填坑的语法

【C笔记】C启航之为C语言填坑的语法 一、命名空间1、为什么要引入命名空间&#xff1f;2、命名空间的基本用法3、展开命名空间4、命名空间的套娃5、命名空间的自动合并 二、缺省参数1、为什么要引入缺省参数&#xff1f;2、缺省参数的基本用法3、缺省的参数必须从右向左4、缺省…

为什么我们需要加快推进数字孪生技术?

数字孪生技术以其强大的潜力和应用前景&#xff0c;引起了各行各业的广泛关注和热切期待。那么&#xff0c;究竟为什么要加快推进数字孪生技术呢&#xff1f; 首先&#xff0c;数字孪生技术能够实现现实世界与虚拟世界的无缝连接&#xff0c;为各行业带来了前所未有的创新机遇…

Vue电商项目--VUE插件的使用及原理

图片懒加载 图片懒加载&#xff0c;就是图片延迟加载。只加载页面可视区域上的图片&#xff0c;等滚动到页面下面时&#xff0c;再加载对应视口上的图片 而在vue中有一个插件 vue-lazyload - npm (npmjs.com) npm i vue-lazyload 去使用他&#xff0c;这里我们引入了一张图片…

(九)人工智能应用--深度学习原理与实战--前馈神经网络实现MNST手写数字识别

目标: 识别手写体的数字,如图所示: 学习内容: 1、掌握MNIST数据集的加载和查看方法 2、熟练掌握Keras建立前馈神经网络的步骤【重点】 3、掌握模型的编译及拟合方法的使用,理解参数含义【重点】 4、掌握模型的评估方法 5、掌握模型的预测方法 6、掌握自定义图片的处理与预测 …

十分钟掌握使用 SolidJS 构建全栈 CRUD 应用程序

我们可以开始讨论 SolidJS&#xff0c;说它比React更好&#xff0c;但没有必要做这种比较。SolidJS只是众多前端框架之一&#xff0c;旨在在Web上快速创建数据驱动。那么&#xff0c;我们为什么要突出这个新孩子呢&#xff1f; 首先&#xff0c;我们不能忽视SolidJS不使用虚拟…

嗅探抓包工具,解决线上偶现问题来不及抓包的情况阅读目录

目录 背景 实现思路 具体实现 Python 抓包 总结 资料获取方法 背景 测试群里经常看到客户端的同学反馈发现了偶现Bug&#xff0c;但是来不及抓包&#xff0c;最后不了了之&#xff0c;最近出现得比较频繁&#xff0c;所以写个小脚本解决这个问题。 实现思路 之前写过一个…

免费实用的日记应用:Day One for Mac中文版

Day One for Mac是一款运行在Mac平台上的日记软件&#xff0c;你可以使用Day One for mac通过快速菜单栏条目、提醒系统和鼓舞人心的信息来编写更多内容&#xff0c;day one mac版还支持Dropbox同步功能&#xff0c;想要day one mac中文免费版的朋友赶紧来试试吧&#xff01; …

IPC之一:使用匿名管道进行父子进程间通信的例子

IPC 是 Linux 编程中一个重要的概念&#xff0c;IPC 有多种方式&#xff0c;本文主要介绍匿名管道(又称管道、半双工管道)&#xff0c;尽管很多人在编程中使用过管道&#xff0c;但一些特殊的用法还是鲜有文章涉及&#xff0c;本文给出了多个具体的实例&#xff0c;每个实例均附…

Leetcode.1316 不同的循环子字符串

题目链接 Leetcode.1316 不同的循环子字符串 rating : 1837 题目描述 给你一个字符串 text &#xff0c;请你返回满足下述条件的 不同 非空子字符串的数目&#xff1a; 可以写成某个字符串与其自身相连接的形式&#xff08;即&#xff0c;可以写为 a a&#xff0c;其中 a 是…

服务器感染了LockBit 3.0勒索病毒,如何确保数据文件完整恢复?

引言&#xff1a; 在数字时代&#xff0c;恶意软件的威胁变得愈发严峻&#xff0c;而LockBit 3.0勒索病毒则是其中的顶尖恶势力之一。其先进的加密技术和毫不留情的勒索手段&#xff0c;使无数人蒙受损失。然而&#xff0c;我们不应束手无策。本文91数据恢复将带您深入了解Loc…

AndroidStudio通过Profiler查找内存泄漏

Fragment内存泄漏&#xff1a; AndroidStudio --> Profiler --> 勾选 show nearest Gc root only&#xff0c;然后查看非weakreference的引用&#xff08;weakreference是不会导致内存泄漏的&#xff09;&#xff0c;往下就能找自己项目里写的代码&#xff0c;一般此处…

旷视科技AIoT软硬一体化走向深处,生态和大模型成为“两翼”?

齐奏AI交响曲的当下&#xff0c;赛道玩家各自精彩。其中&#xff0c;被称作AI四小龙的商汤科技、云从科技、依图科技、旷视科技已成长为业内标杆&#xff0c;并积极追赶新浪潮。无论是涌向二级市场还是布局最新风口大模型&#xff0c;AI四小龙谁都不甘其后。 以深耕AIoT软硬一…

ASCP系列电气防火限流式保护器在养老院的应用-安科瑞黄安南

摘要&#xff1a;2020年&#xff0c;我国65岁及以上老年人口数量为1.91亿&#xff0c;老龄化率达到13.5%。总体来看&#xff0c;大部分省市的养老机构数量还较少。养老设施的建设与民生息息相关&#xff0c;养老院的电气安全也非常重要。如果发生电气火灾&#xff0c;对于行动不…

【多模态】24、开放词汇学习到底是什么?

文章目录 一、什么是开放词汇学习二、开放词汇学习的测评和数据集三、开放词汇目标检测3.1 Region-Aware Training3.2 Pseudo-Labeling3.3 Knowledge Distillation-Based3.4 Transfer Learning-Based3.5 总结3.6 效果 参考论文&#xff1a;A Survey on Open-Vocabulary Detecti…

Vue3 事件处理简单应用

去官网学习→事件处理 | Vue.js 运行示例&#xff1a; 代码&#xff1a;HelloWorld.vue <template><div class"hello"><h1>Vue 事件处理</h1><button v-on:click"numb 1">点击加1-----{{ numb }}</button><br/&…