平时抓包用的最多的是wireshark和httpwatch,
如果想在linux服务器上抓包,比较常用tcpdump,tcpflow命令,tcpdump对http包的抓取支持不好,tcpflow的http的抓取表现不错
tcpdump
tcpdump的命令格式
tcpdump [-i 网卡] -nnAX ‘表达式’ 各参数说明如下:
-i:interface 监听的网卡。
-nn:表示以ip和port的方式显示来源主机和目的主机,而不是用主机名和服务。
-A:以ascii的方式显示数据包,抓取web数据时很有用。
-X:数据包将会以16进制和ascii的方式显示。 表达式:表达式有很多种,常见的有:host 主机;port 端口;src host 发包主机;dst host 收包主机。
监听网卡eth0
tcpdump -i eth0
监听指定协议的数据
tcpdump -i eth0 -nn ‘icmp’
这个是用来监听icmp协议的数据,就是ping命令使用的协议。
类似的,如果要监听tcp或者是udp协议,只需要修改上例的icmp就可以了
监听指定的主机
tcpdump -i eth0 -nn ‘host 192.168.43.59’
这样的话,192.168.1.231这台主机接收到的包和发送的包都会被抓取。
tcpdump -i eth0 -nn ‘src host 192.168.43.59’
这样只有192.168.43.59这台主机发送的包才会被抓取。
tcpdump -i eth0 -nn ‘dst host 192.168.43.59’
这样只有192.168.43.59这台主机接收到的包才会被抓取。
监听指定端口
tcpdump -i eth0 -nnA ‘port 80’
用来监听主机的80端口收到和发送的所有数据包。
监听指定主机和端口
tcpdump -i eth0 -nnA ‘port 80 and src host 192.168.43.59’
多个条件可以用and,or连接。
上例表示监听192.168.43.59主机通过80端口发送的数据包。
tcpflow
一般情况操作系统不会自带tcpflow,下载一个
tcpflow下载
安装啥的就不说了,主要看一下抓取包的内容
tcpflow -i eth0 host ‘192.168.17.39’
他会生成很多文件:
打开看看:
是不是和浏览器查看的差不多!