网络/命令行抓包工具tcpdump详解

一口Linux 2021-01-04 00:00

概述

用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。

tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。

tcpdump基于底层libpcap库开发,运行需要root权限。

一、tcpdump安装

  1. 环境 虚拟机:vmware 15.5.2 os: ubuntu 12.04

  2. 安装tcpdump

sudo apt-get install tcpdump

3. 版本查看

tcpdump --h

tcpdump version 4.0。

libpcap version 1.1.1    表示libpcap的版本。

二、tcpdump参数

常用参数选项说明:

参数 含义
-a 将网络地址和广播地址转变成名字
-c 在收到指定的包的数目后,tcpdump就会停止;
-d 将匹配信息包的代码以人们能够理解的汇编格式给出;以可阅读的格式输出。
-dd 将匹配信息包的代码以c语言程序段的格式给出;
-ddd 将匹配信息包的代码以十进制的形式给出;
-e 在输出行打印出数据链路层的头部信息;
-f 将外部的Internet地址以数字的形式打印出来;
-l 使标准输出变为缓冲行形式;
-n 直接显示IP地址,不显示名称;
-nn 端口名称显示为数字形式,不显示名称;
-t 在输出的每一行不打印时间戳;
-v 输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息;
-vv 输出详细的报文信息;
-F 从指定的文件中读取表达式,忽略其它的表达式;
-i 指定监听的网络接口;
-r 从指定的文件中读取包(这些包一般通过-w选项产生);
-w 直接将包写入文件中,并不分析和打印出来;
-T 将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程调用)和snmp(简单 网络管理协议;)


三、命令选项使用举例

1. 截获主机收到和发出的所有数据包。

命令:

tcpdump

说明:

tcpdump截取包默认显示数据包的头部。

普通情况下,直接启动tcpdump将监视第一个网络接口上所有流过的数据包。

基础格式:时间 数据包类型 源IP 端口/协议 > 目标IP 端口/协议 协议详细信息

按下Ctrl+C会终止tcpdump命令。且会在结尾处生成统计信息。

终止tcpdump

2. 指定抓包数量 -c

指定抓取2个数据包。

命令:

tcpdump -c 2

说明:

最后会自动生成统计信息。【注意,已经切换到管理员了,虚拟机中要产生数据包,可以另外开一个窗口ping baidu.com后面不再提示】

ping baidu.com

3. 将抓包信息写入文件 -w

使用-w选项指定记录文件。

命令:

tcpdump -c 10 -w tcpdump_test.log

说明:

保存的文件不是文本格式,不能直接查看。tcpdump保存的文件的格式是几乎所有主流的抓包工具软件都可以读取。所以可以使用更易读的图形界面工具来查看记录文件。

4. 读取记录文件 -r

使用-r选项读取文件。

命令:

tcpdump -r tcpdump_test.log

