tcpdump抓包http应用
tcpdump常用参数列表
sudo tcpdump -i eth1 -s0 -v -n -l -A host 124.64.123.235 and port 80
- -i 表示哪个网卡的包
- -s xxx 截取报文字节数 xxx=0表示全部
- -v 详细输出,还有 -vv -vvv
- -n 不解析域名,直接显示IP,意味着输出的速度更快
- -l 行缓冲,输出更快
- -A 输出ASCII码报文
- host xxx 输出host是xxx的报文,包括src和dst,可以加上src或者dst修饰只看来源和目的ip
- port xx 输出端口是xx的报文。利用and连接
tcpdump 抓http包
GET请求
- GET 十六进制 -> 0x474554
- 空格 十六进制 -> 0x20
抓目标端口是80的GET请求
sudo tcpdump -i eth1 -s0 -A 'tcp dst port 80 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420'
POST请求
- POST 十六进制 -> 0x504f5354
抓目标端口是80的POST请求
sudo tcpdump -i eth1 -s0 -A 'tcp dst port 80 and (tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354)'
http请求
- dst host
- dst net
抓端口是80,目标主机的网段是61.135. 的http请求
sudo tcpdump -A -s0 '(tcp port 80) and (dst net 61.135) and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
举几个栗子
抓取从10.12.1.1发往本机80端口的包,或者从本机80端口发往10.12.1.2目的ip的包
sudo tcpdump '(src host 10.12.1.1 and dst port 80) or (dst host 10.12.1.2 and src port 80)'
抓取请求过来的HOST都是啥
sudo tcpdump -s0 -v -n -l |grep -i 'HOST:'
抓取过来的GET请求,只获取path、参数等
sudo tcpdump -s0 -v -n -l |grep 'GET '