tcpdump基本使用

tcpdump出来的数据为原始数据,tcp的就是二进制,http的内容通常也是gzip压缩的,所以,通过是通过tcpdump进行抓包,然后再使用wireshark图形工具怎么分析。

基本命令使用为:

tcpdump -i eth0 -s 0 -n -w /tmp/tcpdump.cap

-s 0 表示不限制包大小,默认是只抓取包的前68个字节,-n 表示不把主机的网络地址转换成名字,-w 表示结果输出到目标文件。

抓取GET请求:

tcpdump -i eth0 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420' -n -s 0 -w /tmp/test.cap

抓取POST请求:

tcpdump -i eth0 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354' -n -s 0 -w /tmp/test.cap

一个tcp包的结构如下:

其中IP表头结构:

首部长度以32bit为单位,所以IP表头长度计算公式为:(ip[0] & 0xf) << 2

TCP表头结构:

因为首部长度是以32bit为单位的,所以首部长度即为:((tcp[12] & 0xf0) >> 4) << 2,而0x47455420为'GET ',0x504f5354为'POST',所以GET和POST的抓包命令就如上那样了。

如下命令表示,抓取来源或者目标端口为80,IPv4结构,且非SYN,FIN以及ACK-only等不含数据的数据包:

tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'

 

发表于 2017年06月15日 14:38   评论:0   阅读:2121  



回到顶部

首页 | 关于我 | 关于本站 | 站内留言 | rss
python logo   django logo   tornado logo