Tcpdump简直就是命令行抓包中的侦探

李肖遥 2024-10-15 22:12
    关注、星标公众号,直达精彩内容

来源 | wljsghq


Tcpdump是一款功能强大的命令行包分析工具,可用于捕获和显示计算机网络中传输或接收的数据包。它由Lawrence Berkeley National Laboratory开发,并作为一个开源项目发布。Tcpdump允许用户监控和分析网络通信,从而帮助网络管理员和安全专业人员进行网络故障排除和分析。无论是日常的网络维护,还是网络安全事件的调查,Tcpdump都可以提供强大的支持。

安装Tcpdump

Tcpdump通常预装在许多类Unix系统中,如Linux和macOS。然而,如果你的系统中没有预装Tcpdump,可以使用包管理器来安装它。以下是一些常见系统的安装方法:

  • 在Debian系系统(如Ubuntu)上:
sudo apt-get update
sudo apt-get install tcpdump
  • 在Red Hat系系统(如CentOS、Fedora)上:
sudo yum install tcpdump
  • 在macOS上(使用Homebrew):
brew install tcpdump

安装完成后,可以通过以下命令检查Tcpdump是否成功安装:

tcpdump --version

如果安装成功,该命令将显示Tcpdump的版本信息。

Tcpdump命令语法

Tcpdump命令的基本语法如下:

tcpdump [选项] [表达式]

选项(options)用于修改Tcpdump的行为,例如指定捕获接口、输出格式等。表达式(expression)用于过滤数据包,只捕获与表达式匹配的数据包。

常用选项包括:

  • -i:指定要监听的网络接口。例如,-i eth0 表示监听eth0接口。
  • -c:指定要捕获的数据包数量。例如,-c 10 表示捕获10个数据包。
  • -w:将捕获的数据包写入文件。例如,-w capture.pcap 表示将数据包保存到capture.pcap文件中。
  • -r:从文件读取数据包。例如,-r capture.pcap 表示从capture.pcap文件中读取数据包。

示例命令:

sudo tcpdump -i eno2

这条命令将捕获eno2接口上的所有数据包,并在终端显示。

Tcpdump命令基本用法

检查可用网络接口

在使用Tcpdump之前,首先需要知道系统中有哪些网络接口可以用于捕获数据包。使用-D选项可以列出系统中的所有网络接口:

sudo tcpdump -D

或者使用--list-interfaces选项:

sudo tcpdump --list-interfaces

捕获特定接口的数据包

默认情况下,Tcpdump将捕获所有接口上的数据包。为了捕获特定接口的数据包,可以使用-i选项指定接口名称。例如,要捕获eth0接口上的数据包,可以使用以下命令:

sudo tcpdump -i eth0

执行此命令后,Tcpdump将开始捕获eth0接口上的数据包并显示在终端上。

预设捕获数据包数量

在某些情况下,您可能希望捕获一定数量的数据包然后自动停止。使用-c选项可以预设捕获的数据包数量。例如,要捕获4个数据包,可以使用以下命令:

sudo tcpdump -c 4 -i eth0

执行此命令后,Tcpdump将捕获4个数据包,然后自动停止。

获取详细输出

在进行网络分析时,详细的输出信息有助于理解数据包的具体内容。使用-v选项可以获取详细输出。例如:

sudo tcpdump -c 6 -v -i eth0

使用-vv-vvv选项可以进一步增加详细级别:

sudo tcpdump -vv -i eth0
sudo tcpdump -vvv -i eth0

详细输出将显示更多的协议层信息和数据包内容。

以ASCII格式打印捕获的数据

有时,您可能希望以ASCII格式查看数据包的内容,尤其是在分析文本协议(如HTTP)时。使用-A选项可以以ASCII格式打印数据包内容:

sudo tcpdump -A -i eth0

使用-XX选项可以同时以ASCII和HEX格式打印数据包内容:

sudo tcpdump -XX -i eth0