![读取记录文件

5. 打印出所有可工作的接口 -D

命令:

tcpdump -D

其中网卡为eth0。

6. 指定监控的网卡 -i

命令:

tcpdump -i eth0

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

7. 显示更详细的数据包信息 -v  -vv

选项-v,-vv可以显示更详细的抓包信息。

tcpdump -v
tcpdump -vv

8. 不使用域名反解 -n

使用-n后,tcpdump会直接显示IP地址,不会显示域名(与netstat命令相似)。

9. 增加抓包时间戳 -tttt选项

tcpdump的所有输出打印行中都会默认包含时间戳信息;时间戳信息的显示格式如下

hh:mm:ss.frac (nt: 小时:分钟:秒.)

此时间戳的精度与内核时间精度一致, 反映的是内核第一次看到对应数据包的时间;

而数据包从物理线路传递到内核的时间, 以及内核花费在此包上的中断处理时间都没有算进来;

使用-tttt选项,抓包结果中将包含抓包日期:

命令:

tcpdump -tttt
增加抓包时间戳

四、条件过滤

1. 过滤:指定需要抓取的协议

tcpdump可以只抓某种协议的包,支持指定以下协议:「ip,ip6,arp,tcp,udp,wlan」等。

命令:

tcpdump udp

tcpdump icmp

tcpdump tcp

tcpdump arp

2. 过滤:指定协议的端口号

使用port参数,用于指定端口号。

命令:tcpdump tcp port 80

使用portrange参数,用于指定端口范围。

命令:tcpdump tcp portrange 1-1024

3. 过滤:指定源与目标

src 表示源。

dst 表示目标。

命令:

tcpdump src port 8080

tcpdump dst port 80

4. 过滤:指定特定主机的消息包

使用host指定需要监听的主机。

命令:

tcpdump host 192.168.1.113

注意:若使用了host参数使用了计算机名或域名。例tcpdump host shi-pc ,则无法再使用-n选项。

5. 过滤:指定数据包大小

使用greater(大于)与less(小于)可以指定数据包大小的范围。

「例:只抓取大于1000字节的数据包。」

命令:

tcpdump greater 1000

「例:只抓取小于10字节的数据包。」

命令:

tcpdump less 10

五、 逻辑表达式

使用基本逻辑组合拼装出更精细的过滤条件。

1. 逻辑与

逻辑与关系,使用and。

命令:

tcpdump tcp and host 192.168.1.112

tcpdump tcp and src 192.168.1.112 and port 8080

2. 逻辑或

逻辑或关系,使用or。

命令:

tcpdump host 192.168.1.112 or 192.168.1.113

3. 逻辑非

逻辑非关系,使用not,也可以使用 ! 。

若使用 ! 必须与其后面的字符隔开一个空格。

例:当通过ssh协议远程使用tcpdump时,为了避免ssh的数据包的输出,所以一般需要禁止ssh数据包的输出。

命令:

tcpdump not tcp port 22

tcpdump ! tcp port 22

4. 括号

括号需要使用在引号内,或转意使用。否则会报错。

例:抓取非22端口,且主机为192.168.1.112 和 192.168.1.113的TCP数据包。

命令:

tcpdump not tcp port 22 and host 192.168.1.112or192.168.1.113

tcpdump "not tcp port 22 and host (192.168.1.112 or 192.168.1.113)"

tcpdump not tcp port 22 and host "(192.168.1.112 or 192.168.1.113)"

六、其他实例

1. 打印所有进入或离开sundown的数据包.

tcpdump host sundown

2. 截获主机210.27.48.1 和主机210.27.48.2 或210.27.48.3的通信

tcpdump host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3 \)  

3. 如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包,使用命令:

tcpdump ip host 210.27.48.1 and ! 210.27.48.2

4. 监视所有送到主机hostname的数据包

tcpdump -i eth0 dst host hostname

5. 获取主机210.27.48.1接收或发出的telnet包

23为telnet的端口

tcpdump tcp port 23 and host 210.27.48.1

6. 监视本机的udp 123 端口

123 为ntp的服务端口

tcpdump udp port 123 

7. 使用tcpdump抓取HTTP包

tcpdump  -XvvennSs 0 -i eth0 tcp[20:2]=0x4745 or tcp[20:2]=0x4854
  • 0x4745 为"GET"前两个字母"GE",
  • 0x4854 为"HTTP"前两个字母"HT"。

tcpdump 对截获的数据并没有进行彻底解码,数据包内的大部分内容是使用十六进制的形式直接打印输出的。

显然这不利于分析网络故障,通常的解决办法是先使用带**-w参数的tcpdump 截获数据并保存到文件中**,然后再使用其他程序(如Wireshark)进行解码分析。当然也应该定义过滤规则,以避免捕获的数据包填满整个硬盘。

六、查看数据包完整内容

tcpdump默认不显示数据包的详细内容。

方法一:

使用-A参数能以ASCII码显示数据包。

例:只抓取1个数据包,并显示其内容。

命令:

tcpdump -c 1 -A

方法二:

使用-X参数能16进制数与ASCII码共同显示数据包。

例:只抓取1个数据包,并显示其内容。

命令:

tcpdump -c 1 -X

七、tcpdump 与wireshark

Wireshark(以前是ethereal)是Windows下非常简单易用的抓包工具,现在也有Linux版本。

通过Tcpdump抓取的数据包分析比较麻烦,要想很方便的分析数据包, 我们可以用Tcpdump + Wireshark 的完美组合实现:在 Linux 里抓包,然后在Windows 里分析包。

保存数据包为wireshark能识别的文件:

tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap
参数 含义
tcp ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型
-i eth1 只抓经过接口eth1的包
-t 不显示时间戳
-s 0 抓取数据包时默认抓取长度为68字节。加上-S 0 后可以抓到完整的数据包
-c 100 只抓取100个数据包
dst port ! 22 不抓取目标端口是22的数据包
src net 192.168.1.0/24 数据包的源网络地址为192.168.1.0/24
-w ./target.cap 保存成cap文件,方便用ethereal(即wireshark)分析


