tcpdump:tcpdump 是一个在 Unix/Linux 系统上常用的网络抓包工具,用于捕获网络数据包并将其显示或保存到文件中。(Wireshare也是一个抓包工具,但是是图形化工具,常用于Windows上)
数据包:数据包是在网络上传输的基本单位,包含了网络通信的信息,如源地址、目标地址、协议类型、数据内容等。
1
语法
tcpdump 命令的基本语法如下:
tcpdump [options] [expression]
- tcpdump:命令本身。
- [options]:用于指定 `tcpdump` 的选项和参数,如捕获控制参数、显示控制参数、过滤参数等。
- [expression]:可选参数,用于过滤要捕获的数据包。您可以根据需要指定特定的条件,如主机、端口、协议等,以过滤出感兴趣的数据包。
在使用 tcpdump 命令时,您可以根据具体的需求结合不同的选项和表达式来捕获、显示和过滤网络数据包。例如,您可以指定要监听的网络接口、捕获特定主机的数据包、显示数据包内容等。
以下是一个示例:
tcpdump -i eth0 host 192.168.1.100
在这个示例中,-i eth0 指定了要监听的网络接口为 eth0,host 192.168.1.100 指定了要捕获的数据包为源或目标地址为 192.168.1.100 的数据包。
通过灵活使用不同的选项和表达式,您可以根据具体的需求定制 tcpdump 命令,以实现网络监控、分析和故障排除等目的。
2
参数(按功能分)
1. 捕获控制参数:
-i:指定要监听的网络接口。
-c:指定要捕获的数据包数量。
-s:指定要捕获的数据包的大小。
-w:将捕获的数据包保存到文件中。
2. 显示控制参数:
-n:以数字形式显示地址,而不是尝试解析为主机名。
-A:以 ASCII 格式显示数据包内容。
-v:显示更详细的数据包信息。
3. 过滤参数:
host <host>: 捕获特定主机的数据包。
net <network>: 捕获特定网络的数据包。
port <port>: 捕获特定端口的数据包。
src <source>: 捕获特定源地址的数据包。
dst <destination>:捕获特定目标地址的数据包。
4. 其他参数:
-r <file>:从文件中读取数据包进行分析。
-X: 以十六进制和 ASCII 格式显示数据包内容。
-tttt: 显示时间戳。
-q: 以更安静的模式运行,减少输出信息。
3
举例
抓取特定协议的数据(以 UDP 为例)
$ tcpdump -i eth0 udp
$ tcpdump -i eth0 proto 17
抓取特定主机的数据
#使用过滤器 host 可以抓取特定目的地和源 IP 地址的流量。
$ tcpdump -i eth0 host 10.10.1.1
#也可以使用 src 或 dst 只抓取源或目的地:
$ tcpdump -i eth0 dst 10.10.1.20
将抓取的数据写入文件
$ tcpdump -i eth0 -s0 -w test.pcap
4
参考文章
https://blog.csdn.net/ljbcharles/article/details/122256796
https://zhuanlan.zhihu.com/p/74812069
https://www.runoob.com/linux/linux-comm-tcpdump.html
https://zhuanlan.zhihu.com/p/482617730 |