【Linux网络】Linux网络抓包工具tcpdump

news2024/11/25 2:26:08

一、tcpdump介绍

tcpdump 是一个Linux的网络抓包工具。它允许用户拦截和显示发送或收到过网络连接到该计算机的TCP/IP和其他数据包。tcpdump 适用于大多数的类Unix系统操作系统(如linux,BSD等)。

二、安装&用法说明

1)安装

$ yum -y install tcpdump

2)用法说明
tcpdump采用命令行方式,它的命令格式为

tcpdump [ -DenNqvX ] [ -c count ] [ -F file ] [ -i interface ] [ -r file ] [ -s snaplen ] [ -w file ] [ expression ]

抓包选项:

  • -c:指定要抓取的包数量。注意,是最终要获取这么多个包。例如,指定"-c 10"将获取10个包,但可能已经处理了100个包,只不过只有10个包是满足条件的包。

  • -i interface:指定tcpdump需要监听的接口。若未指定该选项,将从系统接口列表中搜寻编号最小的已配置好的接口(不包括loopback接口,要抓取loopback接口使用tcpdump -i lo),一旦找到第一个符合条件的接口,搜寻马上结束。可以使用’any’关键字表示所有网络接口。

  • -n:对地址以数字方式显式,否则显式为主机名,也就是说-n选项不做主机名解析。

  • -nn:除了-n的作用外,还把端口显示为数值,否则显示端口服务名。

  • -N:不打印出host的域名部分。例如tcpdump将会打印’nic’而不是’nic.ddn.mil’。

  • -P:指定要抓取的包是流入还是流出的包。可以给定的值为"in"、“out"和"inout”,默认为"inout"。

  • -s len:设置tcpdump的数据包抓取长度为len,如果不设置默认将会是65535字节。对于要抓取的数据包较大时,长度设置不够可能会产生包截断,若出现包截断,输出行中会出现"[|proto]"的标志(proto实际会显示为协议名)。但是抓取len越长,包的处理时间越长,并且会减少tcpdump可缓存的数据包的数量,从而会导致数据包的丢失,所以在能抓取我们想要的包的前提下,抓取长度越小越好。-s0:防止包截断。

输出选项:

  • -e:输出的每行中都将包括数据链路层头部信息。例如源MAC和目标MAC。

  • -q:快速打印输出。即打印很少的协议相关信息,从而输出行都比较简短。

  • -X:输出包的头部数据,会以16进制和ASCII两种方式同时输出。

  • -A :打印数据报文的 ASCII 值

  • -XX:输出包的头部数据,会以16进制和ASCII两种方式同时输出,更详细。

  • -v:当分析和打印的时候,产生详细的输出。

  • -vv:产生比-v更详细的输出。

  • -vvv:产生比-vv更详细的输出。

其他功能性选项:

  • -D:列出可用于抓包的接口。将会列出接口的数值编号和接口名,它们都可以用于"-i"后。

  • -F:从文件中读取抓包的表达式。若使用该选项,则命令行中给定的其他表达式都将失效。

  • -w:将抓包数据输出到文件中而不是标准输出。可以同时配合"-G time"选项使得输出文件每time秒就自动切换到另一个文件。可通过"-r"选项载入这些文件以进行分析和打印。

  • -r:从给定的数据包文件中读取数据。使用"-"表示从标准输入中读取。

三种修饰符:

  • type:指定ID的类型。

可以给定的值有host/net/port/portrange。例如"host foo",“net 128.3”,“port 20”,“portrange 6000-6008”。默认的type为host。

  • dir:指定ID的方向。

可以给定的值包括src/dst/src or dst/src and dst,默认为src or dst。例如,"src foo"表示源主机为foo的数据包,"dst net 128.3"表示目标网络为128.3的数据包,"src or dst port 22"表示源或目的端口为22的数据包。

  • proto:通过给定协议限定匹配的数据包类型。

常用的协议有tcp/udp/arp/ip/ether/icmp等,若未给定协议类型,则匹配所有可能的类型。例如"tcp port 21",“udp portrange 7000-7009”。

三、tcpdump示例

3.1、默认启动,不带参数

$ tcpdump

在这里插入图片描述

默认情况下,直接启动tcpdump将监视第一个网络接口(非lo口)上所有流通的数据包。这样抓取的结果会非常多,滚动非常快。

3.2、tcpdump -D 命令列出可以抓包的网络接口

$ tcpdump -D
[root@localhost ~]# tcpdump -D
1.enp0s3 [Up, Running]
2.enp0s8 [Up, Running]
3.lo [Up, Running, Loopback]
4.any (Pseudo-device that captures on all interfaces) [Up, Running]
5.docker0 [Up]
6.virbr0 [Up]
7.bluetooth-monitor (Bluetooth Linux Monitor) [none]
8.nflog (Linux netfilter log (NFLOG) interface) [none]
9.nfqueue (Linux netfilter queue (NFQUEUE) interface) [none]
10.usbmon0 (Raw USB traffic, all USB buses) [none]
11.usbmon1 (Raw USB traffic, bus number 1)
12.virbr0-nic [none]

