tcpdump作为linux中强大的网络数据采集分析工具,它支持针对网络层、协议、主机(源和目的)、端口、mac地址的过滤,并支持and、or、not过滤数据包。我们可以用tcpdump+wireshark的组合实现:在Linux里抓包,然后在Windows 里分析包。
一、tcpdump参数介绍
(1)tcp: ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型
(2)-i eth1 : 只抓经过接口eth1的包
(3)-t : 不显示时间戳
(4)-tt : 显示时间戳
(5)-s 0 : 抓取数据包时默认抓取长度为68字节。加上-S 0 后可以抓到完整的数据包
(6)-c 100 : 只抓取100个数据包
(7)dst port ! 22 : 不抓取目标端口是22的数据包
(8)src net 192.168.1.0/24 : 数据包的源网络地址为192.168.1.0/24
(9)-w ./target.cap : 保存成cap文件,方便用ethereal(即wireshark)分析
二、数据包的抓取
1、 针对接口和主机名(hostname)或IP过滤数据包
-i:指定接口,不指定一般默认eth0
host:指定主机或Ip
src host:指定源主机或Ip
dst host:指定目的主机或Ip
net:指定网段
例1:抓取源地址是192.168.50.144上eth1接口上的包
tcpdump -i eth1 src host 192.168.50.144
例2:抓取A 与B或者与C之间通信的数据包
tcpdump host A and \(B or C\)
例3:抓取A与任何主机的数据但不包括B
tcpdump host A not B
例4:过滤源主机为192.168.50.144与目的网络为192.168.5.0的数据包
tcpdump src host 192.168.50.144 and dst net 192.168.50.0/24
例5:过滤出源物理地址00:19:21:1D:75:E6和目的物理地址00:19:21:1D:75:E7的数据包
tcpdump ether src 00:19:21:1D:75:E6 and dst 00:19:21:1D:75:E7
2、 针对协议和端口过滤数据包
tcp、udp、icmp、arp、rarp、等
例1:过滤出本机tcp协议数据包
tcpdump tcp
例2:过滤出目的IP:192.168.50.144的tcp协议数据包
tcpdump tcp and host 192.168.50.144
例3:过滤出目的IP:192.168.50.144的80端口数据包
tcpdump tcp port 80 and dst host 192.168.50.144
例4:对本机的udp 123 端口进行监视:(123 为ntp的服务端口)
tcpdump udp port 123