这有助于深入分析数据包的具体内容和结构。

Tcpdump 高级用法

捕获特定源IP的数据包

在进行网络分析时,有时需要捕获来自特定源IP的数据包。使用src选项可以指定源IP地址。例如,要捕获源IP为192.168.56.11的数据包,可以使用以下命令:

sudo tcpdump -i eth1 -c 5 src 192.168.56.11

这条命令将在eth1接口上捕获源IP为192.168.56.11的前5个数据包。

捕获发往特定目标IP的数据包

类似地,使用dst选项可以指定目标IP地址。例如,要捕获发往目标IP为192.168.56.11的数据包,可以使用以下命令:

sudo tcpdump -i eth1 -c 5 dst 192.168.56.11

这条命令将在eth1接口上捕获发往目标IP为192.168.56.11的前5个数据包。

使用过滤选项

过滤数据包是Tcpdump的一项重要功能,可以根据特定条件捕获特定的数据包,从而减少不必要的流量,使分析更加简单高效。Tcpdump支持多种过滤条件,包括端口、协议、主机等。

根据端口号过滤

要捕获特定端口的数据包,可以使用port选项。例如,要捕获端口22(SSH)的数据包,可以使用以下命令:

sudo tcpdump -i eth0 port 22

这条命令将捕获eth0接口上端口22的所有数据包。

根据协议过滤

要根据协议过滤数据包,可以使用proto选项。例如,要捕获TCP协议的数据包,可以使用以下命令:

sudo tcpdump -i eth0 proto tcp

也可以使用协议号进行过滤,TCP协议的协议号为6,因此以下命令等效于上面的命令:

sudo tcpdump -i eth0 proto 6

根据主机过滤

要捕获来自或发往特定主机的数据包,可以使用host选项。例如,要捕获IP地址为192.168.56.10的主机的数据包,可以使用以下命令:

sudo tcpdump -i eth0 host 192.168.56.10

这条命令将捕获eth0接口上IP地址为192.168.56.10的所有数据包,包括该主机发出的和接收的数据包。

组合多个过滤规则

Tcpdump支持组合多个过滤规则,从而实现更复杂的过滤条件。例如,要捕获来自特定主机且端口为80或443(HTTP和HTTPS)的数据包,可以使用以下命令:

sudo tcpdump -i eth1 -c 50 "host 192.168.56.11 and (port 443 or port 80)"

这条命令将在eth1接口上捕获IP地址为192.168.56.11且端口为443或80的前50个数据包。

保存捕获的数据

在进行长时间的网络监控或需要后续分析时,将捕获的数据保存到文件是非常有用的。使用-w选项可以将捕获的数据包写入文件。例如,要将捕获的数据包保存到文件my_capture.pcap,可以使用以下命令:

sudo tcpdump -i eth0 -c 10 -w my_capture.pcap

这条命令将在eth0接口上捕获10个数据包,并将它们保存到文件my_capture.pcap

读取保存的数据

保存的数据包可以使用Tcpdump或其他分析工具(如Wireshark)进行后续分析。使用-r选项可以从文件中读取数据包。例如,要读取文件my_capture.pcap中的数据包,可以使用以下命令:

tcpdump -r my_capture.pcap

这条命令将读取并显示文件my_capture.pcap中的数据包内容。

实战

分析HTTP流量

HTTP流量分析可以帮助识别潜在的网络问题和安全威胁。以下命令将捕获HTTP流量并保存到文件http_traffic.pcap中:

sudo tcpdump -i eth0 -c 100 -w http_traffic.pcap port 80

然后可以使用Wireshark打开http_traffic.pcap文件进行详细分析。

分析DNS查询

捕获DNS查询可以帮助识别DNS问题。以下命令将捕获DNS查询并保存到文件dns_queries.pcap中:

sudo tcpdump -i eth0 -c 50 -w dns_queries.pcap port 53

同样,可以使用Wireshark或Tcpdump读取并分析该文件。

