banner
NEWS LETTER

tcpdump

Scroll down

工具地址

tcpdump


工具介绍

这是tcpdump(一个强大的命令行数据包分析器)和 libpcap(一个用于网络流量捕获的可移植 C/C++ 库) 的主页。

搭建流程

下载安装

使用方法

命令

命令 解释
tcpdump -i <INTERFACE> 捕获特定网络接口上的数据包
tcpdump -w <FILE> 将捕获的数据包写入文件
tcpdump -r <FILE> 从文件读取捕获的数据包
tcpdump -c <COUNT> 捕获特定数量的数据包
tcpdump -n 不解析 IP 地址
tcpdump -nn 不解析 IP 地址,也不解析协议号
tcpdump -v 详细显示,详细程度可以通过 -vv 和 -vvv 增加
tcpdump host <IP>/<HOSTNAME> 按 IP 地址或主机名过滤数据包
tcpdump src host <IP> 根据特定源主机过滤数据包
tcpdump dst host <IP> 根据特定目标主机过滤数据包
tcpdump port <PORT_NUMBER> 按端口号过滤数据包
tcpdump src port <PORT_NUMBER> 按指定源端口号过滤数据包
tcpdump dst port <PORT_NUMBER> 按指定目标端口号过滤数据包
tcpdump <PROTOCOL> 按协议过滤数据包
tcpdump -q 快速安静,简短的数据包信息
tcpdump -e 包括 MAC 地址
tcpdump -A 以 ASCII 编码打印数据包
tcpdump -xx 以十六进制格式显示数据包
tcpdump -X 以十六进制和 ASCII 格式显示数据包

逻辑操作符 解释
and 捕获两个条件都成立的数据包
or 捕获任一条件成立时的数据包
not 捕获不满足条件的数据包

关键字 解释
greater <LENGTH> 过滤长度大于或等于指定长度(以字节为单位)的数据包
less <LENGTH> 过滤长度小于或等于指定长度(以字节为单位)的数据包

表达式 解释
proto[expr:size] proto 指协议,expr 表示字节偏移量,size 表示字节数(可选)
tcp[tcpflags] TCP 标志字段

参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
tcpdump -i <INTERFACE>
# <INTERFACE>: eth0, wlo1, any

tcpdump -w <FILE>
# <FILE>: .pcap 文件

tcpdump -c <COUNT>
# <COUNT>: 1/2/3...

tcpdump host <IP>/<HOSTNAME>
# <IP>/<HOSTNAME>: 192.0.2.1/example.com

tcpdump port <PORT_NUMBER>
# <PORT_NUMBER>: 53/22/80/443...

tcpdump <PROTOCOL>
# <PROTOCOL>: ip, ip6, udp, tcp, icmp

greater <LENGTH>
# <LENGTH>: 1000/2500/5000...

proto[expr:size]
# proto(协议): 例如 arp、ether、icmp、ip、ip6、tcp、udp
# expr(字节偏移量): 表示从协议头部第几个字节开始,0 表示第一个字节
# size(字节数): 表示读取的字节长度,支持值为 1、2 或 4,默认为 1

tcp[tcpflags]
# tcp-syn(同步): 发起连接的第一个数据包
# tcp-ack(确认): 确认收到数据
# tcp-fin(完成): 连接关闭请求
# tcp-rst(重置): 强制关闭连接
# tcp-push: 请求立即传输数据

例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
tcpdump -i eth0 -c 50 -v
# 通过监听接口 eth0(有线以太网)捕获并显示 50 个数据包,以详细方式显示。

tcpdump -i wlo1 -w data.pcap
# 通过监听接口 wlo1(WiFi 接口)捕获数据包,并将数据包写入 data.pcap。它会一直运行,直到按下 Ctrl + C 中断捕获。

tcpdump -i any -nn
# 捕获所有接口上的数据包并将其显示在屏幕上,不解析 IP 地址,不解析协议

tcpdump -i any tcp port 22
# 监听所有接口并捕获tcp往返的数据包 22 端口,即SSH流量。

tcpdump -i wlo1 udp port 123
# 监听 WiFi 网卡并过滤发往网络时间协议 (NTPudp) 123 端口的流量。

tcpdump -i eth0 host example.com and tcp port 443 -w https.pcap
# 将监听 eth0 有线以太网接口,并过滤与 example.com 相关,使用 tcp 的 443 端口的 HTTPS 流量。

tcpdump host 1.1.1.1 and tcp
# 捕获tcp带有 的流量host 1.1.1.1。

tcpdump udp or icmp
# 捕获UDP或 ICMP 流量。

tcpdump not tcp
# 捕获除TCP段之外的所有数据包;我们预期在结果中找到UDP、ICMP 和ARP数据包。

ether[0] & 1 != 0
# 取 ether 以太网报头中的第一个字节(也就是目标 MAC 地址的第一个字节),并使用二进制运算符 & (与),和十进制 1(二进制表示00000001)进行运算
# 如果结果不等于十进制 0(二进制表示00000000),则返回 true,这个表达式和 ether[0] & 1 == 1 目的一样
# 此过滤器的目的是显示发送到多播地址的数据包。多播以太网地址是一种特定的地址,用于标识一组旨在接收相同数据的设备。结果 1 表示多播,0表示单播

ip[0] & 0xf != 5
# 取 IP 头中的第一个字节的低 4 位(也就是 IP Header Length 字段),并使用二进制运算符 & (与),与十六进制数 F(二进制 00001111)进行比较。
# 如果结果不等于十进制 5(二进制表示 00000101),则返回 true。
# 此过滤器的目的是捕获所有带有选项的 IP 数据包。

tcpdump "tcp[tcpflags] == tcp-syn"
# 捕获仅设置了 SYN(同步)标志,而所有其他标志均未设置的 TCP 数据包。

tcpdump "tcp[tcpflags] & tcp-syn != 0"
# 捕获至少设置了 SYN(同步)标志的TCP数据包。

tcpdump "tcp[tcpflags] & (tcp-syn|tcp-ack) != 0"
#捕获至少设置了SYN(同步)或ACK(确认)标志的TCP数据包。

其他文章
请输入关键词进行搜索