3.4、监视指定网络接口的数据包

$ tcpdump -i ens33
[root@localhost ~]# tcpdump -i enp0s3
dropped privs to tcpdump
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp0s3, link-type EN10MB (Ethernet), capture size 262144 bytes

如果不指定网卡,默认tcpdump只会监视第一个网络接口,如ens33。

3.5、对本机的udp 123端口进行监视(123为ntp的服务端口)

$ tcpdump udp port 123

3.6、监视指定网络的数据包,如本机与192.168网段通信的数据包,"-c 10"表示只抓取10个包

$ tcpdump -c 10 net 192.168

3.7、抓取ping包

$ tcpdump -c 5 -nn -i ens33 icmp

图片

如果明确要抓取主机为192.168.182.130对本机的ping,则使用and操作符。

$ tcpdump -c 5 -nn -i ens33 icmp and src 192.168.182.130
[root@localhost ~]# tcpdump -c 5 -nn -i enp0s8 icmp and src 10.1.0.9
dropped privs to tcpdump
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp0s8, link-type EN10MB (Ethernet), capture size 262144 bytes
03:54:38.755221 IP 10.1.0.9 > 10.1.0.8: ICMP echo request, id 3406, seq 1, length 64
03:54:39.806249 IP 10.1.0.9 > 10.1.0.8: ICMP echo request, id 3406, seq 2, length 64
03:54:40.808812 IP 10.1.0.9 > 10.1.0.8: ICMP echo request, id 3406, seq 3, length 64
03:54:41.812041 IP 10.1.0.9 > 10.1.0.8: ICMP echo request, id 3406, seq 4, length 64
03:54:42.814696 IP 10.1.0.9 > 10.1.0.8: ICMP echo request, id 3406, seq 5, length 64
5 packets captured
5 packets received by filter
0 packets dropped by kernel

注意不能直接写icmp src 192.168.182.130,因为icmp协议不支持直接应用host这个type。

3.9、抓取到本机22端口包

$ tcpdump -c 10 -nn -i bond0 tcp dst port 22

4.0、解析包数据

$ tcpdump -c 2 -q -XX -vvv -nn -i bond0 tcp dst port 22

图片

4.1、参数只抓取和特定主机相关的数据包

$ tcpdump -i any -c5 -nn host 192.168.182.152
$ tcpdump -i any -c5 -nn host 192.168.182.130

4.2、保存抓包数据

tcpdump 提供了保存抓包数据的功能以便后续分析数据包,也可以利用wireshark等图形化工具进行分析。

1)使用 -w 选项来保存数据包而不是在屏幕上显示出抓取的数据包

$ tcpdump -i any -c10 -nn -w webserver.pcap port 22

该命令将抓取的数据包保存到文件 webserver.pcap。后缀名 pcap 表示文件是抓取的数据包格式。

2)tcpdump 将数据包保存在二进制文件中,所以不能简单的用文本编辑器去打开它。使用 -r 选项参数来阅读该文件中的报文内容

$ tcpdump -nn -r webserver.pcap

【温馨提示】一般tcpdump抓的网络包会使用wireshark图形化工具来分析,使用wireshark分析网络包更加清晰方便

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

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

相关文章

【知网检索征稿】第九届社会科学与经济发展国际学术会议 (ICSSED 2024)

第九届社会科学与经济发展国际学术会议 (ICSSED 2024) 2024 9th International Conference on Social Sciences and Economic Development 第九届社会科学与经济发展国际学术会议(ICSSED 2024)定于2024年3月22-24日在中国北京隆重举行。会议主要围绕社会科学与经济发展等研究…

Everything结合内网穿透搭建在线资料库,一秒实现随时随地访问

Everythingcpolar搭建在线资料库,实现随时随地访问 文章目录 Everythingcpolar搭建在线资料库,实现随时随地访问前言1.软件安装完成后,打开Everything2.登录cpolar官网 设置空白数据隧道3.将空白数据隧道与本地Everything软件结合起来总结 前…

(免费领源码)Java#MYSQL在线学习平台09650-计算机毕业设计项目选题推荐

目 录 摘要 1 绪论 1.1 选题背景及意义 1.2国内外现状分析 1.3论文结构与章节安排 2 在线学习平台系统分析 2.1 可行性分析 2.2 系统业务流程分析 2.3 系统功能分析 2.3.1 功能性分析 2.3.2 非功能性分析 2.4 系统用例分析 2.5本章小结 3 在线学习平台总体设计 …

nginx 常用优化配置项教程

本文目录 跨域配置 动静分离 反向代理-负载均衡 配置SLL证书 资源压缩 缓存机制 IP黑白名单 防盗链 大文件传输优化 跨域问题 产生原因 产生跨域问题的主要原因就在于 「同源策略」 ,为了保证用户信息安全,防止恶意网站窃取数据,…

每日一题 2103. 环和杆 (简单)

简单题,直接统计就行 class Solution:def countPoints(self, rings: str) -> int:n len(rings) // 2cnt [[0, 0, 0] for _ in range(10)]for i in range(0, 2*n, 2):if rings[i] "R":cnt[int(rings[i 1])][0] 1if rings[i] "G":cnt[i…