检测网络攻击

Tcpdump可以用于检测各种网络攻击,如DDoS攻击、ARP欺骗等。例如,以下命令将捕获来自IP地址192.168.1.100的大量数据包,以检测潜在的DDoS攻击:

sudo tcpdump -i eth0 -c 1000 -w ddos_attack.pcap src 192.168.1.100

捕获的数据包可以通过后续分析确定是否存在攻击行为。

Tcpdump 高级功能

数据包的时间戳

在捕获网络流量时,数据包的时间戳信息对于分析网络性能和故障排除非常重要。Tcpdump提供了多种时间戳选项来满足不同的需求。

标准时间戳

默认情况下,Tcpdump会在输出中包含每个数据包的时间戳信息。时间戳格式通常是“hh:mm:ss.milliseconds”。例如:

sudo tcpdump -i eth0 -c 5

输出示例:

09:20:12.123456 IP 192.168.1.1.54321 > 192.168.1.2.80: Flags [S], seq 0, win 65535, options [mss 1460,sackOK,TS val 123456 ecr 0,nop,wscale 6], length 0

微秒和秒精度

使用-tt选项可以将时间戳显示为自1970年1月1日以来的秒数(微秒精度):

sudo tcpdump -i eth0 -c 5 -tt

日期和时间

使用-ttt选项可以显示相对时间戳,即从第一个捕获的数据包开始的时间间隔(以毫秒为单位):

sudo tcpdump -i eth0 -c 5 -ttt

捕获特定协议的数据包

Tcpdump支持捕获和分析多种网络协议的数据包。以下是一些常见协议的捕获示例:

捕获TCP流量

要捕获所有TCP流量,可以使用以下命令:

sudo tcpdump -i eth0 tcp

捕获UDP流量

要捕获所有UDP流量,可以使用以下命令:

sudo tcpdump -i eth0 udp

捕获ICMP流量

要捕获所有ICMP(ping)流量,可以使用以下命令:

sudo tcpdump -i eth0 icmp

捕获并分析HTTP流量

HTTP流量是网络分析中最常见的流量类型之一。Tcpdump可以用于捕获和分析HTTP请求和响应。

捕获HTTP请求和响应

要捕获HTTP请求和响应,可以使用以下命令:

sudo tcpdump -i eth0 -A -c 10 port 80

使用-A选项将数据包内容以ASCII格式显示,从而更容易读取HTTP请求和响应的内容。

分析HTTP请求方法

要分析特定的HTTP请求方法(如GET请求),可以结合grep命令进行过滤。例如,要捕获并分析GET请求,可以使用以下命令:

sudo tcpdump -i eth0 -A -c 10 port 80 | grep "GET"

使用表达式进行复杂过滤

Tcpdump支持使用复杂的布尔表达式来进行高级过滤。这些表达式可以使用逻辑运算符(如and、or、not)进行组合,从而实现更复杂的过滤条件。

捕获特定主机和端口的数据包

例如,要捕获来自特定主机且目的端口为80的数据包,可以使用以下命令:

sudo tcpdump -i eth0 src 192.168.1.1 and dst port 80

捕获特定子网的数据包

要捕获来自特定子网的数据包,可以使用以下命令:

sudo tcpdump -i eth0 net 192.168.1.0/24

排除特定主机的数据包

要捕获除特定主机外的所有数据包,可以使用not运算符。例如,排除来自192.168.1.1的数据包:

sudo tcpdump -i eth0 not src 192.168.1.1

数据包内容分析

Tcpdump不仅可以捕获数据包,还可以对数据包的内容进行详细分析。使用不同的选项可以查看数据包的详细信息,包括头部信息和负载数据。

查看数据包头部信息

使用-v-vv-vvv选项可以查看数据包的详细头部信息。例如:

sudo tcpdump -i eth0 -c 5 -vv

查看数据包负载数据

使用-X-XX选项可以查看数据包的负载数据。例如:

