tcpdump
tcpdump
descriptions
tcpdump是linux平台的一个抓包工具,和tshark一样,当然也可以抓ip、arp、icmp、udp流量。
options
常用选型
参数 | 参数说明 |
---|---|
-i | +接口,抓某个接口的数据包,-i any 抓取所有端口的数据包。 |
host | +ip地址,抓某个地址的数据包 |
port | +端口号,如果不知道是tcp 或是udp的话,可以直接使用port。 |
-c | +数据包的数量,抓多少数据包。 |
-B | -B buffer_size,缓冲区大小,wireshark、tshark默认是2M。 |
-n | 不做地址的解析(不做IP地址显示成 主机域名) |
-nn | 不做地址和端口号的解析(不做IP地址显示成 主机域名、不把端口号显示成服务名) |
-v | 实时显示详细的抓包信息 |
-vv | 两个v,实时显示更加详细的抓包信息。 |
-w | 保存数据包 后边+要保存的数据包名称 |
icmp | 直接指定协议 ,例如ip/arp/icmp/tcp/udp,但是不能加应用层协议,和wireshark 捕捉过滤器是一样的。设置了抓包协议就不支持再设置host了(除使用ip) |
tcp port | 指定tcp端口 |
udp port | 指定udp端口 |
-s | --snapshot-length=snaplen,指定抓包长度,默认是262144B,但看到很多文章写的是默认68B,可能他们说的是老版本的tcpdump吧。设置 -s 80 只抓包头。 |
-Z | 表示下面的新文件也是用root权限来执行的。 |
-C | 表示每当文件达到指定大小时进行重新保存一个新文件,单位是MB,如果用-C时必须配合-Z root使用 |
但是tcpdump好像无法指定 抓多大的数据后后停止抓包(指定一个size),而tshark可以 | |
-G | -G选项 后面接时间 单位为秒,每多少秒保存一个数据包,配合-Z root使用 |
-W | -W +抓包数量,捕获多少个数据包文件,配合-C、-G使用。 |
-r | 读取数据包,大部分的数据包通过图形化的wireshark分析更方便,当遇到特殊情况 比如数据包特别大,wireshark加载和分析的很慢,可以通过命令行的方式打开数据包 结合复杂的过滤式 来分析数据包。 |
-F | -F +过滤式 |
! | 不等于 |
and | 和 |
or | 或 |
examples
tcpdump -i ens160 -nn -s 60 udp port 53 -w tcpdump-s.pcap
下面的数据包可以看到抓到的数据包 Ethernet II(14B)+ip(20B)+udp(8B)+dns(18B)=60B

