tcpdump——数据包截获和分析工具
tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。
#截获所有192.168.131.128主机收到的和发出的所有的分组
# tcpdump host 192.168.131.128
#截获主机192.168.131.130和主机192.168.131.128的通信
# tcpdump host 192.168.131.130 and 192.168.131.128
# tcpdump -n -i eth1 host 192.168.131.130 and host 192.168.131.128
#获取主机192.168.131.130除了和主机192.168.131.128之外所有主机通信的ip包
# tcpdump host 192.168.131.130 and ! 192.168.131.128
#获取主机192.168.131.128接收或发出的ssh包,并且不转换主机名
# tcpdump -nn -n src host 192.168.131.128 and port 22 and tcp
#获取主机192.168.131.130接收或发出的ssh包,并把mac地址也一同显示
# tcpdump -e src host 192.168.131.130 and port 22 and tcp -n -nn
#过滤的是源主机为192.168.131.130与目的网络为192.168.131.0的报头
# tcpdump src host 192.168.131.130 and dst net 192.168.131.0/24
#过滤源主机物理地址为XXX的报头
# tcpdump ether src 00:0C:29:A1:47:12
#过滤源主机192.168.131.130和目的端口不是telnet的报头,并导入到t.txt文件中
# tcpdump src host 192.168.131.130 and dst port not telnet -l >t.txt
#监听来自eth1适配卡且通信协议为port 22,目标来源为192.168.131.128的数据包
# tcpdump -i eth1 -nn port 22 and src host 192.168.131.128
#抓取访问eth1适配卡且访问端口为tcp 9080
# tcpdump -i eth1 dst 192.168.131.130 and tcp port 9080
#抓取与主机192.168.131.130或着与主机192.168.131.128通信报文,并且显示在控制台上
# tcpdump -X -s 1024 -i eth1 host 192.168.131.130 or 192.168.131.128 and host 192.168.0.112
#截取全部进入服务器的数据
# tcpdump -n -i eth1 dst 192.168.131.130
##tcpdump 与wireshark
Wireshark(以前是ethereal)是Windows下非常简单易用的抓包工具。但在Linux下很难找到一个好用的图形化抓包工具。还好有Tcpdump。我们可以用Tcpdump + Wireshark 的完美组合实现:在 Linux 里抓包,然后在Windows 里分析包。
tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap
1、tcp: ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型
2、-i eth1 : 只抓经过接口eth1的包
3、-t : 不显示时间戳
4、-s 0 : 抓取数据包时默认抓取长度为68字节。加上-S 0 后可以抓到完整的数据包
5、-c 100 : 只抓取100个数据包
6、dst port ! 22 : 不抓取目标端口是22的数据包
7、src net 192.168.1.0/24 : 数据包的源网络地址为192.168.1.0/24
8、-w ./target.cap : 保存成cap文件,方便用wireshark分析