文档简介:

     摘录了一些常用的比较复杂句式的tcpdum命令,过于简单的如基于地址、端口抓包就不收录了


1、抓取所有经过eth1,目的地址是192.168.1.254或192.168.1.200端口是80的TCP数据

     tcpdump -i eth1 '((tcp) and (port 80) and ((dst host 192.168.1.254) or (dst host 192.168.1.200)))'


2、抓取所有经过eth1,目标MAC地址是00:01:02:03:04:05的ICMP数据

     tcpdump -i eth1 '((icmp) and ((ether dst host 00:01:02:03:04:05)))'


3、抓取所有经过eth1,目的网络是192.168,但目的主机不是192.168.1.200的TCP数据

     tcpdump -i eth1 '((tcp) and ((dst net 192.168) and (not dst host 192.168.1.200)))'


4、筛选出设置了ip选项的报文

     tcpdump -i eth1 'ip[0] > 69'


5、匹配MF,分片包

     tcpdump -i eth1 'ip[6] = 32'


6、匹配MF,不分片包

     tcpdump -i eth1 'ip[6] = 64'

测试分片:ping -M want -s 3000 192.168.1.1


7、抓大于某字节的报文

     tcpdump -i eth1 'ip[2:2] > 600'


8、只抓syn包

     tcpdump -i eth1 'tcp[tcpflags] = tcp-syn'


9、抓SYN, ACK

     tcpdump -i eth1 'tcp[tcpflags] & tcp-syn != 0 and tcp[tcpflags] & tcp-ack != 0'

备注:

TCP标记值:tcp-fin, tcp-syn, tcp-rst, tcp-push, tcp-push, tcp-ack, tcp-urg


10、抓SMTP数据

     tcpdump -i eth1 '((port 25) and (tcp[(tcp[12]>>2):4] = 0x4d41494c))'


11、抓HTTP get数据

     tcpdump -i eth1 'tcp[(tcp[12]>>2):4] = 0x47455420'


12、抓SSH的返回数据

     tcpdump -i eth1 'tcp[(tcp[12]>>2):4] = 0x5353482D'


13、抓DNS请求数据

     tcpdump -i eth1 udp dst port 53


持续更新中...

2017.8.1 以上命令摘录自潜水大叔的wiki,链接如下:

http://linuxwiki.github.io/NetTools/tcpdump.html