推荐阅读


【1】【从0学ARM】你不了解的ARM处理异常之道
【2】为什么使用结构体效率比较高? 必读
【3】9. 基于Cortex-A9 LED汇编、C语言驱动编写必读
【4】一文包你学会网络数据抓包必读
【5】10. 基于Cortex-A9的pwm详解 必读
【6】11. 基于ARM Cortex-A9中断详解 必读
【7】12. 如何基于Cortex-A9的UART从头实现printf函数

 


 

进群,请加一口君个人微信,带你嵌入式入门进阶。


一口Linux 写点代码,写点人生!
评论 (0)
  • 伴随无线技术的迅速发展,无线路由器市场商机日益庞大。现代消费者在选购无线路由器(Wi-Fi AP)时,通常依赖的是该产品在无干扰的实验室环境中,量测得到的数据报告。然而,这些数据往往是在受控的RF隔离环境中进行测试,无法完全反映真实使用场景。这种情况导致许多消费者抱怨,他们购买的产品效能与宣称的数据不符。在实际应用中,消费者常因Wi-Fi讯号不稳定、传输速度不如预期或设备过热而产生客诉。产品仰赖实验室的数据够吗?无线路由器(Wi-Fi AP)ODM供货商遇到什么挑战?一家台湾知名的无线路由器(W
    百佳泰测试实验室 2025-04-05 00:12 44浏览
  • 引言:POPO声的成因与影响在语音芯片应用中,WT588F08A作为一款支持DAC+功放输出的高集成方案,常因电路设计或信号处理不当,在音频播放结束后出现POPO声(瞬态噪声)。这种噪声不仅影响用户体验,还可能暴露电路设计缺陷。本文将基于实际案例,解析POPO声的成因并提供系统化的解决方案。一、POPO声的根源分析1. 功放电路状态切换的瞬态冲击当DAC输出的音频信号突然停止时,功放芯片的输入端若处于高阻态或无信号状态,其内部放大电路会因电源电压突变产生瞬态电流,通过喇叭表现为POPO声。关键因
    广州唯创电子 2025-04-07 09:01 75浏览
  • 【拆解】+沈月同款CCD相机SONY DSC-P8拆解 这个清明假期,闲来无事,给大伙带来一个老古董物品的拆解--索尼SONY DSC-P8 CCD相机。这个产品是老婆好几年前在海鲜市场淘来的,由于显示屏老化,无法正常显示界面了,只有显示背光。但是这也无法阻止爱人的拍照。一顿盲操作依旧可以拍出CCD古董相机的质感。如下实拍: 由于这个相机目前都在吃灰。我就拿过来拆解,看看里面都是怎样个设计,满足下电子爱好者的探索。 首先给大伙展示下这台老相机的全貌。正视图  后视图 
    zhusx123 2025-04-06 17:38 81浏览
  • 引言:小型化趋势下的语音芯片需求随着消费电子、物联网及便携式设备的快速发展,产品设计对芯片的小型化、高集成度和低功耗提出了更高要求。厂家凭借其创新的QFN封装技术,推出WTV系列(如WTV380)及WT2003H系列语音芯片,以超小体积、高性能和成本优势,为紧凑型设备提供理想解决方案。产品核心亮点1. QFN封装技术赋能超小体积极致尺寸:WTV380采用QFN32封装,尺寸仅4×4毫米,WT2003H系列同样基于QFN工艺,可满足智能穿戴、微型传感器等对空间严苛的场景需求。高密度集成:QFN封装
    广州唯创电子 2025-04-07 08:47 61浏览
  • 医疗影像设备(如CT、MRI、超声诊断仪等)对PCB的精度、可靠性和信号完整性要求极高。这类设备需要处理微伏级信号、高频数据传输,同时需通过严格的EMC/EMI测试。制造此类PCB需从材料选择、层叠设计、工艺控制等多维度优化。以下是关键技术与经验分享。 1. 材料选择:高频与生物兼容性优先医疗影像设备PCB常采用 Rogers RO4000系列 或 Isola FR4高速材料,以降低介电损耗并保证信号稳定性。例如,捷多邦在客户案例中曾为某超声探头厂商推荐 Rogers RO4350B
    捷多邦 2025-04-07 10:22 69浏览
  • 在追求环境质量升级与产业效能突破的当下,温湿度控制正成为横跨多个行业领域的核心命题。作为环境参数中的关键指标,温湿度的精准调控不仅承载着人们对舒适人居环境的期待,更深度关联着工业生产、科研实验及仓储物流等场景的运营效率与安全标准。从应用场景上看,智能家居领域要求温湿度系统实现与人体节律的协同调节,半导体洁净车间要求控制温湿度范围及其波动以保障良品率,而现代化仓储物流体系则依赖温湿度的实时监测预防各种产品的腐损与锈化。温湿度传感器作为实现温湿度监测的关键元器件,其重要性正在各行各业中凸显而出。温湿
    华普微HOPERF 2025-04-07 10:05 70浏览
  •   安全生产预警系统作为现代工业与安全管理的重要组成部分,正以前所未有的技术引领力,创新性地塑造着未来的安全管理模式。这一系统通过集成多种先进技术,如物联网、大数据、人工智能、云计算等,实现了对生产环境中潜在危险因素的实时监测、智能分析与及时预警,为企业的安全生产提供了坚实的技术保障。   技术引领:   物联网技术:物联网技术使得各类安全监测设备能够互联互通,形成一张覆盖全生产区域的安全感知网络。传感器、摄像头等终端设备实时采集温度、压力、气体浓度、人员位置等关键数据,为预警系统提供丰富的
    北京华盛恒辉软件开发 2025-04-05 22:18 52浏览
  • 在影像软的发展历程中,美图曾凭借着美图秀秀等一系列产品,在“颜值经济”的赛道上占据了领先地位,成为了人们日常生活中不可或缺的一部分,也曾在资本市场上风光无限,2016 年上市时,市值一度超过46亿美元,备受瞩目。 然而,随着市场的不断发展和竞争的日益激烈,美图逐渐陷入了困境。商业模式单一,过度依赖在线广告收入,使得其在市场波动面前显得脆弱不堪;多元化尝试,涉足手机、电商、短视频、医美等多个领域,但大多以失败告终,不仅未能带来新的增长点,反而消耗了大量的资源。更为严峻的是,用户流失问题日
    用户1742991715177 2025-04-05 22:24 65浏览
  • 在科技浪潮奔涌的当下,云计算领域的竞争可谓是如火如荼。百度智能云作为其中的重要参与者,近年来成绩斐然。2024年,百度智能云在第四季度营收同比增长26%,这样的增速在行业内十分惹眼。回顾全年,智能云业务的强劲增长势头也十分明显,2024年第一季度,其收入达到47亿元,同比增长12%;第二季度营收51亿元,同比增长14%。从数据来看,百度智能云在营收方面一路高歌猛进,展现出强大的发展潜力。然而,市场对百度智能云的表现似乎并不完全买账。2024年,尽管百度智能云数据亮眼,但百度股价却在震荡中下行。在
    用户1742991715177 2025-04-06 20:25 61浏览
  • 【拆解】+南孚测电器拆解 之前在天猫上买了一盒南孚电池,他给我送了一个小东西—测电器。今天我们就来拆解一下这个小东西,看看它是怎么设计和工作的。 三颗指示灯显示电池剩余电量。当点亮3颗LED时,则表示点亮充足。当点亮2颗LED时,则表示还能用。当点亮1颗LED时,表示点亮地建议更换,当无法点亮LED时,则表示没电了。外壳上还印有正负极,以免用户将电池放反。 这个小东西拆解也很方便,一个螺丝刀稍微撬几下。外壳就下来了,它是通过卡扣连接。 开盖后,测电线路板清晰呈现在眼前。 让我们看看小小的线路板有
    zhusx123 2025-04-05 15:41 50浏览
  • 及时生产 JIT(Just In Time)的起源JIT 起源于 20 世纪 70 年代爆发的全球石油危机和由此引发的自然资源短缺,这对仰赖进口原物料发展经济的日本冲击最大。当时日本的生产企业为了增强竞争力、提高产品利润,在原物料成本难以降低的情况下,只能从生产和流通过程中寻找利润源,降低库存、库存和运输等方面的生产性费用。根据这种思想,日本丰田汽车公司创立的一种具有特色的现代化生产方式,即 JIT,并由此取得了意想不到的成果。由于它不断地用于汽车生产,随后被越来越多的许多行业和企业所采用,为日
    优思学院 2025-04-07 11:56 82浏览
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