在分析问题时,对抓包有个诉求:只抓取TCP建链包和HTTP GET请求包及HTTP响应包,于是有了下面这条命令:
tcpdump -i 网卡名 ‘((tcp[tcpflags] & tcp-syn != 0) or (tcp[(tcp[12]>>2):4]=0x47455420) or (tcp[(tcp[12]>>2):4]=0x48545450))’ -nnAl -w xxxx.cap
对这条命令的解释如下:
表示只抓取带syn标志的报文,包括三次建链中的syn和syn+ack;这个比较好理解,不过多解释。当然通过该方法还可抓取其他TCP标志的包。如下:
tcp[tcpflags] == tcp-rst RST标记
tcp[tcpflags] == tcp-urg URG 标记
tcp[tcpflags] == tcp-ack ACK标记
tcp[tcpflags] == tcp-psh PUSH标记
tcp[tcpflags] == tcp-fin FIN标记