sudo tcpdump -i eth0 -c 5 -XX

将数据包导出到文件

Tcpdump允许将捕获的数据包导出到文件中,以便后续分析。导出的文件通常以pcap格式保存,可以使用Wireshark等工具进行分析。

将数据包导出到文件

使用-w选项可以将数据包导出到文件。例如:

sudo tcpdump -i eth0 -c 100 -w capture.pcap

读取导出的文件

使用-r选项可以读取导出的文件。例如:

tcpdump -r capture.pcap

版权声明:本文来源网络,免费传达知识,版权归原作者所有。如涉及作品版权问题,请联系我进行删除。

‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧  END  ‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧

关注我的微信公众号,回复“星球”加入知识星球,有问必答。



点击“阅读原文”查看知识星球详情,欢迎点分享、收藏、点赞、在看。

李肖遥 公众号“技术让梦想更伟大”,作者:李肖遥,专注嵌入式,只推荐适合你的博文,干货,技术心得,与君共勉。
评论
  • 流量传感器是实现对燃气、废气、生活用水、污水、冷却液、石油等各种流体流量精准计量的关键手段。但随着工业自动化、数字化、智能化与低碳化进程的不断加速,采用传统机械式检测方式的流量传感器已不能满足当代流体计量行业对于测量精度、测量范围、使用寿命与维护成本等方面的精细需求。流量传感器的应用场景(部分)超声波流量传感器,是一种利用超声波技术测量流体流量的新型传感器,其主要通过发射超声波信号并接收反射回来的信号,根据超声波在流体中传播的时间、幅度或相位变化等参数,间接计算流体的流量,具有非侵入式测量、高精
    华普微HOPERF 2025-01-13 14:18 443浏览
  • 根据Global Info Research(环洋市场咨询)项目团队最新调研,预计2030年全球无人机电池和电源产值达到2834百万美元,2024-2030年期间年复合增长率CAGR为10.1%。 无人机电池是为无人机提供动力并使其飞行的关键。无人机使用的电池类型因无人机的大小和型号而异。一些常见的无人机电池类型包括锂聚合物(LiPo)电池、锂离子电池和镍氢(NiMH)电池。锂聚合物电池是最常用的无人机电池类型,因为其能量密度高、设计轻巧。这些电池以输出功率大、飞行时间长而著称。不过,它们需要
    GIRtina 2025-01-13 10:49 161浏览
  • PNT、GNSS、GPS均是卫星定位和导航相关领域中的常见缩写词,他们经常会被用到,且在很多情况下会被等同使用或替换使用。我们会把定位导航功能测试叫做PNT性能测试,也会叫做GNSS性能测试。我们会把定位导航终端叫做GNSS模块,也会叫做GPS模块。但是实际上他们之间是有一些重要的区别。伴随着技术发展与越发深入,我们有必要对这三个词汇做以清晰的区分。一、什么是GPS?GPS是Global Positioning System(全球定位系统)的缩写,它是美国建立的全球卫星定位导航系统,是GNSS概
    德思特测试测量 2025-01-13 15:42 447浏览
  • 随着数字化的不断推进,LED显示屏行业对4K、8K等超高清画质的需求日益提升。与此同时,Mini及Micro LED技术的日益成熟,推动了间距小于1.2 Pitch的Mini、Micro LED显示屏的快速发展。这类显示屏不仅画质卓越,而且尺寸适中,通常在110至1000英寸之间,非常适合应用于电影院、监控中心、大型会议、以及电影拍摄等多种室内场景。鉴于室内LED显示屏与用户距离较近,因此对于噪音控制、体积小型化、冗余备份能力及电气安全性的要求尤为严格。为满足这一市场需求,开关电源技术推出了专为
    晶台光耦 2025-01-13 10:42 455浏览
  • 随着通信技术的迅速发展,现代通信设备需要更高效、可靠且紧凑的解决方案来应对日益复杂的系统。中国自主研发和制造的国产接口芯片,正逐渐成为通信设备(从5G基站到工业通信模块)中的重要基石。这些芯片凭借卓越性能、成本效益及灵活性,满足了现代通信基础设施的多样化需求。 1. 接口芯片在通信设备中的关键作用接口芯片作为数据交互的桥梁,是通信设备中不可或缺的核心组件。它们在设备内的各种子系统之间实现无缝数据传输,支持高速数据交换、协议转换和信号调节等功能。无论是5G基站中的数据处理,还是物联网网关
    克里雅半导体科技 2025-01-10 16:20 424浏览
  •   在信号处理过程中,由于信号的时域截断会导致频谱扩展泄露现象。那么导致频谱泄露发生的根本原因是什么?又该采取什么样的改善方法。本文以ADC性能指标的测试场景为例,探讨了对ADC的输出结果进行非周期截断所带来的影响及问题总结。 两个点   为了更好的分析或处理信号,实际应用时需要从频域而非时域的角度观察原信号。但物理意义上只能直接获取信号的时域信息,为了得到信号的频域信息需要利用傅里叶变换这个工具计算出原信号的频谱函数。但对于计算机来说实现这种计算需要面对两个问题: 1.
    TIAN301 2025-01-14 14:15 76浏览
  • 随着全球向绿色能源转型的加速,对高效、可靠和环保元件的需求从未如此强烈。在这种背景下,国产固态继电器(SSR)在实现太阳能逆变器、风力涡轮机和储能系统等关键技术方面发挥着关键作用。本文探讨了绿色能源系统背景下中国固态继电器行业的前景,并强调了2025年的前景。 1.对绿色能源解决方案日益增长的需求绿色能源系统依靠先进的电源管理技术来最大限度地提高效率并最大限度地减少损失。固态继电器以其耐用性、快速开关速度和抗机械磨损而闻名,正日益成为传统机电继电器的首选。可再生能源(尤其是太阳能和风能
    克里雅半导体科技 2025-01-10 16:18 319浏览
  • ARMv8-A是ARM公司为满足新需求而重新设计的一个架构,是近20年来ARM架构变动最大的一次。以下是对ARMv8-A的详细介绍: 1. 背景介绍    ARM公司最初并未涉足PC市场,其产品主要针对功耗敏感的移动设备。     随着技术的发展和市场需求的变化,ARM开始扩展到企业设备、服务器等领域,这要求其架构能够支持更大的内存和更复杂的计算任务。 2. 架构特点    ARMv8-A引入了Execution State(执行状
    丙丁先生 2025-01-12 10:30 433浏览
  • 01. 什么是过程能力分析?过程能力研究利用生产过程中初始一批产品的数据,预测制造过程是否能够稳定地生产符合规格的产品。可以把它想象成一种预测。通过历史数据的分析,推断未来是否可以依赖该工艺持续生产高质量产品。客户可能会要求将过程能力研究作为生产件批准程序 (PPAP) 的一部分。这是为了确保制造过程能够持续稳定地生产合格的产品。02. 基本概念在定义制造过程时,目标是确保生产的零件符合上下规格限 (USL 和 LSL)。过程能力衡量制造过程能多大程度上稳定地生产符合规格的产品。核心概念很简单:
    优思学院 2025-01-12 15:43 471浏览
  • 新年伊始,又到了对去年做总结,对今年做展望的时刻 不知道你在2024年初立的Flag都实现了吗? 2025年对自己又有什么新的期待呢? 2024年注定是不平凡的一年, 一年里我测评了50余块开发板, 写出了很多科普文章, 从一个小小的工作室成长为科工公司。 展望2025年, 中国香河英茂科工, 会继续深耕于,具身机器人、飞行器、物联网等方面的研发, 我觉得,要向未来学习未来, 未来是什么? 是掌握在孩子们生活中的发现,和精历, 把最好的技术带给孩子,
    丙丁先生 2025-01-11 11:35 428浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