1. 简介
tcpdump是一个用于截取网络分组,并输出分组内容的工具。根据使用者的定义对网络上的数据包进行截获。
tcpdump针对网络网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句辅助去掉无用的信息。
其官网地址为:tcpdump官网,在官网中存在完整的英文说明文档
2. 常用tcpdump语法
抓包选项-A 以ASCII格式打印出所有分组,并将链路层的头最小化
-c 仅抓取指定数量的分组
-i 指定监听的网络接口
-n 对地址以数字方式显示,否则显示为主机名
-nn 除了-n的作用外,还把端口显示为数值,否则显示端口服务器
-P 指定要抓取的包是流入还是流出的包。可以给定的值为"in"、"out"、"inout"
-XX 输出包的头部数据,会以16进制和ASCII两种方式同时输出,更详细
-v 当分析和打印的时候,产生详细的输出
-w 将抓包数据输出到文件中
-r 从给定的数据包文件中读取数据
2.1 tcpdump表达式
表达式用于筛选输出哪些类型的数据包,如果没有给定表达式,所有的数据包都将输出,否则输出表达式为true的包。在表达式中出现的shell元字符建议使用单引号包围。
一个基本的表达式单元格式为:tcpdump [options] [not] proto dir type
1. proto:通过给定协议限定匹配的数据包类型 |
2.2 tcpdump示例
监视指定网络接口的数据包
# tcpdump -i eth1
监视指定主机的数据包
# tcpdump host 1.1.1.1
# tcpdump -i eth1 src host 1.1.1.1
# tcpdump -i eth1 dst host 1.1.1.1
抓取主机为1.1.1.1的网络数据
指定源地址,1.1.1.1
指定目的地址,1.1.1.1
监视指定端口
# tcpdump -i eth1 port 25
# tcpdump -i eth1 src port 25
# tcpdump -i eth1 dst port 25网络过滤
# tcpdump -i eth1 net 1.1
# tcpdump -i eth1 src net 1.1
# tcpdump -i eth1 dst net 1.1监视指定协议
# tcpdump -i eth1 arp
# tcpdump -i eth1 ip
# tcpdump -i eth1 tcp
# tcpdump -i eth1 udp
# tcpdump -i eth1 icmp示例语句
抓取经过eth1接口,目的地址为1.1.1.1或1.1.1.2端口是80的tcp数据
# tcpdump -i eth1 '((tcp) and (port 80) and ((dst host 1.1.1.1) or (dst host 1.1.1.2)))'