tcpdump
-a:尝试将网络和广播地址转换成名称;
-c<数据包数目>:收到指定的数据包数目后,就停止进行倾倒操作;
-d:把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出;
-dd:把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出;
-ddd:把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出;
-e:在每列倾倒资料上显示连接层级的文件头;
-f:用数字显示网际网络地址;
-F<表达文件>:指定内含表达方式的文件;
-i<网络界面>:使用指定的网络截面送出数据包;
-l:使用标准输出列的缓冲区;
-n:不把主机的网络地址转换成名字;
-N:不列出域名;
-O:不将数据包编码最佳化;
-p:不让网络界面进入混杂模式;
-q :快速输出,仅列出少数的传输协议信息;
-r<数据包文件>:从指定的文件读取数据包数据;
-s<数据包大小>:设置每个数据包的大小;
-S:用绝对而非相对数值列出TCP关联数;
-t:在每列倾倒资料上不显示时间戳记;
-tt: 在每列倾倒资料上显示未经格式化的时间戳记;
-T<数据包类型>:强制将表达方式所指定的数据包转译成设置的数据包类型;
-v:详细显示指令执行过程;
-vv:更详细显示指令执行过程;
-x:用十六进制字码列出数据包资料;
-w<数据包文件>:把数据包数据写入指定的文件。
用法
1:直接启动 tcpdump 将监视第一个网络接口所有流过的数据包
tcpdump
2:监控某一网络接口的数据包
tcpdump -i enp0s3
3:过滤主机
3.1 抓取所有经过enp0s3,目的或源地址是 192.168.1.101 的网络数据
tcpdump -i enp0s3 host 192.168.1.101
3.2 指定源地址
tcpdump -i enp0s3 src host 192.168.1.101
3.3 指定目的地址
tcpdump -i enp0s3 dst host 192.168.1.101
3.4 截获主机192.168.1.101 和主机192.168.1.102 或192.168.1.103的通信
tcpdump -i enp0s3 host 192.168.1.101 and \ or 192.168.1.103 \)
3.5 如果想要获取主机192.168.1.101除了和主机192.168.1.102之外所有主机通信的ip包,使用命令:
tcpdump ip host 192.168.1.101 and !192.168.1.102
4:过滤端口
4.1 抓取所有经过 enp0s3,目的或源端口是22的网络数据
tcpdump -i enp0s3 port 22
4.2 指定源端口
1 | tcpdump -i enp0s3 src port 22 |
4.3 指定目的端口
tcpdump -i enp0s3 dst port 22
5:网络过滤
tcpdump -i enp0s3 net 192.168
tcpdump -i enp0s3 src net 192.168
tcpdump -i enp0s3 dst net 192.168
6:协议过滤
tcpdump -i enp0s3 arp
tcpdump -i enp0s3 ip
tcpdump -i enp0s3 tcp
tcpdump -i enp0s3 udp
tcpdump -i enp0s3 icmp
7:常用表达式
非 : ! or "not" (without the quotes)
且 : && or "and"
或 : || or "or"
7.1: 抓取目的地址是192.168.1.254或192.168.1.200端口是80的TCP数据
tcpdump '((tcp) and (port 80) and ((dst host 192.168.1.254) or (dst host 192.168.1.200)))'
当然上也可以像之前的加上指定网卡 -i enp0s3
tcpdump -i enp0s3 '((tcp) and (port 80) and ((dst host 192.168.1.254) or (dst host 192.168.1.200)))'
7.2: 抓取目标MAC地址是00:01:02:03:04:05的ICMP数据
tcpdump '((icmp) and ((ether dst host 00:01:02:03:04:05)))'
可以加上具体网卡
7.3:抓取目的网络是192.168,但目的主机不是192.168.1.200的TCP数据
tcpdump '((tcp) and ((dst net 192.168) and (not dst host 192.168.1.200)))'