阿里云多款ECS产品全面升级 性能最多提升40%

“阿里云始终围绕‘稳定、安全、性能、成本、弹性’的目标不断创新,为客户创造业务价值。”10月31日,杭州云栖大会上,阿里云弹性计算计算产品线负责人张献涛表示,通过持续的产品和技术创新,阿里云发布了HPC优化实例等多…

conda命令克隆(复制)环境方法及问题解决

背景:与同事进行工作交接,在服务器上想直接拷贝他的环境过来,直接复制anaconda3/envs里的环境包过来后续安装包的时候由于路径是原来的路径会安装到对方环境里,因此使用conda命令来进行环境克隆。 (Linux/服务器中&am…

【广州华锐互动】有机化合物结构3D虚拟展示帮助学生更好地理解和掌握复杂化学知识

随着科技的发展,我们的学习方式正在发生深刻的变化。其中,有机化合物结构3D虚拟展示作为一种新兴的教学方式,正在逐渐被广泛接受和应用。这种新型的展示方式对于提高学生的学习效率,增强学习体验,以及推动化学教育的发…

十六章反射与注解总结

16.1 反射 反射(Reflection)是指在运行时获取类的信息,并可以动态调用类的方法、访问或修改类的属性,以及构造对象的能力。 Java的反射提供了一套API,允许你在运行时检查类的结构、调用类的方法、获取和设置类的属性&…

curl(一)基础

一 基础入门 ① 本文讲解curl的版本 curl支持的协议 国密curl ② 升级curl 后续: 注意新版本的新特性备注: 升级的必要性 yum 升级 curl 源码编译安装curl ③ curl排错参数 1、-v 或 --verbose --> 重点 2、--trace 和 --trace-ascii --…

小红书薯多功能引流脚本,精准引流工具,内置私信点赞关注评论回复各项功能【引流软件+引流教程】

软件介绍: 多个高级功能精准引流 精准留痕引流,功能非常多 设备需求: 适用于安卓7.0版本,鸿蒙,模拟器均可使用 文章分享者:Linxiaoyu2022 文章的来源:vipwz.blog.csdn.net 有任何互联网问…

Java作业二

一、使用方法编写求圆面积和周长的程序,运行时提示输入圆半径,然后输出计算结果。运行效果如下图所示: import java.util.Scanner;public class Test {public static void main(String[] args) {Scanner input new Scanner(System.in);Syste…

安卓抓包之小黄鸟

下载安装 下载地址: https://download.csdn.net/download/yijianxiangde100/88496463 安装apk 即可。 证书配置:

SQL INNER JOIN 关键字(内部连接)

SQL INNER JOIN 关键字(内部连接) 内部链接INNER JOIN关键字选择两个表中具有匹配值的记录。 SQL INNER JOIN 语法 SELECT column_name(s) FROM table1 INNER JOIN table2 ON table1.column_name table2.column_name; 注释:INNER JOIN 与 …

NEFU数字图像处理(4)图像几何变换

一、图像几何变换基础 1.1概述 定义: 使原始图像能够按照需要,产生大小、形状、位置等方面的几何变化 本质特征: 图像几何变换不是改变图像的像素值,而是改变像素所在的位置。 1.2相关概念 二维图像几何变换可通过矩阵线性变换来…

中心线提取的全卷积网络【IPMI 2019】

论文地址:Excellent-Paper-For-Daily-Reading/medicine at main 类别:医学 时间:2023/11/02 摘要 论文提出了一种将端到端可训练多任务全卷积网络(FCN)与最小路径提取器相结合的中心线提取框架。FCN同时计算中心线距离图和检测分支端点。…

深度学习之基于YoloV5的道路地面缺陷检测系统(UI界面)

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、道路地面缺陷检测系统四. 总结 一项目简介 基于YoloV5的道路地面缺陷检测系统利用深度学习中的目标检测算法,特别是YoloV5算法&am…

线性代数 第六章 二次型

一、矩阵表示 称为二次型的秩。只含有变量的平方项,所有混合项系数全是零,称为标准形;平方项的系数为1、-1或0,称为规范形。 二次型的标准形不唯一,可以用不用的坐标变换化二次型为标准形;二次型的规范形唯…

零代码编程:用ChatGPT批量删除掉对话音频文件的片头

一个文件夹里面有很多个mp3音频文件, 但是开头的片头太长了:40秒 怎么用ChatGPT批量去掉这些片头呢? 在ChatGPT中输入提示词: 你是一个Python编程专家,要完成一个批量删除掉对话音频文件开头的任务 ,具体…

能源化工过程-故障诊断数据集初探-田纳西-伊斯曼过程数据集

1. 田纳西-伊斯曼过程(TE)数据集简介 整个TE数据集由训练集和测试集构成,TE集中的数据由22次不同的仿真运行数据构成,TE集中每个样本都有52个观测变量。d00.dat至d21.dat为训练集样本,d00_te.dat至d21_te.dat为测试集样本。d00.dat和d00_te.dat为正常工况下的样本。d00.d…