[root@rhel ~]# tcpdump -i ens160 -nn -s 60 udp port 53 -w tcpdump-s.pcap
dropped privs to tcpdump
tcpdump: listening on ens160, link-type EN10MB (Ethernet), capture size 60 bytes
^C10 packets captured
10 packets received by filter
0 packets dropped by kernel
1 192.168.3.143 223.5.5.5 DNS 96 Standard query 0xa113[Packet size limited during capture]
2 223.5.5.5 192.168.3.143 DNS 143 Standard query response 0xa113[Packet size limited during capture]
3 192.168.3.143 223.5.5.5 DNS 99 Standard query 0xfe5e[Packet size limited during capture]
4 223.5.5.5 192.168.3.143 DNS 370 Standard query response 0xfe5e[Packet size limited during capture]
所有数据包都被截短了,提示Packet size limited during capture。但是wireshark/tcpdump实时抓包看到的都是假的数据包大小。
循环抓取数据包
tcpdump -i ens160 -C 10 -Z root host 192.168.3.1 -w tcpdump-C.pcap(每10M保存一个数据包)
tcpdump -i ens160 -C 10 -Z root host 192.168.3.1 -w tcpdump-C-W.pcap -W 5(每10M保存一个数据包,循环捕获5个)
[root@rhel ~]# tcpdump -i ens160 -C 10 -Z root host 192.168.3.1 -w tcpdump-C.pcap
dropped privs to root
tcpdump: listening on ens160, link-type EN10MB (Ethernet), capture size 262144 bytes
^C252282 packets captured
252282 packets received by filter
0 packets dropped by kernel
[root@rhel ~]# ll -h
-rw-r--r--. 1 root root 9.6M Mar 10 13:45 tcpdump-C.pcap
-rw-r--r--. 1 root root 9.6M Mar 10 13:45 tcpdump-C.pcap1
-rw-r--r--. 1 root root 9.6M Mar 10 13:45 tcpdump-C.pcap2
-rw-r--r--. 1 root root 9.6M Mar 10 13:45 tcpdump-C.pcap3
-rw-r--r--. 1 root root 9.6M Mar 10 13:45 tcpdump-C.pcap4
------------------------每10M保存一个数据包,保存5个,新捕获的把之前的捕捉的替掉-------------
[root@rhel ~]# tcpdump -i ens160 -C 10 -Z root host 192.168.3.1 -w tcpdump-C-W.pcap -W 5
dropped privs to root
tcpdump: listening on ens160, link-type EN10MB (Ethernet), capture size 262144 bytes
^C2367805 packets captured
2367805 packets received by filter
0 packets dropped by kernel
tshark -a (filesize、duration)
Tshark Capture stop conditions:
-c
-a
filesize:NUM - stop this file after NUM KB
files:NUM - stop after NUM files
使用这几条命令要将某个文件夹设为root权限,在该文件里抓包 chmod o+w 文件夹名称,要不然会报错
tshark: The file to which the capture would be saved ("tshark.pcap") could not be opened: Permission denied.
tshark -i ens160 -nn -a filesize:10 -w tshark.pcap host 192.168.3.1,默认filesize为KB,抓10KB后停止
tshark -i ens160 -nn -a duration:10 -w tshark.pcap host 192.168.3.1,经10s后抓包停止
[root@rhel 1]# sudo tshark -i ens160 -nn -a filesize:10 -w tshark.pcap host 192.168.3.1
Running as user "root" and group "root". This could be dangerous.
Capturing on 'ens160'
109 //109表示抓了109个数据包
[root@rhel 1]# ll -h
total 12K
-rw-------. 1 root root 9.9K Mar 13 13:14 tshark.pcap //数据包大小为10KB
tcpdump -i ens160 -s0 -G 5 -Z root -w %Y_%m%d_%H%M_%S.pcap(每5s保存一个数据包)
tcpdump -i ens160 -s0 -G 5 -Z root -w %Y_%m%d_%H%M_%S.pcap -W 5(每5s保存一个数据包,抓5个)
[root@rhel ~]# tcpdump -i ens160 -s0 -G 5 -Z root -w %Y_%m%d_%H%M_%S.pcap
dropped privs to root
tcpdump: listening on ens160, link-type EN10MB (Ethernet), capture size 262144 bytes
^C63 packets captured
65 packets received by filter
[root@rhel ~]# ll -h
total 93M
-rw-r--r--. 1 root root 1.1K Mar 10 13:40 2023_0310_1340_26.pcap
-rw-r--r--. 1 root root 1.8K Mar 10 13:40 2023_0310_1340_32.pcap
-rw-r--r--. 1 root root 3.3K Mar 10 13:40 2023_0310_1340_37.pcap
-rw-r--r--. 1 root root 1.6K Mar 10 13:40 2023_0310_1340_45.pcap
--------------------------每5s保存一个数据包,保存5个,5个包抓完结束抓包---------
[root@rhel ~]# tcpdump -i ens160 -s0 -G 5 -Z root -w %Y_%m%d_%H%M_%S.pcap -W 5
dropped privs to root
tcpdump: listening on ens160, link-type EN10MB (Ethernet), capture size 262144 bytes
Maximum file limit reached: 5
51 packets captured
53 packets received by filter
tcpdump -l | tee dat
tcpdump -l > dat & tail -f dat
tcpdump host sundown
tcpdump host helios and \( hot or ace \)
tcpdump ip host ace and not helios
tcpdump net ucb-ether
tcpdump 'gateway snup and (port ftp or ftp-data)'
tcpdump ip and not net localnet
tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src and dst net localnet'
tcpdump 'tcp[tcpflags] & (tcp-rst|tcp-ack) == (tcp-rst|tcp-ack)'
tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
tcpdump 'gateway snup and ip[2:2] > 576'
tcpdump 'ether[0] & 1 = 0 and ip[16] >= 224'
tcpdump 'icmp[icmptype] != icmp-echo and icmp[icmptype] != icmp-echoreply'
tcpdump -i xl0 tcp[13] == 2
tcpdump -i xl0 'tcp[13] & 2 == 2'
tcpdump -i xl0 'tcp[tcpflags] & tcp-push != 0'
man tcpdump
https://blog.csdn.net/lhwpysf/article/details/51578994
https://blog.csdn.net/weixin_44288604/article/details/123807294
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现