1、tcpdump是一个用于截取网络分组,并输出分组内容的工具,凭借强大的功能和灵活的截取策略,使其成为UNIX系统下用于网络分析和问题排查的首选工具;
默认启动
tcpdump -vv
过滤主机
tcpdump -i eth1 host 192.168.1.1
tcpdump -i eth1 src 192.168.1.1
tcpdump -i eth1 dst 192.168.1.1
1、抓取所有经过eht1目的地址或者原地址是192.168.1.1
过滤端口
tcpdump -i eth1 port 25
tcpdump -i eth1 src port 25
tcpdump -i eth1 dst port 25
网络过滤
tcpdump -i eth1 net 192.168
tcpdump -i eth1 src net 192.168
tcpdump -i eth1 dst net 192.168
协议过滤
tcpdump -i eth1 arp
tcpdump -i eth1 ip
tcpdump -i eth1 tcp
tcpdump -i eth1 udp
tcpdump -i eth1 icmp
常用表达式
非:!Or "not"(去掉双引号)
且:&& "and"(去掉双引号)
或:|| or “or”
高级过滤:
首先了解如何了解如何从包头过滤信息
proto[x:y] :过滤从x字节开始的y字节数
proto[x:y]&z = 0 :proto[x:y]和z的与操作为0
proto[x:y]&z != 0 :proto[x:y]和z的与操作不为0
proto[x:y]&z = z :proto[x:y]和z的与操作为z
proto[x:y] = z :proto[x:y]等于z
操作符:>, < , >=, <= ,== ,!=
3、tcpdump和wireshark抓包
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.pcap
Tcpdump: ip icmp arp rarp 和tcp、udp、 icmp 这些选项等都要放到第一个参数的位置,用来过滤数据报的类型
-t: 不显示时间戳
4、使用tcpdump 抓http包
tcpdump -XvvennSs -I eth0 tcp[20:2]=0x4745 or tcp[20;2] = 0x4854
0x4745 为“GET”前两个字母“GE”,0x4854为“HTTP”前两个字母“HT”;tcpdump对截取的数据并没有进行彻底解码,数据包内的大部分内容是使用十六进制的形式直接打印输出。显然这不利于网络故障,通常的解决办法是先使用带-w参数的tcpdump截取数据并保存到文件中,然后使用其他程序(如wireshark)进行进行解码分析。以避免捕获的数据包填满整个硬盘;
基本上tcpdump 总的输出格式为: 系统时间 来源主机 端口 > 目标主机 端口 数据包参数