1、介绍:
tcpdump是一个在Unix和Linux系统中常用的命令行网络抓包工具,用于捕获网络流量并分析网络数据包。它可以捕获和显示网络数据包。它可以帮助我们查看网络传输情况,分析网络问题和调试网络应用程序。以下是tcpdump的使用介绍、常用参数和示例。
2、使用介绍:
-
在命令行中输入tcpdump命令,即可启动tcpdump进行抓包。
-
tcpdump会默认抓取由所有网络接口进出的数据包,并将其显示在命令行窗口上。
-
按Ctrl+C可以中断抓包,并显示抓包结果的统计信息。
-
命令格式:
表达式:可以使用表达式来过滤要捕获的数据包。表达式可以根据协议、源/目的IP地址、端口号等进行过滤。
tcpdump [选项参数] [expression表达式]
3、常用参数:
-
-i :指定要监听的网络接口。例如,监听eth0网卡:-i eth0。
any作为接口参数,您可以捕获系统上所有的网络流量数据。 -
-n:以IP地址而非主机名形式显示数据包,禁用DNS解析,只显示IP地址。
-
-c :指定抓包的数据包数量,例如,表示只抓取10个数据包:-c 10。
-
-s :设置抓包时的快照长度(以字节为单位),设置每个数据包要捕获的最大字节数。例如:-s 1500。
-
-w :将抓取的数据包保存到文件中,例如:-w capture.pcap。
-
-r :从指定文件中读取数据包进行分析。例如:-r packet.pcap
-
-X:以16进制和ASCII格式显示数据包内容。例如:tcpdump -X
-
-q:以更简洁的方式显示结果。例如:
-
:按照指定的协议过滤数据包。例如:tcpdump http
-
-v 在捕获数据包时显示更多的详细信息。例如:tcpdump -v
-
src <source_ip>: 按照源IP地址过滤数据包。例如:src 192.168.1.10
仅捕获指定源IP地址的数据包:tcpdump src host 192.168.0.1 -
dst <destination_ip>: 按照目标IP地址过滤数据包。例如:dst 192.168.1.10
捕获指定目的端口号的数据包:tcpdump dst port 80 -
and :按照前后条件同时满足过滤数据包。例如:src 192.168.1.10 and dst port 80
-
or :按照前后条件有一个满足就过滤数据包。例如:
-
-B :设置数据包的缓冲区大小,单位为字节。示例:tcpdump -B 4096
-
-C <file_size>:设置保存数据包的文件大小上限,单位为MB,达到上限后会自动创建新的文件进行保存。
示例:tcpdump -C 100 -
-E algo:secret:指定用于解密数据包的算法和密钥。
示例:tcpdump -E aes256:secretkey
- -F :从指定的文件中读取过滤规则。
示例:tcpdump -F filter.txt
- -G :设置保存数据包的文件的时间间隔,单位为秒,达到时间间隔后会自动创建新的文件进行保存。
示例:tcpdump -G 60
- -j :设置时间戳类型。
示例:tcpdump -j host
- -M :设置使用指定的密钥对数据包进行解密处理,设置密钥,将数据包标记为具有指定密钥的特定流。。
示例:tcpdump -M secretkey
- –number:在输出结果中显示每个数据包的序号。
示例:tcpdump --number
- -Q <in|out|inout>:设置过滤规则的方向,只匹配输入、输出或输入输出都匹配的数据包。
示例:tcpdump -Q in
- –time-stamp-precision :设置时间戳的精度。
示例:tcpdump --time-stamp-precision nano
- –immediate-mode:立即将数据包写入文件,而不进行缓冲。
示例:tcpdump --immediate-mode
- -T :设置输出的格式类型。指定输出文件的类型,如ps、psml、psml+xml、text、csv等。
示例:tcpdump -T json
- –version:显示tcpdump的版本信息。
示例:tcpdump --version
- -V :从指定的文件中读取要解析的数据包。
示例:tcpdump -V packets.pcap
- -W :设置保存数据包的文件的数量上限,达到上限后会自动删除最旧的文件。
示例:tcpdump -W 10
- -y :设置数据链路层类型。
示例:tcpdump -y ethernet
- -z :在每次文件切换时切换到下一个输出文件之前执行指定的命令。
示例:tcpdump -z "gzip -9"
- -Z :以指定的用户身份运行tcpdump。
示例:tcpdump -Z root
4、示例:
-
抓取特定网络接口上的数据包,并显示其详细信息:
tcpdump -i eth0
-
仅捕获指定源IP地址的数据包:
tcpdump src host 192.168.0.1
-
捕获指定目的端口号的数据包:
tcpdump dst port 80
-
将抓取到的数据包保存到文件中:
tcpdump -w capture.pcap
-
从文件中读取数据包并进行分析:
tcpdump -r capture.pcap
-
监听eth0网卡,捕获前10个数据包的详细信息:
```
tcpdump -i eth0 -c 10 -v
```
- 捕获源IP地址为192.168.1.10并且目标端口为80的HTTP数据包:
```
tcpdump src 192.168.1.10 and dst port 80 and http
```
8、tcpdump怎么统计pcap文件中有多少个协议类型为17的数据包?
tcpdump -r <pcap文件路径> 'ip[9] = 17' | wc -l
9、使用tcpdump命令将.cap文件转换为.pcap文件?
tcpdump -r input.cap -w output.pcap
10、使用tcpdump批量将.cap文件转换为.pcap文件:
for file in *.cap; do
tcpdump -r "$file" -w "${file%.cap}.pcap"
done
您可以查看tcpdump的官方文档或使用tcpdump --help
命令获取更详细的信息。
请注意,在使用tcpdump时需要具有适当的权限,通常需要以root用户或具有特定权限的用户身份运行。