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