tcpdump是linux中优秀的抓包工具,windows中用Wireshark 安装: yum install -y tcpdump 监听eth0网卡HTTP 80端口的request和response: tcpdump -i eth0 -A -s 0 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)' ![QQ截图20180918230818.png](http://www.xwblog.club/usr/uploads/2018/09/2888559018.png) 监听eth0网卡HTTP 80端口的request(不包括response),指定来源域名"example.com",也可以指定IP"192.168.3.132" ![QQ截图20180918231004.png](http://www.xwblog.club/usr/uploads/2018/09/2882610009.png) tcpdump -i eth0 -A -s 0 'src 192.168.3.132 and tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)' 监听本机发送至本机的HTTP 80端口的request和response tcpdump -i lo -A -s 0 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)' 测试本机使用curl -i 命令 监听eth0网卡HTTP 80端口的request和response,结果另存为cap文件 tcpdump -i eth0 -A -s 0 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)' -w ./dump.cap cap 在Wireshark tcpdump 中都能查看 抓取mysql执行的sql语句 tcpdump -i eth0 -s 0 -l -w - dst port 3306 | strings 抓取mysql执行的sql语句 tcpdump -n -nn -tttt -i eth0 -s 65535 'port 3306' -w 2018918mysql.cap 关于tcpdump的用处用法还有很多,参数有(参考http://man.linuxde.net/tcpdump): -a:尝试将网络和广播地址转换成名称; -c<数据包数目>:收到指定的数据包数目后,就停止进行倾倒操作; -d:把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出; -dd:把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出; -ddd:把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出; -e:在每列倾倒资料上显示连接层级的文件头; -f:用数字显示网际网络地址; -F<表达文件>:指定内含表达方式的文件; -i<网络界面>:使用指定的网络截面送出数据包; -l:使用标准输出列的缓冲区; -n:不把主机的网络地址转换成名字; -N:不列出域名; -O:不将数据包编码最佳化; -p:不让网络界面进入混杂模式; -q :快速输出,仅列出少数的传输协议信息; -r<数据包文件>:从指定的文件读取数据包数据; -s<数据包大小>:设置每个数据包的大小; -S:用绝对而非相对数值列出TCP关联数; -t:在每列倾倒资料上不显示时间戳记; -tt: 在每列倾倒资料上显示未经格式化的时间戳记; -T<数据包类型>:强制将表达方式所指定的数据包转译成设置的数据包类型; -v:详细显示指令执行过程; -vv:更详细显示指令执行过程; -x:用十六进制字码列出数据包资料; -w<数据包文件>:把数据包数据写入指定的文件。 常用的(-i -s -n -n -tt)等